gpt4 book ai didi

go - 用 GrantRead 写一个 S3 对象给 400

转载 作者:数据小太阳 更新时间:2023-10-29 03:09:07 25 4
gpt4 key购买 nike

我的服务使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com