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  }