【发布时间】:2021-10-15 01:40:16
【问题描述】:
我试过这个例子:
https://github.com/aws/aws-sdk-go-v2/tree/main/example/service/s3/listObjects
并收到301重定向响应,本例不处理。
我还尝试了似乎自动处理 301 的 aws python SDK。我们如何配置 go aws 客户端像在 python 中一样自动处理 301?
【问题讨论】:
标签: aws-sdk-go
我试过这个例子:
https://github.com/aws/aws-sdk-go-v2/tree/main/example/service/s3/listObjects
并收到301重定向响应,本例不处理。
我还尝试了似乎自动处理 301 的 aws python SDK。我们如何配置 go aws 客户端像在 python 中一样自动处理 301?
【问题讨论】:
标签: aws-sdk-go
Go 库似乎没有自动处理 301 重定向,这可能是件好事。由于出口量大,在不同区域之间获取大量数据可能会很昂贵。
如果您确实想从另一个存储桶获取数据,您应该知道该存储桶的位置。然后创建一个指向正确区域的 S3 客户端并使用它。可以使用manager.GetBucketRegion 确定 S3 存储桶区域:
import "github.com/aws/aws-sdk-go-v2/feature/s3/manager"
import "github.com/aws/aws-sdk-go-v2/service/s3"
cfg, err := config.LoadDefaultConfig(ctx)
if err != nil {
return err
}
s3client := s3.NewFromConfig(cfg)
bucket := "my-bucket"
region, err := manager.GetBucketRegion(ctx, s3client, bucket)
if err != nil {
return err
}
if cfg.Region != region {
regionCfg = cfg.Copy()
regionCfg.Region = region
s3client = s3.NewFromConfig(regionCfg)
}
【讨论】: