@@ -557,38 +557,40 @@ func ResourceBucket() *schema.Resource {
557
557
},
558
558
559
559
"server_side_encryption_configuration" : {
560
- Type : schema .TypeList ,
561
- MaxItems : 1 ,
562
- Optional : true ,
560
+ Type : schema .TypeList ,
561
+ Computed : true ,
562
+ Deprecated : "Use the aws_s3_bucket_server_side_encryption_configuration resource instead" ,
563
563
Elem : & schema.Resource {
564
564
Schema : map [string ]* schema.Schema {
565
565
"rule" : {
566
- Type : schema .TypeList ,
567
- MaxItems : 1 ,
568
- Required : true ,
566
+ Type : schema .TypeList ,
567
+ Computed : true ,
568
+ Deprecated : "Use the aws_s3_bucket_server_side_encryption_configuration resource instead" ,
569
569
Elem : & schema.Resource {
570
570
Schema : map [string ]* schema.Schema {
571
571
"apply_server_side_encryption_by_default" : {
572
- Type : schema .TypeList ,
573
- MaxItems : 1 ,
574
- Required : true ,
572
+ Type : schema .TypeList ,
573
+ Computed : true ,
574
+ Deprecated : "Use the aws_s3_bucket_server_side_encryption_configuration resource instead" ,
575
575
Elem : & schema.Resource {
576
576
Schema : map [string ]* schema.Schema {
577
577
"kms_master_key_id" : {
578
- Type : schema .TypeString ,
579
- Optional : true ,
578
+ Type : schema .TypeString ,
579
+ Computed : true ,
580
+ Deprecated : "Use the aws_s3_bucket_server_side_encryption_configuration resource instead" ,
580
581
},
581
582
"sse_algorithm" : {
582
- Type : schema .TypeString ,
583
- Required : true ,
584
- ValidateFunc : validation . StringInSlice ( s3 . ServerSideEncryption_Values (), false ) ,
583
+ Type : schema .TypeString ,
584
+ Computed : true ,
585
+ Deprecated : "Use the aws_s3_bucket_server_side_encryption_configuration resource instead" ,
585
586
},
586
587
},
587
588
},
588
589
},
589
590
"bucket_key_enabled" : {
590
- Type : schema .TypeBool ,
591
- Optional : true ,
591
+ Type : schema .TypeBool ,
592
+ Computed : true ,
593
+ Deprecated : "Use the aws_s3_bucket_server_side_encryption_configuration resource instead" ,
592
594
},
593
595
},
594
596
},
@@ -788,12 +790,6 @@ func resourceBucketUpdate(d *schema.ResourceData, meta interface{}) error {
788
790
}
789
791
}
790
792
791
- if d .HasChange ("server_side_encryption_configuration" ) {
792
- if err := resourceBucketInternalServerSideEncryptionConfigurationUpdate (conn , d ); err != nil {
793
- return err
794
- }
795
- }
796
-
797
793
if d .HasChange ("object_lock_configuration" ) {
798
794
if err := resourceBucketInternalObjectLockConfigurationUpdate (conn , d ); err != nil {
799
795
return err
@@ -1181,16 +1177,16 @@ func resourceBucketRead(d *schema.ResourceData, meta interface{}) error {
1181
1177
Bucket : aws .String (d .Id ()),
1182
1178
})
1183
1179
})
1184
- if err != nil && ! tfawserr .ErrMessageContains (err , "ServerSideEncryptionConfigurationNotFoundError" , "encryption configuration was not found" ) {
1185
- return fmt .Errorf ("error getting S3 Bucket encryption: %s " , err )
1180
+ if err != nil && ! tfawserr .ErrMessageContains (err , ErrCodeServerSideEncryptionConfigurationNotFound , "encryption configuration was not found" ) {
1181
+ return fmt .Errorf ("error getting S3 Bucket encryption: %w " , err )
1186
1182
}
1187
1183
1188
- serverSideEncryptionConfiguration := make ([] map [ string ] interface {}, 0 )
1189
- if encryption , ok := encryptionResponse .( * s3. GetBucketEncryptionOutput ); ok && encryption .ServerSideEncryptionConfiguration != nil {
1190
- serverSideEncryptionConfiguration = flattenServerSideEncryptionConfiguration ( encryption . ServerSideEncryptionConfiguration )
1191
- }
1192
- if err := d . Set ( "server_side_encryption_configuration" , serverSideEncryptionConfiguration ); err != nil {
1193
- return fmt . Errorf ( "error setting server_side_encryption_configuration: %s " , err )
1184
+ if encryption , ok := encryptionResponse .( * s3. GetBucketEncryptionOutput ); ok {
1185
+ if err := d . Set ( "server_side_encryption_configuration" , flattenServerSideEncryptionConfiguration ( encryption .ServerSideEncryptionConfiguration )); err != nil {
1186
+ return fmt . Errorf ( "error setting server_side_encryption_configuration: %w" , err )
1187
+ }
1188
+ } else {
1189
+ d . Set ( " server_side_encryption_configuration" , nil )
1194
1190
}
1195
1191
1196
1192
// Object Lock configuration.
@@ -1583,73 +1579,6 @@ func resourceBucketInternalVersioningUpdate(conn *s3.S3, bucket string, versioni
1583
1579
return nil
1584
1580
}
1585
1581
1586
- func resourceBucketInternalServerSideEncryptionConfigurationUpdate (conn * s3.S3 , d * schema.ResourceData ) error {
1587
- bucket := d .Get ("bucket" ).(string )
1588
- serverSideEncryptionConfiguration := d .Get ("server_side_encryption_configuration" ).([]interface {})
1589
- if len (serverSideEncryptionConfiguration ) == 0 {
1590
- log .Printf ("[DEBUG] Delete server side encryption configuration: %#v" , serverSideEncryptionConfiguration )
1591
- i := & s3.DeleteBucketEncryptionInput {
1592
- Bucket : aws .String (bucket ),
1593
- }
1594
-
1595
- _ , err := conn .DeleteBucketEncryption (i )
1596
- if err != nil {
1597
- return fmt .Errorf ("error removing S3 bucket server side encryption: %s" , err )
1598
- }
1599
- return nil
1600
- }
1601
-
1602
- c := serverSideEncryptionConfiguration [0 ].(map [string ]interface {})
1603
-
1604
- rc := & s3.ServerSideEncryptionConfiguration {}
1605
-
1606
- rcRules := c ["rule" ].([]interface {})
1607
- var rules []* s3.ServerSideEncryptionRule
1608
- for _ , v := range rcRules {
1609
- rr := v .(map [string ]interface {})
1610
- rrDefault := rr ["apply_server_side_encryption_by_default" ].([]interface {})
1611
- sseAlgorithm := rrDefault [0 ].(map [string ]interface {})["sse_algorithm" ].(string )
1612
- kmsMasterKeyId := rrDefault [0 ].(map [string ]interface {})["kms_master_key_id" ].(string )
1613
- rcDefaultRule := & s3.ServerSideEncryptionByDefault {
1614
- SSEAlgorithm : aws .String (sseAlgorithm ),
1615
- }
1616
- if kmsMasterKeyId != "" {
1617
- rcDefaultRule .KMSMasterKeyID = aws .String (kmsMasterKeyId )
1618
- }
1619
- rcRule := & s3.ServerSideEncryptionRule {
1620
- ApplyServerSideEncryptionByDefault : rcDefaultRule ,
1621
- }
1622
-
1623
- if val , ok := rr ["bucket_key_enabled" ].(bool ); ok {
1624
- rcRule .BucketKeyEnabled = aws .Bool (val )
1625
- }
1626
-
1627
- rules = append (rules , rcRule )
1628
- }
1629
-
1630
- rc .Rules = rules
1631
- i := & s3.PutBucketEncryptionInput {
1632
- Bucket : aws .String (bucket ),
1633
- ServerSideEncryptionConfiguration : rc ,
1634
- }
1635
- log .Printf ("[DEBUG] S3 put bucket replication configuration: %#v" , i )
1636
-
1637
- _ , err := tfresource .RetryWhenAWSErrCodeEquals (
1638
- propagationTimeout ,
1639
- func () (interface {}, error ) {
1640
- return conn .PutBucketEncryption (i )
1641
- },
1642
- s3 .ErrCodeNoSuchBucket ,
1643
- ErrCodeOperationAborted ,
1644
- )
1645
-
1646
- if err != nil {
1647
- return fmt .Errorf ("error putting S3 server side encryption configuration: %s" , err )
1648
- }
1649
-
1650
- return nil
1651
- }
1652
-
1653
1582
func resourceBucketInternalObjectLockConfigurationUpdate (conn * s3.S3 , d * schema.ResourceData ) error {
1654
1583
// S3 Object Lock configuration cannot be deleted, only updated.
1655
1584
req := & s3.PutObjectLockConfigurationInput {
@@ -1843,24 +1772,41 @@ func flattenBucketLoggingEnabled(loggingEnabled *s3.LoggingEnabled) []interface{
1843
1772
return []interface {}{m }
1844
1773
}
1845
1774
1846
- func flattenServerSideEncryptionConfiguration (c * s3.ServerSideEncryptionConfiguration ) []map [string ]interface {} {
1847
- var encryptionConfiguration []map [string ]interface {}
1848
- rules := make ([]interface {}, 0 , len (c .Rules ))
1849
- for _ , v := range c .Rules {
1850
- if v .ApplyServerSideEncryptionByDefault != nil {
1851
- r := make (map [string ]interface {})
1852
- d := make (map [string ]interface {})
1853
- d ["kms_master_key_id" ] = aws .StringValue (v .ApplyServerSideEncryptionByDefault .KMSMasterKeyID )
1854
- d ["sse_algorithm" ] = aws .StringValue (v .ApplyServerSideEncryptionByDefault .SSEAlgorithm )
1855
- r ["apply_server_side_encryption_by_default" ] = []map [string ]interface {}{d }
1856
- r ["bucket_key_enabled" ] = aws .BoolValue (v .BucketKeyEnabled )
1857
- rules = append (rules , r )
1858
- }
1859
- }
1860
- encryptionConfiguration = append (encryptionConfiguration , map [string ]interface {}{
1861
- "rule" : rules ,
1862
- })
1863
- return encryptionConfiguration
1775
+ func flattenServerSideEncryptionConfiguration (c * s3.ServerSideEncryptionConfiguration ) []interface {} {
1776
+ if c == nil {
1777
+ return []interface {}{}
1778
+ }
1779
+
1780
+ m := map [string ]interface {}{
1781
+ "rule" : flattenServerSideEncryptionConfigurationRules (c .Rules ),
1782
+ }
1783
+
1784
+ return []interface {}{m }
1785
+ }
1786
+
1787
+ func flattenServerSideEncryptionConfigurationRules (rules []* s3.ServerSideEncryptionRule ) []interface {} {
1788
+ var results []interface {}
1789
+
1790
+ for _ , rule := range rules {
1791
+ m := make (map [string ]interface {})
1792
+
1793
+ if rule .BucketKeyEnabled != nil {
1794
+ m ["bucket_key_enabled" ] = aws .BoolValue (rule .BucketKeyEnabled )
1795
+ }
1796
+
1797
+ if rule .ApplyServerSideEncryptionByDefault != nil {
1798
+ m ["apply_server_side_encryption_by_default" ] = []interface {}{
1799
+ map [string ]interface {}{
1800
+ "kms_master_key_id" : aws .StringValue (rule .ApplyServerSideEncryptionByDefault .KMSMasterKeyID ),
1801
+ "sse_algorithm" : aws .StringValue (rule .ApplyServerSideEncryptionByDefault .SSEAlgorithm ),
1802
+ },
1803
+ }
1804
+ }
1805
+
1806
+ results = append (results , m )
1807
+ }
1808
+
1809
+ return results
1864
1810
}
1865
1811
1866
1812
func flattenBucketCorsRules (rules []* s3.CORSRule ) []interface {} {
0 commit comments