github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/ecrpublic/repositoryPolicy.go (about) 1 // Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. 2 // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** 3 4 package ecrpublic 5 6 import ( 7 "context" 8 "reflect" 9 10 "errors" 11 "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" 12 "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 13 ) 14 15 // Provides an Elastic Container Registry Public Repository Policy. 16 // 17 // Note that currently only one policy may be applied to a repository. 18 // 19 // > **NOTE:** This resource can only be used in the `us-east-1` region. 20 // 21 // ## Example Usage 22 // 23 // <!--Start PulumiCodeChooser --> 24 // ```go 25 // package main 26 // 27 // import ( 28 // 29 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecrpublic" 30 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" 31 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 32 // 33 // ) 34 // 35 // func main() { 36 // pulumi.Run(func(ctx *pulumi.Context) error { 37 // exampleRepository, err := ecrpublic.NewRepository(ctx, "example", &ecrpublic.RepositoryArgs{ 38 // RepositoryName: pulumi.String("example"), 39 // }) 40 // if err != nil { 41 // return err 42 // } 43 // example, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ 44 // Statements: []iam.GetPolicyDocumentStatement{ 45 // { 46 // Sid: pulumi.StringRef("new policy"), 47 // Effect: pulumi.StringRef("Allow"), 48 // Principals: []iam.GetPolicyDocumentStatementPrincipal{ 49 // { 50 // Type: "AWS", 51 // Identifiers: []string{ 52 // "123456789012", 53 // }, 54 // }, 55 // }, 56 // Actions: []string{ 57 // "ecr:GetDownloadUrlForLayer", 58 // "ecr:BatchGetImage", 59 // "ecr:BatchCheckLayerAvailability", 60 // "ecr:PutImage", 61 // "ecr:InitiateLayerUpload", 62 // "ecr:UploadLayerPart", 63 // "ecr:CompleteLayerUpload", 64 // "ecr:DescribeRepositories", 65 // "ecr:GetRepositoryPolicy", 66 // "ecr:ListImages", 67 // "ecr:DeleteRepository", 68 // "ecr:BatchDeleteImage", 69 // "ecr:SetRepositoryPolicy", 70 // "ecr:DeleteRepositoryPolicy", 71 // }, 72 // }, 73 // }, 74 // }, nil) 75 // if err != nil { 76 // return err 77 // } 78 // _, err = ecrpublic.NewRepositoryPolicy(ctx, "example", &ecrpublic.RepositoryPolicyArgs{ 79 // RepositoryName: exampleRepository.RepositoryName, 80 // Policy: pulumi.String(example.Json), 81 // }) 82 // if err != nil { 83 // return err 84 // } 85 // return nil 86 // }) 87 // } 88 // 89 // ``` 90 // <!--End PulumiCodeChooser --> 91 // 92 // ## Import 93 // 94 // Using `pulumi import`, import ECR Public Repository Policy using the repository name. For example: 95 // 96 // ```sh 97 // $ pulumi import aws:ecrpublic/repositoryPolicy:RepositoryPolicy example example 98 // ``` 99 type RepositoryPolicy struct { 100 pulumi.CustomResourceState 101 102 // The policy document. This is a JSON formatted string. 103 Policy pulumi.StringOutput `pulumi:"policy"` 104 // The registry ID where the repository was created. 105 RegistryId pulumi.StringOutput `pulumi:"registryId"` 106 // Name of the repository to apply the policy. 107 RepositoryName pulumi.StringOutput `pulumi:"repositoryName"` 108 } 109 110 // NewRepositoryPolicy registers a new resource with the given unique name, arguments, and options. 111 func NewRepositoryPolicy(ctx *pulumi.Context, 112 name string, args *RepositoryPolicyArgs, opts ...pulumi.ResourceOption) (*RepositoryPolicy, error) { 113 if args == nil { 114 return nil, errors.New("missing one or more required arguments") 115 } 116 117 if args.Policy == nil { 118 return nil, errors.New("invalid value for required argument 'Policy'") 119 } 120 if args.RepositoryName == nil { 121 return nil, errors.New("invalid value for required argument 'RepositoryName'") 122 } 123 opts = internal.PkgResourceDefaultOpts(opts) 124 var resource RepositoryPolicy 125 err := ctx.RegisterResource("aws:ecrpublic/repositoryPolicy:RepositoryPolicy", name, args, &resource, opts...) 126 if err != nil { 127 return nil, err 128 } 129 return &resource, nil 130 } 131 132 // GetRepositoryPolicy gets an existing RepositoryPolicy resource's state with the given name, ID, and optional 133 // state properties that are used to uniquely qualify the lookup (nil if not required). 134 func GetRepositoryPolicy(ctx *pulumi.Context, 135 name string, id pulumi.IDInput, state *RepositoryPolicyState, opts ...pulumi.ResourceOption) (*RepositoryPolicy, error) { 136 var resource RepositoryPolicy 137 err := ctx.ReadResource("aws:ecrpublic/repositoryPolicy:RepositoryPolicy", name, id, state, &resource, opts...) 138 if err != nil { 139 return nil, err 140 } 141 return &resource, nil 142 } 143 144 // Input properties used for looking up and filtering RepositoryPolicy resources. 145 type repositoryPolicyState struct { 146 // The policy document. This is a JSON formatted string. 147 Policy *string `pulumi:"policy"` 148 // The registry ID where the repository was created. 149 RegistryId *string `pulumi:"registryId"` 150 // Name of the repository to apply the policy. 151 RepositoryName *string `pulumi:"repositoryName"` 152 } 153 154 type RepositoryPolicyState struct { 155 // The policy document. This is a JSON formatted string. 156 Policy pulumi.StringPtrInput 157 // The registry ID where the repository was created. 158 RegistryId pulumi.StringPtrInput 159 // Name of the repository to apply the policy. 160 RepositoryName pulumi.StringPtrInput 161 } 162 163 func (RepositoryPolicyState) ElementType() reflect.Type { 164 return reflect.TypeOf((*repositoryPolicyState)(nil)).Elem() 165 } 166 167 type repositoryPolicyArgs struct { 168 // The policy document. This is a JSON formatted string. 169 Policy string `pulumi:"policy"` 170 // Name of the repository to apply the policy. 171 RepositoryName string `pulumi:"repositoryName"` 172 } 173 174 // The set of arguments for constructing a RepositoryPolicy resource. 175 type RepositoryPolicyArgs struct { 176 // The policy document. This is a JSON formatted string. 177 Policy pulumi.StringInput 178 // Name of the repository to apply the policy. 179 RepositoryName pulumi.StringInput 180 } 181 182 func (RepositoryPolicyArgs) ElementType() reflect.Type { 183 return reflect.TypeOf((*repositoryPolicyArgs)(nil)).Elem() 184 } 185 186 type RepositoryPolicyInput interface { 187 pulumi.Input 188 189 ToRepositoryPolicyOutput() RepositoryPolicyOutput 190 ToRepositoryPolicyOutputWithContext(ctx context.Context) RepositoryPolicyOutput 191 } 192 193 func (*RepositoryPolicy) ElementType() reflect.Type { 194 return reflect.TypeOf((**RepositoryPolicy)(nil)).Elem() 195 } 196 197 func (i *RepositoryPolicy) ToRepositoryPolicyOutput() RepositoryPolicyOutput { 198 return i.ToRepositoryPolicyOutputWithContext(context.Background()) 199 } 200 201 func (i *RepositoryPolicy) ToRepositoryPolicyOutputWithContext(ctx context.Context) RepositoryPolicyOutput { 202 return pulumi.ToOutputWithContext(ctx, i).(RepositoryPolicyOutput) 203 } 204 205 // RepositoryPolicyArrayInput is an input type that accepts RepositoryPolicyArray and RepositoryPolicyArrayOutput values. 206 // You can construct a concrete instance of `RepositoryPolicyArrayInput` via: 207 // 208 // RepositoryPolicyArray{ RepositoryPolicyArgs{...} } 209 type RepositoryPolicyArrayInput interface { 210 pulumi.Input 211 212 ToRepositoryPolicyArrayOutput() RepositoryPolicyArrayOutput 213 ToRepositoryPolicyArrayOutputWithContext(context.Context) RepositoryPolicyArrayOutput 214 } 215 216 type RepositoryPolicyArray []RepositoryPolicyInput 217 218 func (RepositoryPolicyArray) ElementType() reflect.Type { 219 return reflect.TypeOf((*[]*RepositoryPolicy)(nil)).Elem() 220 } 221 222 func (i RepositoryPolicyArray) ToRepositoryPolicyArrayOutput() RepositoryPolicyArrayOutput { 223 return i.ToRepositoryPolicyArrayOutputWithContext(context.Background()) 224 } 225 226 func (i RepositoryPolicyArray) ToRepositoryPolicyArrayOutputWithContext(ctx context.Context) RepositoryPolicyArrayOutput { 227 return pulumi.ToOutputWithContext(ctx, i).(RepositoryPolicyArrayOutput) 228 } 229 230 // RepositoryPolicyMapInput is an input type that accepts RepositoryPolicyMap and RepositoryPolicyMapOutput values. 231 // You can construct a concrete instance of `RepositoryPolicyMapInput` via: 232 // 233 // RepositoryPolicyMap{ "key": RepositoryPolicyArgs{...} } 234 type RepositoryPolicyMapInput interface { 235 pulumi.Input 236 237 ToRepositoryPolicyMapOutput() RepositoryPolicyMapOutput 238 ToRepositoryPolicyMapOutputWithContext(context.Context) RepositoryPolicyMapOutput 239 } 240 241 type RepositoryPolicyMap map[string]RepositoryPolicyInput 242 243 func (RepositoryPolicyMap) ElementType() reflect.Type { 244 return reflect.TypeOf((*map[string]*RepositoryPolicy)(nil)).Elem() 245 } 246 247 func (i RepositoryPolicyMap) ToRepositoryPolicyMapOutput() RepositoryPolicyMapOutput { 248 return i.ToRepositoryPolicyMapOutputWithContext(context.Background()) 249 } 250 251 func (i RepositoryPolicyMap) ToRepositoryPolicyMapOutputWithContext(ctx context.Context) RepositoryPolicyMapOutput { 252 return pulumi.ToOutputWithContext(ctx, i).(RepositoryPolicyMapOutput) 253 } 254 255 type RepositoryPolicyOutput struct{ *pulumi.OutputState } 256 257 func (RepositoryPolicyOutput) ElementType() reflect.Type { 258 return reflect.TypeOf((**RepositoryPolicy)(nil)).Elem() 259 } 260 261 func (o RepositoryPolicyOutput) ToRepositoryPolicyOutput() RepositoryPolicyOutput { 262 return o 263 } 264 265 func (o RepositoryPolicyOutput) ToRepositoryPolicyOutputWithContext(ctx context.Context) RepositoryPolicyOutput { 266 return o 267 } 268 269 // The policy document. This is a JSON formatted string. 270 func (o RepositoryPolicyOutput) Policy() pulumi.StringOutput { 271 return o.ApplyT(func(v *RepositoryPolicy) pulumi.StringOutput { return v.Policy }).(pulumi.StringOutput) 272 } 273 274 // The registry ID where the repository was created. 275 func (o RepositoryPolicyOutput) RegistryId() pulumi.StringOutput { 276 return o.ApplyT(func(v *RepositoryPolicy) pulumi.StringOutput { return v.RegistryId }).(pulumi.StringOutput) 277 } 278 279 // Name of the repository to apply the policy. 280 func (o RepositoryPolicyOutput) RepositoryName() pulumi.StringOutput { 281 return o.ApplyT(func(v *RepositoryPolicy) pulumi.StringOutput { return v.RepositoryName }).(pulumi.StringOutput) 282 } 283 284 type RepositoryPolicyArrayOutput struct{ *pulumi.OutputState } 285 286 func (RepositoryPolicyArrayOutput) ElementType() reflect.Type { 287 return reflect.TypeOf((*[]*RepositoryPolicy)(nil)).Elem() 288 } 289 290 func (o RepositoryPolicyArrayOutput) ToRepositoryPolicyArrayOutput() RepositoryPolicyArrayOutput { 291 return o 292 } 293 294 func (o RepositoryPolicyArrayOutput) ToRepositoryPolicyArrayOutputWithContext(ctx context.Context) RepositoryPolicyArrayOutput { 295 return o 296 } 297 298 func (o RepositoryPolicyArrayOutput) Index(i pulumi.IntInput) RepositoryPolicyOutput { 299 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *RepositoryPolicy { 300 return vs[0].([]*RepositoryPolicy)[vs[1].(int)] 301 }).(RepositoryPolicyOutput) 302 } 303 304 type RepositoryPolicyMapOutput struct{ *pulumi.OutputState } 305 306 func (RepositoryPolicyMapOutput) ElementType() reflect.Type { 307 return reflect.TypeOf((*map[string]*RepositoryPolicy)(nil)).Elem() 308 } 309 310 func (o RepositoryPolicyMapOutput) ToRepositoryPolicyMapOutput() RepositoryPolicyMapOutput { 311 return o 312 } 313 314 func (o RepositoryPolicyMapOutput) ToRepositoryPolicyMapOutputWithContext(ctx context.Context) RepositoryPolicyMapOutput { 315 return o 316 } 317 318 func (o RepositoryPolicyMapOutput) MapIndex(k pulumi.StringInput) RepositoryPolicyOutput { 319 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *RepositoryPolicy { 320 return vs[0].(map[string]*RepositoryPolicy)[vs[1].(string)] 321 }).(RepositoryPolicyOutput) 322 } 323 324 func init() { 325 pulumi.RegisterInputType(reflect.TypeOf((*RepositoryPolicyInput)(nil)).Elem(), &RepositoryPolicy{}) 326 pulumi.RegisterInputType(reflect.TypeOf((*RepositoryPolicyArrayInput)(nil)).Elem(), RepositoryPolicyArray{}) 327 pulumi.RegisterInputType(reflect.TypeOf((*RepositoryPolicyMapInput)(nil)).Elem(), RepositoryPolicyMap{}) 328 pulumi.RegisterOutputType(RepositoryPolicyOutput{}) 329 pulumi.RegisterOutputType(RepositoryPolicyArrayOutput{}) 330 pulumi.RegisterOutputType(RepositoryPolicyMapOutput{}) 331 }