能否为AWS Go SDK服务调用配置自定义重试次数
问题解答
可以通过配置retry对象完全可以将AWS Go SDK服务调用的最大重试次数设置为5次,不同版本的SDK配置方式如下:
AWS Go SDK v2 配置方式
v2是当前官方主推的版本,可在加载全局配置时指定重试规则即可:
- 导入
github.com/aws/aws-sdk-go-v2/aws/retry依赖包 - 初始化配置时通过
config.WithRetryer自定义重试器的最大尝试次数
示例代码:
import ( "context" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/aws/retry" ) // 加载配置时设置最大重试次数为5 cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRetryer(func() retry.Retryer { return retry.NewStandard(func(o *retry.StandardOptions) { o.MaxAttempts = 5 }) }), ) if err != nil { // 错误处理逻辑 }
如果仅需要对单个服务客户端生效,也可以在初始化对应服务客户端时单独传入重试配置。
AWS Go SDK v1 配置方式
v1版本可直接通过aws.Config的MaxRetries字段设置:
示例代码:
import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" ) // 初始化会话时设置最大重试次数为5 sess := session.Must(session.NewSession(&aws.Config{ Region: aws.String("us-east-1"), MaxRetries: aws.Int(5), }))
注意事项
- 自定义的重试配置仅对使用当前配置生成的服务客户端生效,不会修改SDK全局默认重试规则
- 部分AWS服务存在特定的不可重试错误类型,设置的最大重试次数仅对符合默认重试条件的错误生效
内容的提问来源于stack exchange,提问作者Riya John
相关产品推荐
相关产品推荐

