github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/s3/bucketServerSideEncryptionConfigurationV2.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 s3
     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 S3 bucket server-side encryption configuration resource.
    16  //
    17  // > **NOTE:** Destroying an `s3.BucketServerSideEncryptionConfigurationV2` resource resets the bucket to [Amazon S3 bucket default encryption](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).
    18  //
    19  // > This resource cannot be used with S3 directory buckets.
    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/kms"
    30  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3"
    31  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    32  //
    33  // )
    34  //
    35  //	func main() {
    36  //		pulumi.Run(func(ctx *pulumi.Context) error {
    37  //			mykey, err := kms.NewKey(ctx, "mykey", &kms.KeyArgs{
    38  //				Description:          pulumi.String("This key is used to encrypt bucket objects"),
    39  //				DeletionWindowInDays: pulumi.Int(10),
    40  //			})
    41  //			if err != nil {
    42  //				return err
    43  //			}
    44  //			mybucket, err := s3.NewBucketV2(ctx, "mybucket", &s3.BucketV2Args{
    45  //				Bucket: pulumi.String("mybucket"),
    46  //			})
    47  //			if err != nil {
    48  //				return err
    49  //			}
    50  //			_, err = s3.NewBucketServerSideEncryptionConfigurationV2(ctx, "example", &s3.BucketServerSideEncryptionConfigurationV2Args{
    51  //				Bucket: mybucket.ID(),
    52  //				Rules: s3.BucketServerSideEncryptionConfigurationV2RuleArray{
    53  //					&s3.BucketServerSideEncryptionConfigurationV2RuleArgs{
    54  //						ApplyServerSideEncryptionByDefault: &s3.BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultArgs{
    55  //							KmsMasterKeyId: mykey.Arn,
    56  //							SseAlgorithm:   pulumi.String("aws:kms"),
    57  //						},
    58  //					},
    59  //				},
    60  //			})
    61  //			if err != nil {
    62  //				return err
    63  //			}
    64  //			return nil
    65  //		})
    66  //	}
    67  //
    68  // ```
    69  // <!--End PulumiCodeChooser -->
    70  //
    71  // ## Import
    72  //
    73  // If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`):
    74  //
    75  // __Using `pulumi import` to import__ S3 bucket server-side encryption configuration using the `bucket` or using the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example:
    76  //
    77  // If the owner (account ID) of the source bucket is the same account used to configure the AWS Provider, import using the `bucket`:
    78  //
    79  // ```sh
    80  // $ pulumi import aws:s3/bucketServerSideEncryptionConfigurationV2:BucketServerSideEncryptionConfigurationV2 example bucket-name
    81  // ```
    82  // If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`):
    83  //
    84  // ```sh
    85  // $ pulumi import aws:s3/bucketServerSideEncryptionConfigurationV2:BucketServerSideEncryptionConfigurationV2 example bucket-name,123456789012
    86  // ```
    87  type BucketServerSideEncryptionConfigurationV2 struct {
    88  	pulumi.CustomResourceState
    89  
    90  	// ID (name) of the bucket.
    91  	Bucket pulumi.StringOutput `pulumi:"bucket"`
    92  	// Account ID of the expected bucket owner.
    93  	ExpectedBucketOwner pulumi.StringPtrOutput `pulumi:"expectedBucketOwner"`
    94  	// Set of server-side encryption configuration rules. See below. Currently, only a single rule is supported.
    95  	Rules BucketServerSideEncryptionConfigurationV2RuleArrayOutput `pulumi:"rules"`
    96  }
    97  
    98  // NewBucketServerSideEncryptionConfigurationV2 registers a new resource with the given unique name, arguments, and options.
    99  func NewBucketServerSideEncryptionConfigurationV2(ctx *pulumi.Context,
   100  	name string, args *BucketServerSideEncryptionConfigurationV2Args, opts ...pulumi.ResourceOption) (*BucketServerSideEncryptionConfigurationV2, error) {
   101  	if args == nil {
   102  		return nil, errors.New("missing one or more required arguments")
   103  	}
   104  
   105  	if args.Bucket == nil {
   106  		return nil, errors.New("invalid value for required argument 'Bucket'")
   107  	}
   108  	if args.Rules == nil {
   109  		return nil, errors.New("invalid value for required argument 'Rules'")
   110  	}
   111  	opts = internal.PkgResourceDefaultOpts(opts)
   112  	var resource BucketServerSideEncryptionConfigurationV2
   113  	err := ctx.RegisterResource("aws:s3/bucketServerSideEncryptionConfigurationV2:BucketServerSideEncryptionConfigurationV2", name, args, &resource, opts...)
   114  	if err != nil {
   115  		return nil, err
   116  	}
   117  	return &resource, nil
   118  }
   119  
   120  // GetBucketServerSideEncryptionConfigurationV2 gets an existing BucketServerSideEncryptionConfigurationV2 resource's state with the given name, ID, and optional
   121  // state properties that are used to uniquely qualify the lookup (nil if not required).
   122  func GetBucketServerSideEncryptionConfigurationV2(ctx *pulumi.Context,
   123  	name string, id pulumi.IDInput, state *BucketServerSideEncryptionConfigurationV2State, opts ...pulumi.ResourceOption) (*BucketServerSideEncryptionConfigurationV2, error) {
   124  	var resource BucketServerSideEncryptionConfigurationV2
   125  	err := ctx.ReadResource("aws:s3/bucketServerSideEncryptionConfigurationV2:BucketServerSideEncryptionConfigurationV2", name, id, state, &resource, opts...)
   126  	if err != nil {
   127  		return nil, err
   128  	}
   129  	return &resource, nil
   130  }
   131  
   132  // Input properties used for looking up and filtering BucketServerSideEncryptionConfigurationV2 resources.
   133  type bucketServerSideEncryptionConfigurationV2State struct {
   134  	// ID (name) of the bucket.
   135  	Bucket *string `pulumi:"bucket"`
   136  	// Account ID of the expected bucket owner.
   137  	ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"`
   138  	// Set of server-side encryption configuration rules. See below. Currently, only a single rule is supported.
   139  	Rules []BucketServerSideEncryptionConfigurationV2Rule `pulumi:"rules"`
   140  }
   141  
   142  type BucketServerSideEncryptionConfigurationV2State struct {
   143  	// ID (name) of the bucket.
   144  	Bucket pulumi.StringPtrInput
   145  	// Account ID of the expected bucket owner.
   146  	ExpectedBucketOwner pulumi.StringPtrInput
   147  	// Set of server-side encryption configuration rules. See below. Currently, only a single rule is supported.
   148  	Rules BucketServerSideEncryptionConfigurationV2RuleArrayInput
   149  }
   150  
   151  func (BucketServerSideEncryptionConfigurationV2State) ElementType() reflect.Type {
   152  	return reflect.TypeOf((*bucketServerSideEncryptionConfigurationV2State)(nil)).Elem()
   153  }
   154  
   155  type bucketServerSideEncryptionConfigurationV2Args struct {
   156  	// ID (name) of the bucket.
   157  	Bucket string `pulumi:"bucket"`
   158  	// Account ID of the expected bucket owner.
   159  	ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"`
   160  	// Set of server-side encryption configuration rules. See below. Currently, only a single rule is supported.
   161  	Rules []BucketServerSideEncryptionConfigurationV2Rule `pulumi:"rules"`
   162  }
   163  
   164  // The set of arguments for constructing a BucketServerSideEncryptionConfigurationV2 resource.
   165  type BucketServerSideEncryptionConfigurationV2Args struct {
   166  	// ID (name) of the bucket.
   167  	Bucket pulumi.StringInput
   168  	// Account ID of the expected bucket owner.
   169  	ExpectedBucketOwner pulumi.StringPtrInput
   170  	// Set of server-side encryption configuration rules. See below. Currently, only a single rule is supported.
   171  	Rules BucketServerSideEncryptionConfigurationV2RuleArrayInput
   172  }
   173  
   174  func (BucketServerSideEncryptionConfigurationV2Args) ElementType() reflect.Type {
   175  	return reflect.TypeOf((*bucketServerSideEncryptionConfigurationV2Args)(nil)).Elem()
   176  }
   177  
   178  type BucketServerSideEncryptionConfigurationV2Input interface {
   179  	pulumi.Input
   180  
   181  	ToBucketServerSideEncryptionConfigurationV2Output() BucketServerSideEncryptionConfigurationV2Output
   182  	ToBucketServerSideEncryptionConfigurationV2OutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2Output
   183  }
   184  
   185  func (*BucketServerSideEncryptionConfigurationV2) ElementType() reflect.Type {
   186  	return reflect.TypeOf((**BucketServerSideEncryptionConfigurationV2)(nil)).Elem()
   187  }
   188  
   189  func (i *BucketServerSideEncryptionConfigurationV2) ToBucketServerSideEncryptionConfigurationV2Output() BucketServerSideEncryptionConfigurationV2Output {
   190  	return i.ToBucketServerSideEncryptionConfigurationV2OutputWithContext(context.Background())
   191  }
   192  
   193  func (i *BucketServerSideEncryptionConfigurationV2) ToBucketServerSideEncryptionConfigurationV2OutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2Output {
   194  	return pulumi.ToOutputWithContext(ctx, i).(BucketServerSideEncryptionConfigurationV2Output)
   195  }
   196  
   197  // BucketServerSideEncryptionConfigurationV2ArrayInput is an input type that accepts BucketServerSideEncryptionConfigurationV2Array and BucketServerSideEncryptionConfigurationV2ArrayOutput values.
   198  // You can construct a concrete instance of `BucketServerSideEncryptionConfigurationV2ArrayInput` via:
   199  //
   200  //	BucketServerSideEncryptionConfigurationV2Array{ BucketServerSideEncryptionConfigurationV2Args{...} }
   201  type BucketServerSideEncryptionConfigurationV2ArrayInput interface {
   202  	pulumi.Input
   203  
   204  	ToBucketServerSideEncryptionConfigurationV2ArrayOutput() BucketServerSideEncryptionConfigurationV2ArrayOutput
   205  	ToBucketServerSideEncryptionConfigurationV2ArrayOutputWithContext(context.Context) BucketServerSideEncryptionConfigurationV2ArrayOutput
   206  }
   207  
   208  type BucketServerSideEncryptionConfigurationV2Array []BucketServerSideEncryptionConfigurationV2Input
   209  
   210  func (BucketServerSideEncryptionConfigurationV2Array) ElementType() reflect.Type {
   211  	return reflect.TypeOf((*[]*BucketServerSideEncryptionConfigurationV2)(nil)).Elem()
   212  }
   213  
   214  func (i BucketServerSideEncryptionConfigurationV2Array) ToBucketServerSideEncryptionConfigurationV2ArrayOutput() BucketServerSideEncryptionConfigurationV2ArrayOutput {
   215  	return i.ToBucketServerSideEncryptionConfigurationV2ArrayOutputWithContext(context.Background())
   216  }
   217  
   218  func (i BucketServerSideEncryptionConfigurationV2Array) ToBucketServerSideEncryptionConfigurationV2ArrayOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2ArrayOutput {
   219  	return pulumi.ToOutputWithContext(ctx, i).(BucketServerSideEncryptionConfigurationV2ArrayOutput)
   220  }
   221  
   222  // BucketServerSideEncryptionConfigurationV2MapInput is an input type that accepts BucketServerSideEncryptionConfigurationV2Map and BucketServerSideEncryptionConfigurationV2MapOutput values.
   223  // You can construct a concrete instance of `BucketServerSideEncryptionConfigurationV2MapInput` via:
   224  //
   225  //	BucketServerSideEncryptionConfigurationV2Map{ "key": BucketServerSideEncryptionConfigurationV2Args{...} }
   226  type BucketServerSideEncryptionConfigurationV2MapInput interface {
   227  	pulumi.Input
   228  
   229  	ToBucketServerSideEncryptionConfigurationV2MapOutput() BucketServerSideEncryptionConfigurationV2MapOutput
   230  	ToBucketServerSideEncryptionConfigurationV2MapOutputWithContext(context.Context) BucketServerSideEncryptionConfigurationV2MapOutput
   231  }
   232  
   233  type BucketServerSideEncryptionConfigurationV2Map map[string]BucketServerSideEncryptionConfigurationV2Input
   234  
   235  func (BucketServerSideEncryptionConfigurationV2Map) ElementType() reflect.Type {
   236  	return reflect.TypeOf((*map[string]*BucketServerSideEncryptionConfigurationV2)(nil)).Elem()
   237  }
   238  
   239  func (i BucketServerSideEncryptionConfigurationV2Map) ToBucketServerSideEncryptionConfigurationV2MapOutput() BucketServerSideEncryptionConfigurationV2MapOutput {
   240  	return i.ToBucketServerSideEncryptionConfigurationV2MapOutputWithContext(context.Background())
   241  }
   242  
   243  func (i BucketServerSideEncryptionConfigurationV2Map) ToBucketServerSideEncryptionConfigurationV2MapOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2MapOutput {
   244  	return pulumi.ToOutputWithContext(ctx, i).(BucketServerSideEncryptionConfigurationV2MapOutput)
   245  }
   246  
   247  type BucketServerSideEncryptionConfigurationV2Output struct{ *pulumi.OutputState }
   248  
   249  func (BucketServerSideEncryptionConfigurationV2Output) ElementType() reflect.Type {
   250  	return reflect.TypeOf((**BucketServerSideEncryptionConfigurationV2)(nil)).Elem()
   251  }
   252  
   253  func (o BucketServerSideEncryptionConfigurationV2Output) ToBucketServerSideEncryptionConfigurationV2Output() BucketServerSideEncryptionConfigurationV2Output {
   254  	return o
   255  }
   256  
   257  func (o BucketServerSideEncryptionConfigurationV2Output) ToBucketServerSideEncryptionConfigurationV2OutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2Output {
   258  	return o
   259  }
   260  
   261  // ID (name) of the bucket.
   262  func (o BucketServerSideEncryptionConfigurationV2Output) Bucket() pulumi.StringOutput {
   263  	return o.ApplyT(func(v *BucketServerSideEncryptionConfigurationV2) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput)
   264  }
   265  
   266  // Account ID of the expected bucket owner.
   267  func (o BucketServerSideEncryptionConfigurationV2Output) ExpectedBucketOwner() pulumi.StringPtrOutput {
   268  	return o.ApplyT(func(v *BucketServerSideEncryptionConfigurationV2) pulumi.StringPtrOutput {
   269  		return v.ExpectedBucketOwner
   270  	}).(pulumi.StringPtrOutput)
   271  }
   272  
   273  // Set of server-side encryption configuration rules. See below. Currently, only a single rule is supported.
   274  func (o BucketServerSideEncryptionConfigurationV2Output) Rules() BucketServerSideEncryptionConfigurationV2RuleArrayOutput {
   275  	return o.ApplyT(func(v *BucketServerSideEncryptionConfigurationV2) BucketServerSideEncryptionConfigurationV2RuleArrayOutput {
   276  		return v.Rules
   277  	}).(BucketServerSideEncryptionConfigurationV2RuleArrayOutput)
   278  }
   279  
   280  type BucketServerSideEncryptionConfigurationV2ArrayOutput struct{ *pulumi.OutputState }
   281  
   282  func (BucketServerSideEncryptionConfigurationV2ArrayOutput) ElementType() reflect.Type {
   283  	return reflect.TypeOf((*[]*BucketServerSideEncryptionConfigurationV2)(nil)).Elem()
   284  }
   285  
   286  func (o BucketServerSideEncryptionConfigurationV2ArrayOutput) ToBucketServerSideEncryptionConfigurationV2ArrayOutput() BucketServerSideEncryptionConfigurationV2ArrayOutput {
   287  	return o
   288  }
   289  
   290  func (o BucketServerSideEncryptionConfigurationV2ArrayOutput) ToBucketServerSideEncryptionConfigurationV2ArrayOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2ArrayOutput {
   291  	return o
   292  }
   293  
   294  func (o BucketServerSideEncryptionConfigurationV2ArrayOutput) Index(i pulumi.IntInput) BucketServerSideEncryptionConfigurationV2Output {
   295  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketServerSideEncryptionConfigurationV2 {
   296  		return vs[0].([]*BucketServerSideEncryptionConfigurationV2)[vs[1].(int)]
   297  	}).(BucketServerSideEncryptionConfigurationV2Output)
   298  }
   299  
   300  type BucketServerSideEncryptionConfigurationV2MapOutput struct{ *pulumi.OutputState }
   301  
   302  func (BucketServerSideEncryptionConfigurationV2MapOutput) ElementType() reflect.Type {
   303  	return reflect.TypeOf((*map[string]*BucketServerSideEncryptionConfigurationV2)(nil)).Elem()
   304  }
   305  
   306  func (o BucketServerSideEncryptionConfigurationV2MapOutput) ToBucketServerSideEncryptionConfigurationV2MapOutput() BucketServerSideEncryptionConfigurationV2MapOutput {
   307  	return o
   308  }
   309  
   310  func (o BucketServerSideEncryptionConfigurationV2MapOutput) ToBucketServerSideEncryptionConfigurationV2MapOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2MapOutput {
   311  	return o
   312  }
   313  
   314  func (o BucketServerSideEncryptionConfigurationV2MapOutput) MapIndex(k pulumi.StringInput) BucketServerSideEncryptionConfigurationV2Output {
   315  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketServerSideEncryptionConfigurationV2 {
   316  		return vs[0].(map[string]*BucketServerSideEncryptionConfigurationV2)[vs[1].(string)]
   317  	}).(BucketServerSideEncryptionConfigurationV2Output)
   318  }
   319  
   320  func init() {
   321  	pulumi.RegisterInputType(reflect.TypeOf((*BucketServerSideEncryptionConfigurationV2Input)(nil)).Elem(), &BucketServerSideEncryptionConfigurationV2{})
   322  	pulumi.RegisterInputType(reflect.TypeOf((*BucketServerSideEncryptionConfigurationV2ArrayInput)(nil)).Elem(), BucketServerSideEncryptionConfigurationV2Array{})
   323  	pulumi.RegisterInputType(reflect.TypeOf((*BucketServerSideEncryptionConfigurationV2MapInput)(nil)).Elem(), BucketServerSideEncryptionConfigurationV2Map{})
   324  	pulumi.RegisterOutputType(BucketServerSideEncryptionConfigurationV2Output{})
   325  	pulumi.RegisterOutputType(BucketServerSideEncryptionConfigurationV2ArrayOutput{})
   326  	pulumi.RegisterOutputType(BucketServerSideEncryptionConfigurationV2MapOutput{})
   327  }