github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/codeartifact/repositoryPermissionsPolicy.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 codeartifact 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 a CodeArtifact Repostory Permissions Policy Resource. 16 // 17 // ## Example Usage 18 // 19 // <!--Start PulumiCodeChooser --> 20 // ```go 21 // package main 22 // 23 // import ( 24 // 25 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/codeartifact" 26 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" 27 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kms" 28 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 29 // 30 // ) 31 // 32 // func main() { 33 // pulumi.Run(func(ctx *pulumi.Context) error { 34 // exampleKey, err := kms.NewKey(ctx, "example", &kms.KeyArgs{ 35 // Description: pulumi.String("domain key"), 36 // }) 37 // if err != nil { 38 // return err 39 // } 40 // exampleDomain, err := codeartifact.NewDomain(ctx, "example", &codeartifact.DomainArgs{ 41 // Domain: pulumi.String("example"), 42 // EncryptionKey: exampleKey.Arn, 43 // }) 44 // if err != nil { 45 // return err 46 // } 47 // exampleRepository, err := codeartifact.NewRepository(ctx, "example", &codeartifact.RepositoryArgs{ 48 // Repository: pulumi.String("example"), 49 // Domain: exampleDomain.Domain, 50 // }) 51 // if err != nil { 52 // return err 53 // } 54 // example := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{ 55 // Statements: iam.GetPolicyDocumentStatementArray{ 56 // &iam.GetPolicyDocumentStatementArgs{ 57 // Effect: pulumi.String("Allow"), 58 // Principals: iam.GetPolicyDocumentStatementPrincipalArray{ 59 // &iam.GetPolicyDocumentStatementPrincipalArgs{ 60 // Type: pulumi.String("*"), 61 // Identifiers: pulumi.StringArray{ 62 // pulumi.String("*"), 63 // }, 64 // }, 65 // }, 66 // Actions: pulumi.StringArray{ 67 // pulumi.String("codeartifact:ReadFromRepository"), 68 // }, 69 // Resources: pulumi.StringArray{ 70 // exampleRepository.Arn, 71 // }, 72 // }, 73 // }, 74 // }, nil) 75 // _, err = codeartifact.NewRepositoryPermissionsPolicy(ctx, "example", &codeartifact.RepositoryPermissionsPolicyArgs{ 76 // Repository: exampleRepository.Repository, 77 // Domain: exampleDomain.Domain, 78 // PolicyDocument: example.ApplyT(func(example iam.GetPolicyDocumentResult) (*string, error) { 79 // return &example.Json, nil 80 // }).(pulumi.StringPtrOutput), 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 CodeArtifact Repository Permissions Policies using the CodeArtifact Repository ARN. For example: 95 // 96 // ```sh 97 // $ pulumi import aws:codeartifact/repositoryPermissionsPolicy:RepositoryPermissionsPolicy example arn:aws:codeartifact:us-west-2:012345678912:repository/tf-acc-test-6968272603913957763/tf-acc-test-6968272603913957763 98 // ``` 99 type RepositoryPermissionsPolicy struct { 100 pulumi.CustomResourceState 101 102 // The name of the domain on which to set the resource policy. 103 Domain pulumi.StringOutput `pulumi:"domain"` 104 // The account number of the AWS account that owns the domain. 105 DomainOwner pulumi.StringOutput `pulumi:"domainOwner"` 106 // A JSON policy string to be set as the access control resource policy on the provided domain. 107 PolicyDocument pulumi.StringOutput `pulumi:"policyDocument"` 108 // The current revision of the resource policy to be set. This revision is used for optimistic locking, which prevents others from overwriting your changes to the domain's resource policy. 109 PolicyRevision pulumi.StringOutput `pulumi:"policyRevision"` 110 // The name of the repository to set the resource policy on. 111 Repository pulumi.StringOutput `pulumi:"repository"` 112 // The ARN of the resource associated with the resource policy. 113 ResourceArn pulumi.StringOutput `pulumi:"resourceArn"` 114 } 115 116 // NewRepositoryPermissionsPolicy registers a new resource with the given unique name, arguments, and options. 117 func NewRepositoryPermissionsPolicy(ctx *pulumi.Context, 118 name string, args *RepositoryPermissionsPolicyArgs, opts ...pulumi.ResourceOption) (*RepositoryPermissionsPolicy, error) { 119 if args == nil { 120 return nil, errors.New("missing one or more required arguments") 121 } 122 123 if args.Domain == nil { 124 return nil, errors.New("invalid value for required argument 'Domain'") 125 } 126 if args.PolicyDocument == nil { 127 return nil, errors.New("invalid value for required argument 'PolicyDocument'") 128 } 129 if args.Repository == nil { 130 return nil, errors.New("invalid value for required argument 'Repository'") 131 } 132 opts = internal.PkgResourceDefaultOpts(opts) 133 var resource RepositoryPermissionsPolicy 134 err := ctx.RegisterResource("aws:codeartifact/repositoryPermissionsPolicy:RepositoryPermissionsPolicy", name, args, &resource, opts...) 135 if err != nil { 136 return nil, err 137 } 138 return &resource, nil 139 } 140 141 // GetRepositoryPermissionsPolicy gets an existing RepositoryPermissionsPolicy resource's state with the given name, ID, and optional 142 // state properties that are used to uniquely qualify the lookup (nil if not required). 143 func GetRepositoryPermissionsPolicy(ctx *pulumi.Context, 144 name string, id pulumi.IDInput, state *RepositoryPermissionsPolicyState, opts ...pulumi.ResourceOption) (*RepositoryPermissionsPolicy, error) { 145 var resource RepositoryPermissionsPolicy 146 err := ctx.ReadResource("aws:codeartifact/repositoryPermissionsPolicy:RepositoryPermissionsPolicy", name, id, state, &resource, opts...) 147 if err != nil { 148 return nil, err 149 } 150 return &resource, nil 151 } 152 153 // Input properties used for looking up and filtering RepositoryPermissionsPolicy resources. 154 type repositoryPermissionsPolicyState struct { 155 // The name of the domain on which to set the resource policy. 156 Domain *string `pulumi:"domain"` 157 // The account number of the AWS account that owns the domain. 158 DomainOwner *string `pulumi:"domainOwner"` 159 // A JSON policy string to be set as the access control resource policy on the provided domain. 160 PolicyDocument *string `pulumi:"policyDocument"` 161 // The current revision of the resource policy to be set. This revision is used for optimistic locking, which prevents others from overwriting your changes to the domain's resource policy. 162 PolicyRevision *string `pulumi:"policyRevision"` 163 // The name of the repository to set the resource policy on. 164 Repository *string `pulumi:"repository"` 165 // The ARN of the resource associated with the resource policy. 166 ResourceArn *string `pulumi:"resourceArn"` 167 } 168 169 type RepositoryPermissionsPolicyState struct { 170 // The name of the domain on which to set the resource policy. 171 Domain pulumi.StringPtrInput 172 // The account number of the AWS account that owns the domain. 173 DomainOwner pulumi.StringPtrInput 174 // A JSON policy string to be set as the access control resource policy on the provided domain. 175 PolicyDocument pulumi.StringPtrInput 176 // The current revision of the resource policy to be set. This revision is used for optimistic locking, which prevents others from overwriting your changes to the domain's resource policy. 177 PolicyRevision pulumi.StringPtrInput 178 // The name of the repository to set the resource policy on. 179 Repository pulumi.StringPtrInput 180 // The ARN of the resource associated with the resource policy. 181 ResourceArn pulumi.StringPtrInput 182 } 183 184 func (RepositoryPermissionsPolicyState) ElementType() reflect.Type { 185 return reflect.TypeOf((*repositoryPermissionsPolicyState)(nil)).Elem() 186 } 187 188 type repositoryPermissionsPolicyArgs struct { 189 // The name of the domain on which to set the resource policy. 190 Domain string `pulumi:"domain"` 191 // The account number of the AWS account that owns the domain. 192 DomainOwner *string `pulumi:"domainOwner"` 193 // A JSON policy string to be set as the access control resource policy on the provided domain. 194 PolicyDocument string `pulumi:"policyDocument"` 195 // The current revision of the resource policy to be set. This revision is used for optimistic locking, which prevents others from overwriting your changes to the domain's resource policy. 196 PolicyRevision *string `pulumi:"policyRevision"` 197 // The name of the repository to set the resource policy on. 198 Repository string `pulumi:"repository"` 199 } 200 201 // The set of arguments for constructing a RepositoryPermissionsPolicy resource. 202 type RepositoryPermissionsPolicyArgs struct { 203 // The name of the domain on which to set the resource policy. 204 Domain pulumi.StringInput 205 // The account number of the AWS account that owns the domain. 206 DomainOwner pulumi.StringPtrInput 207 // A JSON policy string to be set as the access control resource policy on the provided domain. 208 PolicyDocument pulumi.StringInput 209 // The current revision of the resource policy to be set. This revision is used for optimistic locking, which prevents others from overwriting your changes to the domain's resource policy. 210 PolicyRevision pulumi.StringPtrInput 211 // The name of the repository to set the resource policy on. 212 Repository pulumi.StringInput 213 } 214 215 func (RepositoryPermissionsPolicyArgs) ElementType() reflect.Type { 216 return reflect.TypeOf((*repositoryPermissionsPolicyArgs)(nil)).Elem() 217 } 218 219 type RepositoryPermissionsPolicyInput interface { 220 pulumi.Input 221 222 ToRepositoryPermissionsPolicyOutput() RepositoryPermissionsPolicyOutput 223 ToRepositoryPermissionsPolicyOutputWithContext(ctx context.Context) RepositoryPermissionsPolicyOutput 224 } 225 226 func (*RepositoryPermissionsPolicy) ElementType() reflect.Type { 227 return reflect.TypeOf((**RepositoryPermissionsPolicy)(nil)).Elem() 228 } 229 230 func (i *RepositoryPermissionsPolicy) ToRepositoryPermissionsPolicyOutput() RepositoryPermissionsPolicyOutput { 231 return i.ToRepositoryPermissionsPolicyOutputWithContext(context.Background()) 232 } 233 234 func (i *RepositoryPermissionsPolicy) ToRepositoryPermissionsPolicyOutputWithContext(ctx context.Context) RepositoryPermissionsPolicyOutput { 235 return pulumi.ToOutputWithContext(ctx, i).(RepositoryPermissionsPolicyOutput) 236 } 237 238 // RepositoryPermissionsPolicyArrayInput is an input type that accepts RepositoryPermissionsPolicyArray and RepositoryPermissionsPolicyArrayOutput values. 239 // You can construct a concrete instance of `RepositoryPermissionsPolicyArrayInput` via: 240 // 241 // RepositoryPermissionsPolicyArray{ RepositoryPermissionsPolicyArgs{...} } 242 type RepositoryPermissionsPolicyArrayInput interface { 243 pulumi.Input 244 245 ToRepositoryPermissionsPolicyArrayOutput() RepositoryPermissionsPolicyArrayOutput 246 ToRepositoryPermissionsPolicyArrayOutputWithContext(context.Context) RepositoryPermissionsPolicyArrayOutput 247 } 248 249 type RepositoryPermissionsPolicyArray []RepositoryPermissionsPolicyInput 250 251 func (RepositoryPermissionsPolicyArray) ElementType() reflect.Type { 252 return reflect.TypeOf((*[]*RepositoryPermissionsPolicy)(nil)).Elem() 253 } 254 255 func (i RepositoryPermissionsPolicyArray) ToRepositoryPermissionsPolicyArrayOutput() RepositoryPermissionsPolicyArrayOutput { 256 return i.ToRepositoryPermissionsPolicyArrayOutputWithContext(context.Background()) 257 } 258 259 func (i RepositoryPermissionsPolicyArray) ToRepositoryPermissionsPolicyArrayOutputWithContext(ctx context.Context) RepositoryPermissionsPolicyArrayOutput { 260 return pulumi.ToOutputWithContext(ctx, i).(RepositoryPermissionsPolicyArrayOutput) 261 } 262 263 // RepositoryPermissionsPolicyMapInput is an input type that accepts RepositoryPermissionsPolicyMap and RepositoryPermissionsPolicyMapOutput values. 264 // You can construct a concrete instance of `RepositoryPermissionsPolicyMapInput` via: 265 // 266 // RepositoryPermissionsPolicyMap{ "key": RepositoryPermissionsPolicyArgs{...} } 267 type RepositoryPermissionsPolicyMapInput interface { 268 pulumi.Input 269 270 ToRepositoryPermissionsPolicyMapOutput() RepositoryPermissionsPolicyMapOutput 271 ToRepositoryPermissionsPolicyMapOutputWithContext(context.Context) RepositoryPermissionsPolicyMapOutput 272 } 273 274 type RepositoryPermissionsPolicyMap map[string]RepositoryPermissionsPolicyInput 275 276 func (RepositoryPermissionsPolicyMap) ElementType() reflect.Type { 277 return reflect.TypeOf((*map[string]*RepositoryPermissionsPolicy)(nil)).Elem() 278 } 279 280 func (i RepositoryPermissionsPolicyMap) ToRepositoryPermissionsPolicyMapOutput() RepositoryPermissionsPolicyMapOutput { 281 return i.ToRepositoryPermissionsPolicyMapOutputWithContext(context.Background()) 282 } 283 284 func (i RepositoryPermissionsPolicyMap) ToRepositoryPermissionsPolicyMapOutputWithContext(ctx context.Context) RepositoryPermissionsPolicyMapOutput { 285 return pulumi.ToOutputWithContext(ctx, i).(RepositoryPermissionsPolicyMapOutput) 286 } 287 288 type RepositoryPermissionsPolicyOutput struct{ *pulumi.OutputState } 289 290 func (RepositoryPermissionsPolicyOutput) ElementType() reflect.Type { 291 return reflect.TypeOf((**RepositoryPermissionsPolicy)(nil)).Elem() 292 } 293 294 func (o RepositoryPermissionsPolicyOutput) ToRepositoryPermissionsPolicyOutput() RepositoryPermissionsPolicyOutput { 295 return o 296 } 297 298 func (o RepositoryPermissionsPolicyOutput) ToRepositoryPermissionsPolicyOutputWithContext(ctx context.Context) RepositoryPermissionsPolicyOutput { 299 return o 300 } 301 302 // The name of the domain on which to set the resource policy. 303 func (o RepositoryPermissionsPolicyOutput) Domain() pulumi.StringOutput { 304 return o.ApplyT(func(v *RepositoryPermissionsPolicy) pulumi.StringOutput { return v.Domain }).(pulumi.StringOutput) 305 } 306 307 // The account number of the AWS account that owns the domain. 308 func (o RepositoryPermissionsPolicyOutput) DomainOwner() pulumi.StringOutput { 309 return o.ApplyT(func(v *RepositoryPermissionsPolicy) pulumi.StringOutput { return v.DomainOwner }).(pulumi.StringOutput) 310 } 311 312 // A JSON policy string to be set as the access control resource policy on the provided domain. 313 func (o RepositoryPermissionsPolicyOutput) PolicyDocument() pulumi.StringOutput { 314 return o.ApplyT(func(v *RepositoryPermissionsPolicy) pulumi.StringOutput { return v.PolicyDocument }).(pulumi.StringOutput) 315 } 316 317 // The current revision of the resource policy to be set. This revision is used for optimistic locking, which prevents others from overwriting your changes to the domain's resource policy. 318 func (o RepositoryPermissionsPolicyOutput) PolicyRevision() pulumi.StringOutput { 319 return o.ApplyT(func(v *RepositoryPermissionsPolicy) pulumi.StringOutput { return v.PolicyRevision }).(pulumi.StringOutput) 320 } 321 322 // The name of the repository to set the resource policy on. 323 func (o RepositoryPermissionsPolicyOutput) Repository() pulumi.StringOutput { 324 return o.ApplyT(func(v *RepositoryPermissionsPolicy) pulumi.StringOutput { return v.Repository }).(pulumi.StringOutput) 325 } 326 327 // The ARN of the resource associated with the resource policy. 328 func (o RepositoryPermissionsPolicyOutput) ResourceArn() pulumi.StringOutput { 329 return o.ApplyT(func(v *RepositoryPermissionsPolicy) pulumi.StringOutput { return v.ResourceArn }).(pulumi.StringOutput) 330 } 331 332 type RepositoryPermissionsPolicyArrayOutput struct{ *pulumi.OutputState } 333 334 func (RepositoryPermissionsPolicyArrayOutput) ElementType() reflect.Type { 335 return reflect.TypeOf((*[]*RepositoryPermissionsPolicy)(nil)).Elem() 336 } 337 338 func (o RepositoryPermissionsPolicyArrayOutput) ToRepositoryPermissionsPolicyArrayOutput() RepositoryPermissionsPolicyArrayOutput { 339 return o 340 } 341 342 func (o RepositoryPermissionsPolicyArrayOutput) ToRepositoryPermissionsPolicyArrayOutputWithContext(ctx context.Context) RepositoryPermissionsPolicyArrayOutput { 343 return o 344 } 345 346 func (o RepositoryPermissionsPolicyArrayOutput) Index(i pulumi.IntInput) RepositoryPermissionsPolicyOutput { 347 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *RepositoryPermissionsPolicy { 348 return vs[0].([]*RepositoryPermissionsPolicy)[vs[1].(int)] 349 }).(RepositoryPermissionsPolicyOutput) 350 } 351 352 type RepositoryPermissionsPolicyMapOutput struct{ *pulumi.OutputState } 353 354 func (RepositoryPermissionsPolicyMapOutput) ElementType() reflect.Type { 355 return reflect.TypeOf((*map[string]*RepositoryPermissionsPolicy)(nil)).Elem() 356 } 357 358 func (o RepositoryPermissionsPolicyMapOutput) ToRepositoryPermissionsPolicyMapOutput() RepositoryPermissionsPolicyMapOutput { 359 return o 360 } 361 362 func (o RepositoryPermissionsPolicyMapOutput) ToRepositoryPermissionsPolicyMapOutputWithContext(ctx context.Context) RepositoryPermissionsPolicyMapOutput { 363 return o 364 } 365 366 func (o RepositoryPermissionsPolicyMapOutput) MapIndex(k pulumi.StringInput) RepositoryPermissionsPolicyOutput { 367 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *RepositoryPermissionsPolicy { 368 return vs[0].(map[string]*RepositoryPermissionsPolicy)[vs[1].(string)] 369 }).(RepositoryPermissionsPolicyOutput) 370 } 371 372 func init() { 373 pulumi.RegisterInputType(reflect.TypeOf((*RepositoryPermissionsPolicyInput)(nil)).Elem(), &RepositoryPermissionsPolicy{}) 374 pulumi.RegisterInputType(reflect.TypeOf((*RepositoryPermissionsPolicyArrayInput)(nil)).Elem(), RepositoryPermissionsPolicyArray{}) 375 pulumi.RegisterInputType(reflect.TypeOf((*RepositoryPermissionsPolicyMapInput)(nil)).Elem(), RepositoryPermissionsPolicyMap{}) 376 pulumi.RegisterOutputType(RepositoryPermissionsPolicyOutput{}) 377 pulumi.RegisterOutputType(RepositoryPermissionsPolicyArrayOutput{}) 378 pulumi.RegisterOutputType(RepositoryPermissionsPolicyMapOutput{}) 379 }