diff --git a/.changelog/35861.txt b/.changelog/35861.txt new file mode 100644 index 00000000000..645eac267ca --- /dev/null +++ b/.changelog/35861.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_sqs_queue_policy: Retry IAM eventual consistency errors +``` \ No newline at end of file diff --git a/internal/service/sqs/attribute_funcs.go b/internal/service/sqs/attribute_funcs.go index 291cfd619b7..ddbb91c326b 100644 --- a/internal/service/sqs/attribute_funcs.go +++ b/internal/service/sqs/attribute_funcs.go @@ -43,7 +43,9 @@ func (h *queueAttributeHandler) Upsert(ctx context.Context, d *schema.ResourceDa QueueUrl: aws.String(url), } - _, err = conn.SetQueueAttributes(ctx, input) + _, err = tfresource.RetryWhenAWSErrMessageContains(ctx, propagationTimeout, func() (interface{}, error) { + return conn.SetQueueAttributes(ctx, input) + }, errCodeInvalidAttributeValue, "Invalid value for the parameter Policy") if err != nil { return diag.Errorf("setting SQS Queue (%s) attribute (%s): %s", url, h.AttributeName, err) diff --git a/internal/service/sqs/consts.go b/internal/service/sqs/consts.go index 47ed5224770..ea4200306d0 100644 --- a/internal/service/sqs/consts.go +++ b/internal/service/sqs/consts.go @@ -3,6 +3,12 @@ package sqs +import "time" + +const ( + propagationTimeout = 1 * time.Minute +) + const ( fifoQueueNameSuffix = ".fifo" ) @@ -41,6 +47,7 @@ func fifoThroughputLimit_Values() []string { } const ( - errCodeQueueDoesNotExist = "AWS.SimpleQueueService.NonExistentQueue" - errCodeQueueDeletedRecently = "AWS.SimpleQueueService.QueueDeletedRecently" + errCodeQueueDoesNotExist = "AWS.SimpleQueueService.NonExistentQueue" + errCodeQueueDeletedRecently = "AWS.SimpleQueueService.QueueDeletedRecently" + errCodeInvalidAttributeValue = "InvalidAttributeValue" )