@@ -568,38 +568,40 @@ func ResourceBucket() *schema.Resource {
568
568
},
569
569
570
570
"server_side_encryption_configuration" : {
571
- Type : schema .TypeList ,
572
- MaxItems : 1 ,
573
- Optional : true ,
571
+ Type : schema .TypeList ,
572
+ Computed : true ,
573
+ Deprecated : "Use the aws_s3_bucket_server_side_encryption_configuration resource instead" ,
574
574
Elem : & schema.Resource {
575
575
Schema : map [string ]* schema.Schema {
576
576
"rule" : {
577
- Type : schema .TypeList ,
578
- MaxItems : 1 ,
579
- Required : true ,
577
+ Type : schema .TypeList ,
578
+ Computed : true ,
579
+ Deprecated : "Use the aws_s3_bucket_server_side_encryption_configuration resource instead" ,
580
580
Elem : & schema.Resource {
581
581
Schema : map [string ]* schema.Schema {
582
582
"apply_server_side_encryption_by_default" : {
583
- Type : schema .TypeList ,
584
- MaxItems : 1 ,
585
- Required : true ,
583
+ Type : schema .TypeList ,
584
+ Computed : true ,
585
+ Deprecated : "Use the aws_s3_bucket_server_side_encryption_configuration resource instead" ,
586
586
Elem : & schema.Resource {
587
587
Schema : map [string ]* schema.Schema {
588
588
"kms_master_key_id" : {
589
- Type : schema .TypeString ,
590
- Optional : true ,
589
+ Type : schema .TypeString ,
590
+ Computed : true ,
591
+ Deprecated : "Use the aws_s3_bucket_server_side_encryption_configuration resource instead" ,
591
592
},
592
593
"sse_algorithm" : {
593
- Type : schema .TypeString ,
594
- Required : true ,
595
- ValidateFunc : validation . StringInSlice ( s3 . ServerSideEncryption_Values (), false ) ,
594
+ Type : schema .TypeString ,
595
+ Computed : true ,
596
+ Deprecated : "Use the aws_s3_bucket_server_side_encryption_configuration resource instead" ,
596
597
},
597
598
},
598
599
},
599
600
},
600
601
"bucket_key_enabled" : {
601
- Type : schema .TypeBool ,
602
- Optional : true ,
602
+ Type : schema .TypeBool ,
603
+ Computed : true ,
604
+ Deprecated : "Use the aws_s3_bucket_server_side_encryption_configuration resource instead" ,
603
605
},
604
606
},
605
607
},
@@ -835,12 +837,6 @@ func resourceBucketUpdate(d *schema.ResourceData, meta interface{}) error {
835
837
}
836
838
}
837
839
838
- if d .HasChange ("server_side_encryption_configuration" ) {
839
- if err := resourceBucketServerSideEncryptionConfigurationUpdate (conn , d ); err != nil {
840
- return err
841
- }
842
- }
843
-
844
840
if d .HasChange ("object_lock_configuration" ) {
845
841
if err := resourceBucketObjectLockConfigurationUpdate (conn , d ); err != nil {
846
842
return err
@@ -1291,16 +1287,14 @@ func resourceBucketRead(d *schema.ResourceData, meta interface{}) error {
1291
1287
Bucket : aws .String (d .Id ()),
1292
1288
})
1293
1289
})
1294
- if err != nil && ! tfawserr .ErrMessageContains (err , "ServerSideEncryptionConfigurationNotFoundError" , "encryption configuration was not found" ) {
1295
- return fmt .Errorf ("error getting S3 Bucket encryption: %s " , err )
1290
+ if err != nil && ! tfawserr .ErrMessageContains (err , ErrCodeServerSideEncryptionNotFound , "encryption configuration was not found" ) {
1291
+ return fmt .Errorf ("error getting S3 Bucket encryption: %w " , err )
1296
1292
}
1297
1293
1298
- serverSideEncryptionConfiguration := make ([]map [string ]interface {}, 0 )
1299
- if encryption , ok := encryptionResponse .(* s3.GetBucketEncryptionOutput ); ok && encryption .ServerSideEncryptionConfiguration != nil {
1300
- serverSideEncryptionConfiguration = flattenServerSideEncryptionConfiguration (encryption .ServerSideEncryptionConfiguration )
1301
- }
1302
- if err := d .Set ("server_side_encryption_configuration" , serverSideEncryptionConfiguration ); err != nil {
1303
- return fmt .Errorf ("error setting server_side_encryption_configuration: %s" , err )
1294
+ if encryption , ok := encryptionResponse .(* s3.GetBucketEncryptionOutput ); ok {
1295
+ if err := d .Set ("server_side_encryption_configuration" , flattenServerSideEncryptionConfiguration (encryption .ServerSideEncryptionConfiguration )); err != nil {
1296
+ return fmt .Errorf ("error setting server_side_encryption_configuration: %w" , err )
1297
+ }
1304
1298
}
1305
1299
1306
1300
// Object Lock configuration.
@@ -1947,73 +1941,6 @@ func resourceBucketRequestPayerUpdate(conn *s3.S3, d *schema.ResourceData) error
1947
1941
return nil
1948
1942
}
1949
1943
1950
- func resourceBucketServerSideEncryptionConfigurationUpdate (conn * s3.S3 , d * schema.ResourceData ) error {
1951
- bucket := d .Get ("bucket" ).(string )
1952
- serverSideEncryptionConfiguration := d .Get ("server_side_encryption_configuration" ).([]interface {})
1953
- if len (serverSideEncryptionConfiguration ) == 0 {
1954
- log .Printf ("[DEBUG] Delete server side encryption configuration: %#v" , serverSideEncryptionConfiguration )
1955
- i := & s3.DeleteBucketEncryptionInput {
1956
- Bucket : aws .String (bucket ),
1957
- }
1958
-
1959
- _ , err := conn .DeleteBucketEncryption (i )
1960
- if err != nil {
1961
- return fmt .Errorf ("error removing S3 bucket server side encryption: %s" , err )
1962
- }
1963
- return nil
1964
- }
1965
-
1966
- c := serverSideEncryptionConfiguration [0 ].(map [string ]interface {})
1967
-
1968
- rc := & s3.ServerSideEncryptionConfiguration {}
1969
-
1970
- rcRules := c ["rule" ].([]interface {})
1971
- var rules []* s3.ServerSideEncryptionRule
1972
- for _ , v := range rcRules {
1973
- rr := v .(map [string ]interface {})
1974
- rrDefault := rr ["apply_server_side_encryption_by_default" ].([]interface {})
1975
- sseAlgorithm := rrDefault [0 ].(map [string ]interface {})["sse_algorithm" ].(string )
1976
- kmsMasterKeyId := rrDefault [0 ].(map [string ]interface {})["kms_master_key_id" ].(string )
1977
- rcDefaultRule := & s3.ServerSideEncryptionByDefault {
1978
- SSEAlgorithm : aws .String (sseAlgorithm ),
1979
- }
1980
- if kmsMasterKeyId != "" {
1981
- rcDefaultRule .KMSMasterKeyID = aws .String (kmsMasterKeyId )
1982
- }
1983
- rcRule := & s3.ServerSideEncryptionRule {
1984
- ApplyServerSideEncryptionByDefault : rcDefaultRule ,
1985
- }
1986
-
1987
- if val , ok := rr ["bucket_key_enabled" ].(bool ); ok {
1988
- rcRule .BucketKeyEnabled = aws .Bool (val )
1989
- }
1990
-
1991
- rules = append (rules , rcRule )
1992
- }
1993
-
1994
- rc .Rules = rules
1995
- i := & s3.PutBucketEncryptionInput {
1996
- Bucket : aws .String (bucket ),
1997
- ServerSideEncryptionConfiguration : rc ,
1998
- }
1999
- log .Printf ("[DEBUG] S3 put bucket replication configuration: %#v" , i )
2000
-
2001
- _ , err := tfresource .RetryWhenAWSErrCodeEquals (
2002
- propagationTimeout ,
2003
- func () (interface {}, error ) {
2004
- return conn .PutBucketEncryption (i )
2005
- },
2006
- s3 .ErrCodeNoSuchBucket ,
2007
- ErrCodeOperationAborted ,
2008
- )
2009
-
2010
- if err != nil {
2011
- return fmt .Errorf ("error putting S3 server side encryption configuration: %s" , err )
2012
- }
2013
-
2014
- return nil
2015
- }
2016
-
2017
1944
func resourceBucketObjectLockConfigurationUpdate (conn * s3.S3 , d * schema.ResourceData ) error {
2018
1945
// S3 Object Lock configuration cannot be deleted, only updated.
2019
1946
req := & s3.PutObjectLockConfigurationInput {
@@ -2371,24 +2298,41 @@ func resourceBucketLifecycleUpdate(conn *s3.S3, d *schema.ResourceData) error {
2371
2298
return nil
2372
2299
}
2373
2300
2374
- func flattenServerSideEncryptionConfiguration (c * s3.ServerSideEncryptionConfiguration ) []map [string ]interface {} {
2375
- var encryptionConfiguration []map [string ]interface {}
2376
- rules := make ([]interface {}, 0 , len (c .Rules ))
2377
- for _ , v := range c .Rules {
2378
- if v .ApplyServerSideEncryptionByDefault != nil {
2379
- r := make (map [string ]interface {})
2380
- d := make (map [string ]interface {})
2381
- d ["kms_master_key_id" ] = aws .StringValue (v .ApplyServerSideEncryptionByDefault .KMSMasterKeyID )
2382
- d ["sse_algorithm" ] = aws .StringValue (v .ApplyServerSideEncryptionByDefault .SSEAlgorithm )
2383
- r ["apply_server_side_encryption_by_default" ] = []map [string ]interface {}{d }
2384
- r ["bucket_key_enabled" ] = aws .BoolValue (v .BucketKeyEnabled )
2385
- rules = append (rules , r )
2301
+ func flattenServerSideEncryptionConfiguration (c * s3.ServerSideEncryptionConfiguration ) []interface {} {
2302
+ if c == nil {
2303
+ return []interface {}{}
2304
+ }
2305
+
2306
+ m := map [string ]interface {}{
2307
+ "rules" : flattenServerSideEncryptionConfigurationRules (c .Rules ),
2308
+ }
2309
+
2310
+ return []interface {}{m }
2311
+ }
2312
+
2313
+ func flattenServerSideEncryptionConfigurationRules (rules []* s3.ServerSideEncryptionRule ) []interface {} {
2314
+ var results []interface {}
2315
+
2316
+ for _ , rule := range rules {
2317
+ m := make (map [string ]interface {})
2318
+
2319
+ if rule .BucketKeyEnabled != nil {
2320
+ m ["bucket_key_enabled" ] = aws .BoolValue (rule .BucketKeyEnabled )
2386
2321
}
2322
+
2323
+ if rule .ApplyServerSideEncryptionByDefault != nil {
2324
+ m ["apply_server_side_encryption_by_default" ] = []interface {}{
2325
+ map [string ]interface {}{
2326
+ "kms_master_key_id" : aws .StringValue (rule .ApplyServerSideEncryptionByDefault .KMSMasterKeyID ),
2327
+ "sse_algorithm" : aws .StringValue (rule .ApplyServerSideEncryptionByDefault .SSEAlgorithm ),
2328
+ },
2329
+ }
2330
+ }
2331
+
2332
+ results = append (results , m )
2387
2333
}
2388
- encryptionConfiguration = append (encryptionConfiguration , map [string ]interface {}{
2389
- "rule" : rules ,
2390
- })
2391
- return encryptionConfiguration
2334
+
2335
+ return results
2392
2336
}
2393
2337
2394
2338
func flattenBucketReplicationConfiguration (r * s3.ReplicationConfiguration ) []map [string ]interface {} {
0 commit comments