@@ -245,77 +245,77 @@ func IsS3Err(err error, code string, message string) bool {
245245
246246func flattenObjectBucketVersioning (versioningResponse * s3.GetBucketVersioningOutput ) []map [string ]interface {} {
247247 vcl := []map [string ]interface {}{{}}
248- vcl [0 ]["enabled" ] = versioningResponse .Status != nil && * versioningResponse . Status == s3 .BucketVersioningStatusEnabled
248+ vcl [0 ]["enabled" ] = versioningResponse .Status == s3Types .BucketVersioningStatusEnabled
249249 return vcl
250250}
251251
252- func expandObjectBucketVersioning (v []interface {}) * s3 .VersioningConfiguration {
253- vc := & s3 .VersioningConfiguration {}
254- vc .Status = scw . StringPtr ( s3 . BucketVersioningStatusSuspended )
252+ func expandObjectBucketVersioning (v []interface {}) * s3Types .VersioningConfiguration {
253+ vc := & s3Types .VersioningConfiguration {}
254+ vc .Status = s3Types . BucketVersioningStatusSuspended
255255 if len (v ) > 0 {
256256 if c := v [0 ].(map [string ]interface {}); c ["enabled" ].(bool ) {
257- vc .Status = scw . StringPtr ( s3 . BucketVersioningStatusEnabled )
257+ vc .Status = s3Types . BucketVersioningStatusEnabled
258258 }
259259 }
260260 return vc
261261}
262262
263- func flattenBucketCORS (corsResponse interface {}) []map [string ]interface {} {
264- corsRules := make ([]map [string ]interface {}, 0 )
263+ func flattenBucketCORS (corsResponse interface {}) []interface {} {
265264 if cors , ok := corsResponse .(* s3.GetBucketCorsOutput ); ok && len (cors .CORSRules ) > 0 {
266- corsRules = make ([] map [ string ] interface {}, 0 , len ( cors . CORSRules ))
265+ var corsRules [] interface {}
267266 for _ , ruleObject := range cors .CORSRules {
268- rule := make (map [string ]interface {})
269- rule ["allowed_headers" ] = types .FlattenSliceStringPtr (ruleObject .AllowedHeaders )
270- rule ["allowed_methods" ] = types .FlattenSliceStringPtr (ruleObject .AllowedMethods )
271- rule ["allowed_origins" ] = types .FlattenSliceStringPtr (ruleObject .AllowedOrigins )
272- // Both the "ExposeHeaders" and "MaxAgeSeconds" might not be set.
273- if ruleObject .AllowedOrigins != nil {
274- rule ["expose_headers" ] = types .FlattenSliceStringPtr (ruleObject .ExposeHeaders )
267+ rule := map [string ]interface {}{}
268+ if len (ruleObject .AllowedHeaders ) > 0 {
269+ rule ["allowed_headers" ] = ruleObject .AllowedHeaders
270+ }
271+ if len (ruleObject .AllowedMethods ) > 0 {
272+ rule ["allowed_methods" ] = ruleObject .AllowedMethods
273+ }
274+ if len (ruleObject .AllowedOrigins ) > 0 {
275+ rule ["allowed_origins" ] = ruleObject .AllowedOrigins
276+ }
277+ if len (ruleObject .ExposeHeaders ) > 0 {
278+ rule ["expose_headers" ] = ruleObject .ExposeHeaders
275279 }
276280 if ruleObject .MaxAgeSeconds != nil {
277- rule ["max_age_seconds" ] = int ( * ruleObject .MaxAgeSeconds )
281+ rule ["max_age_seconds" ] = ruleObject .MaxAgeSeconds
278282 }
279283 corsRules = append (corsRules , rule )
280284 }
285+ return corsRules
281286 }
282- return corsRules
287+ return nil
283288}
284289
285- func expandBucketCORS (ctx context.Context , rawCors []interface {}, bucket string ) []* s3Types.CORSRule {
286- rules := make ([]* s3Types.CORSRule , 0 , len (rawCors ))
290+ func expandBucketCORS (ctx context.Context , rawCors []interface {}, bucket string ) []s3Types.CORSRule {
291+ if rawCors == nil {
292+ return nil
293+ }
294+ var rules []s3Types.CORSRule
287295 for _ , cors := range rawCors {
288296 corsMap := cors .(map [string ]interface {})
289- r := & s3Types.CORSRule {}
297+ rule := s3Types.CORSRule {}
290298 for k , v := range corsMap {
291299 tflog .Debug (ctx , fmt .Sprintf ("S3 bucket: %s, put CORS: %#v, %#v" , bucket , k , v ))
292- if k == "max_age_seconds" {
293- r .MaxAgeSeconds = scw .Int64Ptr (int64 (v .(int )))
294- } else {
295- vMap := make ([]* string , len (v .([]interface {})))
296- for i , vv := range v .([]interface {}) {
297- if str , ok := vv .(string ); ok {
298- vMap [i ] = scw .StringPtr (str )
299- }
300- }
301- switch k {
302- case "allowed_headers" :
303- r .AllowedHeaders = vMap
304- case "allowed_methods" :
305- r .AllowedMethods = vMap
306- case "allowed_origins" :
307- r .AllowedOrigins = vMap
308- case "expose_headers" :
309- r .ExposeHeaders = vMap
310- }
300+ switch k {
301+ case "allowed_headers" :
302+ rule .AllowedHeaders = v .([]string )
303+ case "allowed_methods" :
304+ rule .AllowedMethods = v .([]string )
305+ case "allowed_origins" :
306+ rule .AllowedOrigins = v .([]string )
307+ case "expose_headers" :
308+ rule .ExposeHeaders = v .([]string )
309+ case "max_age_seconds" :
310+ rule .MaxAgeSeconds = scw .Int32Ptr (int32 (v .(int )))
311311 }
312+ rules = append (rules , rule )
312313 }
313- rules = append (rules , r )
314314 }
315315 return rules
316316}
317317
318- func deleteS3ObjectVersion (conn * s3.Client , bucketName string , key string , versionID string , force bool ) error {
318+ func deleteS3ObjectVersion (ctx context. Context , conn * s3.Client , bucketName string , key string , versionID string , force bool ) error {
319319 input := & s3.DeleteObjectInput {
320320 Bucket : scw .StringPtr (bucketName ),
321321 Key : scw .StringPtr (key ),
@@ -327,14 +327,14 @@ func deleteS3ObjectVersion(conn *s3.Client, bucketName string, key string, versi
327327 input .BypassGovernanceRetention = scw .BoolPtr (force )
328328 }
329329
330- _ , err := conn .DeleteObject (input )
330+ _ , err := conn .DeleteObject (ctx , input )
331331 return err
332332}
333333
334334// removeS3ObjectVersionLegalHold remove legal hold from an ObjectVersion if it is on
335335// returns true if legal hold was removed
336- func removeS3ObjectVersionLegalHold (conn * s3.Client , bucketName string , objectVersion * s3 .ObjectVersion ) (bool , error ) {
337- objectHead , err := conn .HeadObject (& s3.HeadObjectInput {
336+ func removeS3ObjectVersionLegalHold (ctx context. Context , conn * s3.Client , bucketName string , objectVersion * s3Types .ObjectVersion ) (bool , error ) {
337+ objectHead , err := conn .HeadObject (ctx , & s3.HeadObjectInput {
338338 Bucket : scw .StringPtr (bucketName ),
339339 Key : objectVersion .Key ,
340340 VersionId : objectVersion .VersionId ,
@@ -343,15 +343,15 @@ func removeS3ObjectVersionLegalHold(conn *s3.Client, bucketName string, objectVe
343343 err = fmt .Errorf ("failed to get S3 object meta data: %s" , err )
344344 return false , err
345345 }
346- if aws . StringValue ( objectHead .ObjectLockLegalHoldStatus ) != s3 .ObjectLockLegalHoldStatusOn {
346+ if objectHead .ObjectLockLegalHoldStatus != s3Types .ObjectLockLegalHoldStatusOn {
347347 return false , nil
348348 }
349- _ , err = conn .PutObjectLegalHold (& s3.PutObjectLegalHoldInput {
349+ _ , err = conn .PutObjectLegalHold (ctx , & s3.PutObjectLegalHoldInput {
350350 Bucket : scw .StringPtr (bucketName ),
351351 Key : objectVersion .Key ,
352352 VersionId : objectVersion .VersionId ,
353- LegalHold : & s3 .ObjectLockLegalHold {
354- Status : scw . StringPtr ( s3 . ObjectLockLegalHoldStatusOff ) ,
353+ LegalHold : & s3Types .ObjectLockLegalHold {
354+ Status : s3Types . ObjectLockLegalHoldStatusOff ,
355355 },
356356 })
357357 if err != nil {
@@ -377,18 +377,18 @@ func deleteS3ObjectVersions(ctx context.Context, conn *s3.Client, bucketName str
377377
378378 for _ , objectVersion := range page .Versions {
379379 pool .AddTask (func () error {
380- objectKey := aws .StringValue (objectVersion .Key )
381- objectVersionID := aws .StringValue (objectVersion .VersionId )
382- err := deleteS3ObjectVersion (conn , bucketName , objectKey , objectVersionID , force )
380+ objectKey := aws .ToString (objectVersion .Key )
381+ objectVersionID := aws .ToString (objectVersion .VersionId )
382+ err := deleteS3ObjectVersion (ctx , conn , bucketName , objectKey , objectVersionID , force )
383383
384384 if IsS3Err (err , ErrCodeAccessDenied , "" ) && force {
385- legalHoldRemoved , errLegal := removeS3ObjectVersionLegalHold (conn , bucketName , objectVersion )
385+ legalHoldRemoved , errLegal := removeS3ObjectVersionLegalHold (ctx , conn , bucketName , objectVersion )
386386 if errLegal != nil {
387387 return fmt .Errorf ("failed to remove legal hold: %s" , errLegal )
388388 }
389389
390390 if legalHoldRemoved {
391- err = deleteS3ObjectVersion (conn , bucketName , objectKey , objectVersionID , force )
391+ err = deleteS3ObjectVersion (ctx , conn , bucketName , objectKey , objectVersionID , force )
392392 }
393393 }
394394
@@ -420,9 +420,9 @@ func deleteS3ObjectVersions(ctx context.Context, conn *s3.Client, bucketName str
420420
421421 for _ , deleteMarkerEntry := range page .DeleteMarkers {
422422 pool .AddTask (func () error {
423- deleteMarkerKey := aws .StringValue (deleteMarkerEntry .Key )
424- deleteMarkerVersionsID := aws .StringValue (deleteMarkerEntry .VersionId )
425- err := deleteS3ObjectVersion (conn , bucketName , deleteMarkerKey , deleteMarkerVersionsID , force )
423+ deleteMarkerKey := aws .ToString (deleteMarkerEntry .Key )
424+ deleteMarkerVersionsID := aws .ToString (deleteMarkerEntry .VersionId )
425+ err := deleteS3ObjectVersion (ctx , conn , bucketName , deleteMarkerKey , deleteMarkerVersionsID , force )
426426 if err != nil {
427427 return fmt .Errorf ("failed to delete S3 object delete marker: %s" , err )
428428 }
@@ -572,7 +572,7 @@ func NormalizeOwnerID(id *string) *string {
572572
573573func addReadBucketErrorDiagnostic (diags * diag.Diagnostics , err error , resource string , awsResourceNotFoundCode string ) (bucketFound bool , resourceFound bool ) {
574574 switch {
575- case IsS3Err (err , s3 . ErrCodeNoSuchBucket , "" ):
575+ case IsS3Err (err , s3Types . errCodeNoSuchBucket , "" ):
576576 * diags = append (* diags , diag.Diagnostic {
577577 Severity : diag .Warning ,
578578 Summary : "Bucket not found" ,
0 commit comments