作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我的服务使用 AWS S3 go sdk 将一个对象上传到 aws 帐户说 ACT1,我想授予不同子帐户 ACT2 的读取权限,以便它可以读取成功上传后的对象。这是代码的样子
var canonicalIDOfSubAccount = "abcd09kialjf1124"
// Upload attempts to upload a file at a particular key.
func (s *client) Upload(ctx context.Context, bucket, key string, body io.Reader) (err error) {
defer func() {
if r := recover(); r != nil {
logging.Error("s3", "panic recovered. err: %v", r)
}
}()
params := &s3manager.UploadInput{
Bucket: aws.String(bucket),
Key: aws.String(key),
Body: body,
GrantRead: aws.String(canonicalIDOfSubAccount),
}
// Perform an upload.
_, err = s.uploader.UploadWithContext(ctx, params)
if err != nil {
fmt.Println("Error is ", err.Error(), err)
}
return
}
执行时,aws 抛出错误InvalidArgument:参数格式无法识别状态 400
没有 GrantRead,上传工作正常,但 ACT2 无法读取对象。
在咨询 AWS 支持时,他们说提供规范 ID 是 header GrantRead 的正确值。
最佳答案
找出正确使用它的方法:
提供canonical id时,正确的做法是:
params := &s3manager.UploadInput{
Bucket: aws.String(bucket),
Key: aws.String(key),
Body: body,
GrantRead: aws.String("id=" + canonicalIDOfSubAccount),
}
关于go - 用 GrantRead 写一个 S3 对象给 400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55294839/
我的服务使用 AWS S3 go sdk 将一个对象上传到 aws 帐户说 ACT1,我想授予不同子帐户 ACT2 的读取权限,以便它可以读取成功上传后的对象。这是代码的样子 var canonica
我是一名优秀的程序员,十分优秀!