github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/codeartifact/domainPermissions.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 Domains 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  //			example, 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: example.Arn,
    43  //			})
    44  //			if err != nil {
    45  //				return err
    46  //			}
    47  //			test := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{
    48  //				Statements: iam.GetPolicyDocumentStatementArray{
    49  //					&iam.GetPolicyDocumentStatementArgs{
    50  //						Effect: pulumi.String("Allow"),
    51  //						Principals: iam.GetPolicyDocumentStatementPrincipalArray{
    52  //							&iam.GetPolicyDocumentStatementPrincipalArgs{
    53  //								Type: pulumi.String("*"),
    54  //								Identifiers: pulumi.StringArray{
    55  //									pulumi.String("*"),
    56  //								},
    57  //							},
    58  //						},
    59  //						Actions: pulumi.StringArray{
    60  //							pulumi.String("codeartifact:CreateRepository"),
    61  //						},
    62  //						Resources: pulumi.StringArray{
    63  //							exampleDomain.Arn,
    64  //						},
    65  //					},
    66  //				},
    67  //			}, nil)
    68  //			_, err = codeartifact.NewDomainPermissions(ctx, "test", &codeartifact.DomainPermissionsArgs{
    69  //				Domain: exampleDomain.Domain,
    70  //				PolicyDocument: test.ApplyT(func(test iam.GetPolicyDocumentResult) (*string, error) {
    71  //					return &test.Json, nil
    72  //				}).(pulumi.StringPtrOutput),
    73  //			})
    74  //			if err != nil {
    75  //				return err
    76  //			}
    77  //			return nil
    78  //		})
    79  //	}
    80  //
    81  // ```
    82  // <!--End PulumiCodeChooser -->
    83  //
    84  // ## Import
    85  //
    86  // Using `pulumi import`, import CodeArtifact Domain Permissions Policies using the CodeArtifact Domain ARN. For example:
    87  //
    88  // ```sh
    89  // $ pulumi import aws:codeartifact/domainPermissions:DomainPermissions example arn:aws:codeartifact:us-west-2:012345678912:domain/tf-acc-test-1928056699409417367
    90  // ```
    91  type DomainPermissions struct {
    92  	pulumi.CustomResourceState
    93  
    94  	// The name of the domain on which to set the resource policy.
    95  	Domain pulumi.StringOutput `pulumi:"domain"`
    96  	// The account number of the AWS account that owns the domain.
    97  	DomainOwner pulumi.StringOutput `pulumi:"domainOwner"`
    98  	// A JSON policy string to be set as the access control resource policy on the provided domain.
    99  	PolicyDocument pulumi.StringOutput `pulumi:"policyDocument"`
   100  	// 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.
   101  	PolicyRevision pulumi.StringOutput `pulumi:"policyRevision"`
   102  	// The ARN of the resource associated with the resource policy.
   103  	ResourceArn pulumi.StringOutput `pulumi:"resourceArn"`
   104  }
   105  
   106  // NewDomainPermissions registers a new resource with the given unique name, arguments, and options.
   107  func NewDomainPermissions(ctx *pulumi.Context,
   108  	name string, args *DomainPermissionsArgs, opts ...pulumi.ResourceOption) (*DomainPermissions, error) {
   109  	if args == nil {
   110  		return nil, errors.New("missing one or more required arguments")
   111  	}
   112  
   113  	if args.Domain == nil {
   114  		return nil, errors.New("invalid value for required argument 'Domain'")
   115  	}
   116  	if args.PolicyDocument == nil {
   117  		return nil, errors.New("invalid value for required argument 'PolicyDocument'")
   118  	}
   119  	opts = internal.PkgResourceDefaultOpts(opts)
   120  	var resource DomainPermissions
   121  	err := ctx.RegisterResource("aws:codeartifact/domainPermissions:DomainPermissions", name, args, &resource, opts...)
   122  	if err != nil {
   123  		return nil, err
   124  	}
   125  	return &resource, nil
   126  }
   127  
   128  // GetDomainPermissions gets an existing DomainPermissions resource's state with the given name, ID, and optional
   129  // state properties that are used to uniquely qualify the lookup (nil if not required).
   130  func GetDomainPermissions(ctx *pulumi.Context,
   131  	name string, id pulumi.IDInput, state *DomainPermissionsState, opts ...pulumi.ResourceOption) (*DomainPermissions, error) {
   132  	var resource DomainPermissions
   133  	err := ctx.ReadResource("aws:codeartifact/domainPermissions:DomainPermissions", name, id, state, &resource, opts...)
   134  	if err != nil {
   135  		return nil, err
   136  	}
   137  	return &resource, nil
   138  }
   139  
   140  // Input properties used for looking up and filtering DomainPermissions resources.
   141  type domainPermissionsState struct {
   142  	// The name of the domain on which to set the resource policy.
   143  	Domain *string `pulumi:"domain"`
   144  	// The account number of the AWS account that owns the domain.
   145  	DomainOwner *string `pulumi:"domainOwner"`
   146  	// A JSON policy string to be set as the access control resource policy on the provided domain.
   147  	PolicyDocument *string `pulumi:"policyDocument"`
   148  	// 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.
   149  	PolicyRevision *string `pulumi:"policyRevision"`
   150  	// The ARN of the resource associated with the resource policy.
   151  	ResourceArn *string `pulumi:"resourceArn"`
   152  }
   153  
   154  type DomainPermissionsState struct {
   155  	// The name of the domain on which to set the resource policy.
   156  	Domain pulumi.StringPtrInput
   157  	// The account number of the AWS account that owns the domain.
   158  	DomainOwner pulumi.StringPtrInput
   159  	// A JSON policy string to be set as the access control resource policy on the provided domain.
   160  	PolicyDocument pulumi.StringPtrInput
   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 pulumi.StringPtrInput
   163  	// The ARN of the resource associated with the resource policy.
   164  	ResourceArn pulumi.StringPtrInput
   165  }
   166  
   167  func (DomainPermissionsState) ElementType() reflect.Type {
   168  	return reflect.TypeOf((*domainPermissionsState)(nil)).Elem()
   169  }
   170  
   171  type domainPermissionsArgs struct {
   172  	// The name of the domain on which to set the resource policy.
   173  	Domain string `pulumi:"domain"`
   174  	// The account number of the AWS account that owns the domain.
   175  	DomainOwner *string `pulumi:"domainOwner"`
   176  	// A JSON policy string to be set as the access control resource policy on the provided domain.
   177  	PolicyDocument string `pulumi:"policyDocument"`
   178  	// 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.
   179  	PolicyRevision *string `pulumi:"policyRevision"`
   180  }
   181  
   182  // The set of arguments for constructing a DomainPermissions resource.
   183  type DomainPermissionsArgs struct {
   184  	// The name of the domain on which to set the resource policy.
   185  	Domain pulumi.StringInput
   186  	// The account number of the AWS account that owns the domain.
   187  	DomainOwner pulumi.StringPtrInput
   188  	// A JSON policy string to be set as the access control resource policy on the provided domain.
   189  	PolicyDocument pulumi.StringInput
   190  	// 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.
   191  	PolicyRevision pulumi.StringPtrInput
   192  }
   193  
   194  func (DomainPermissionsArgs) ElementType() reflect.Type {
   195  	return reflect.TypeOf((*domainPermissionsArgs)(nil)).Elem()
   196  }
   197  
   198  type DomainPermissionsInput interface {
   199  	pulumi.Input
   200  
   201  	ToDomainPermissionsOutput() DomainPermissionsOutput
   202  	ToDomainPermissionsOutputWithContext(ctx context.Context) DomainPermissionsOutput
   203  }
   204  
   205  func (*DomainPermissions) ElementType() reflect.Type {
   206  	return reflect.TypeOf((**DomainPermissions)(nil)).Elem()
   207  }
   208  
   209  func (i *DomainPermissions) ToDomainPermissionsOutput() DomainPermissionsOutput {
   210  	return i.ToDomainPermissionsOutputWithContext(context.Background())
   211  }
   212  
   213  func (i *DomainPermissions) ToDomainPermissionsOutputWithContext(ctx context.Context) DomainPermissionsOutput {
   214  	return pulumi.ToOutputWithContext(ctx, i).(DomainPermissionsOutput)
   215  }
   216  
   217  // DomainPermissionsArrayInput is an input type that accepts DomainPermissionsArray and DomainPermissionsArrayOutput values.
   218  // You can construct a concrete instance of `DomainPermissionsArrayInput` via:
   219  //
   220  //	DomainPermissionsArray{ DomainPermissionsArgs{...} }
   221  type DomainPermissionsArrayInput interface {
   222  	pulumi.Input
   223  
   224  	ToDomainPermissionsArrayOutput() DomainPermissionsArrayOutput
   225  	ToDomainPermissionsArrayOutputWithContext(context.Context) DomainPermissionsArrayOutput
   226  }
   227  
   228  type DomainPermissionsArray []DomainPermissionsInput
   229  
   230  func (DomainPermissionsArray) ElementType() reflect.Type {
   231  	return reflect.TypeOf((*[]*DomainPermissions)(nil)).Elem()
   232  }
   233  
   234  func (i DomainPermissionsArray) ToDomainPermissionsArrayOutput() DomainPermissionsArrayOutput {
   235  	return i.ToDomainPermissionsArrayOutputWithContext(context.Background())
   236  }
   237  
   238  func (i DomainPermissionsArray) ToDomainPermissionsArrayOutputWithContext(ctx context.Context) DomainPermissionsArrayOutput {
   239  	return pulumi.ToOutputWithContext(ctx, i).(DomainPermissionsArrayOutput)
   240  }
   241  
   242  // DomainPermissionsMapInput is an input type that accepts DomainPermissionsMap and DomainPermissionsMapOutput values.
   243  // You can construct a concrete instance of `DomainPermissionsMapInput` via:
   244  //
   245  //	DomainPermissionsMap{ "key": DomainPermissionsArgs{...} }
   246  type DomainPermissionsMapInput interface {
   247  	pulumi.Input
   248  
   249  	ToDomainPermissionsMapOutput() DomainPermissionsMapOutput
   250  	ToDomainPermissionsMapOutputWithContext(context.Context) DomainPermissionsMapOutput
   251  }
   252  
   253  type DomainPermissionsMap map[string]DomainPermissionsInput
   254  
   255  func (DomainPermissionsMap) ElementType() reflect.Type {
   256  	return reflect.TypeOf((*map[string]*DomainPermissions)(nil)).Elem()
   257  }
   258  
   259  func (i DomainPermissionsMap) ToDomainPermissionsMapOutput() DomainPermissionsMapOutput {
   260  	return i.ToDomainPermissionsMapOutputWithContext(context.Background())
   261  }
   262  
   263  func (i DomainPermissionsMap) ToDomainPermissionsMapOutputWithContext(ctx context.Context) DomainPermissionsMapOutput {
   264  	return pulumi.ToOutputWithContext(ctx, i).(DomainPermissionsMapOutput)
   265  }
   266  
   267  type DomainPermissionsOutput struct{ *pulumi.OutputState }
   268  
   269  func (DomainPermissionsOutput) ElementType() reflect.Type {
   270  	return reflect.TypeOf((**DomainPermissions)(nil)).Elem()
   271  }
   272  
   273  func (o DomainPermissionsOutput) ToDomainPermissionsOutput() DomainPermissionsOutput {
   274  	return o
   275  }
   276  
   277  func (o DomainPermissionsOutput) ToDomainPermissionsOutputWithContext(ctx context.Context) DomainPermissionsOutput {
   278  	return o
   279  }
   280  
   281  // The name of the domain on which to set the resource policy.
   282  func (o DomainPermissionsOutput) Domain() pulumi.StringOutput {
   283  	return o.ApplyT(func(v *DomainPermissions) pulumi.StringOutput { return v.Domain }).(pulumi.StringOutput)
   284  }
   285  
   286  // The account number of the AWS account that owns the domain.
   287  func (o DomainPermissionsOutput) DomainOwner() pulumi.StringOutput {
   288  	return o.ApplyT(func(v *DomainPermissions) pulumi.StringOutput { return v.DomainOwner }).(pulumi.StringOutput)
   289  }
   290  
   291  // A JSON policy string to be set as the access control resource policy on the provided domain.
   292  func (o DomainPermissionsOutput) PolicyDocument() pulumi.StringOutput {
   293  	return o.ApplyT(func(v *DomainPermissions) pulumi.StringOutput { return v.PolicyDocument }).(pulumi.StringOutput)
   294  }
   295  
   296  // 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.
   297  func (o DomainPermissionsOutput) PolicyRevision() pulumi.StringOutput {
   298  	return o.ApplyT(func(v *DomainPermissions) pulumi.StringOutput { return v.PolicyRevision }).(pulumi.StringOutput)
   299  }
   300  
   301  // The ARN of the resource associated with the resource policy.
   302  func (o DomainPermissionsOutput) ResourceArn() pulumi.StringOutput {
   303  	return o.ApplyT(func(v *DomainPermissions) pulumi.StringOutput { return v.ResourceArn }).(pulumi.StringOutput)
   304  }
   305  
   306  type DomainPermissionsArrayOutput struct{ *pulumi.OutputState }
   307  
   308  func (DomainPermissionsArrayOutput) ElementType() reflect.Type {
   309  	return reflect.TypeOf((*[]*DomainPermissions)(nil)).Elem()
   310  }
   311  
   312  func (o DomainPermissionsArrayOutput) ToDomainPermissionsArrayOutput() DomainPermissionsArrayOutput {
   313  	return o
   314  }
   315  
   316  func (o DomainPermissionsArrayOutput) ToDomainPermissionsArrayOutputWithContext(ctx context.Context) DomainPermissionsArrayOutput {
   317  	return o
   318  }
   319  
   320  func (o DomainPermissionsArrayOutput) Index(i pulumi.IntInput) DomainPermissionsOutput {
   321  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *DomainPermissions {
   322  		return vs[0].([]*DomainPermissions)[vs[1].(int)]
   323  	}).(DomainPermissionsOutput)
   324  }
   325  
   326  type DomainPermissionsMapOutput struct{ *pulumi.OutputState }
   327  
   328  func (DomainPermissionsMapOutput) ElementType() reflect.Type {
   329  	return reflect.TypeOf((*map[string]*DomainPermissions)(nil)).Elem()
   330  }
   331  
   332  func (o DomainPermissionsMapOutput) ToDomainPermissionsMapOutput() DomainPermissionsMapOutput {
   333  	return o
   334  }
   335  
   336  func (o DomainPermissionsMapOutput) ToDomainPermissionsMapOutputWithContext(ctx context.Context) DomainPermissionsMapOutput {
   337  	return o
   338  }
   339  
   340  func (o DomainPermissionsMapOutput) MapIndex(k pulumi.StringInput) DomainPermissionsOutput {
   341  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *DomainPermissions {
   342  		return vs[0].(map[string]*DomainPermissions)[vs[1].(string)]
   343  	}).(DomainPermissionsOutput)
   344  }
   345  
   346  func init() {
   347  	pulumi.RegisterInputType(reflect.TypeOf((*DomainPermissionsInput)(nil)).Elem(), &DomainPermissions{})
   348  	pulumi.RegisterInputType(reflect.TypeOf((*DomainPermissionsArrayInput)(nil)).Elem(), DomainPermissionsArray{})
   349  	pulumi.RegisterInputType(reflect.TypeOf((*DomainPermissionsMapInput)(nil)).Elem(), DomainPermissionsMap{})
   350  	pulumi.RegisterOutputType(DomainPermissionsOutput{})
   351  	pulumi.RegisterOutputType(DomainPermissionsArrayOutput{})
   352  	pulumi.RegisterOutputType(DomainPermissionsMapOutput{})
   353  }