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