diff --git a/.changelog/44576.txt b/.changelog/44576.txt new file mode 100644 index 000000000000..dbe1096f08c5 --- /dev/null +++ b/.changelog/44576.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_dynamodb_table: Do not retry on `LimitExceededException` +``` diff --git a/internal/service/dynamodb/service_package.go b/internal/service/dynamodb/service_package.go index 4d1485fb1e9f..c7eb521f3877 100644 --- a/internal/service/dynamodb/service_package.go +++ b/internal/service/dynamodb/service_package.go @@ -22,6 +22,18 @@ func (p *servicePackage) withExtraOptions(ctx context.Context, config map[string return []func(*dynamodb.Options){ func(o *dynamodb.Options) { retryables := []retry.IsErrorRetryable{ + retry.IsErrorRetryableFunc(func(err error) aws.Ternary { + if errs.IsAErrorMessageContains[*awstypes.LimitExceededException](err, "Requested MaxReadRequestUnits for OnDemandThroughput for table exceeds TableMaxReadCapacityUnits") { + return aws.FalseTernary + } + return aws.UnknownTernary // Delegate to configured Retryer. + }), + retry.IsErrorRetryableFunc(func(err error) aws.Ternary { + if errs.IsAErrorMessageContains[*awstypes.LimitExceededException](err, "Requested MaxWriteRequestUnits for OnDemandThroughput for table exceeds TableMaxWriteCapacityUnits") { + return aws.FalseTernary + } + return aws.UnknownTernary // Delegate to configured Retryer. + }), retry.IsErrorRetryableFunc(func(err error) aws.Ternary { if errs.IsAErrorMessageContains[*awstypes.LimitExceededException](err, "Subscriber limit exceeded:") { return aws.TrueTernary