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 }