diff --git a/physical/dynamodb/dynamodb.go b/physical/dynamodb/dynamodb.go index bd12c47d45a3..eaa36afb0899 100644 --- a/physical/dynamodb/dynamodb.go +++ b/physical/dynamodb/dynamodb.go @@ -183,6 +183,19 @@ func NewDynamoDBBackend(conf map[string]string, logger log.Logger) (physical.Bac } } + dynamodbMaxRetryString := os.Getenv("AWS_DYNAMODB_MAX_RETRIES") + if dynamodbMaxRetryString == "" { + dynamodbMaxRetryString = conf["dynamodb_max_retries"] + } + var dynamodbMaxRetry int = aws.UseServiceDefaultRetries + if dynamodbMaxRetryString != "" { + var err error + dynamodbMaxRetry, err = strconv.Atoi(dynamodbMaxRetryString) + if err != nil { + return nil, fmt.Errorf("invalid max retry: %s", dynamodbMaxRetryString) + } + } + credsConfig := &awsutil.CredentialsConfig{ AccessKey: accessKey, SecretKey: secretKey, @@ -202,7 +215,8 @@ func NewDynamoDBBackend(conf map[string]string, logger log.Logger) (physical.Bac WithEndpoint(endpoint). WithHTTPClient(&http.Client{ Transport: pooledTransport, - }) + }). + WithMaxRetries(dynamodbMaxRetry) client := dynamodb.New(session.New(awsConf)) if err := ensureTableExists(client, table, readCapacity, writeCapacity); err != nil {