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  }