具有公共访问权限的AWS Go SDK S3上传

New*_*Dev 4 amazon-s3 go aws-sdk

我一直在尝试通过公共访问将对象上传到S3,但是我无法做到这一点。

我收到此错误: InvalidArgument: Argument format not recognized status code: 400

这是我的代码:

bucketName := "test-bucket"
key2 := "test.zip"
upParams := &s3manager.UploadInput{
    Bucket: &bucketName,
    Key:    &key2,
    Body:   response.Body,
    GrantRead: aws.String("uri:http://acs.amazonaws.com/groups/global/AllUsers"),
}

sess := session.Must(session.NewSession())

uploader := s3manager.NewUploader(sess)

_, err = uploader.Upload(upParams)
Run Code Online (Sandbox Code Playgroud)

Vor*_*ung 7

尝试使用ACL:“公开阅读”

bucketName := "test-bucket"
key2 := "test.zip"
upParams := &s3manager.UploadInput{
    Bucket: &bucketName,
    Key:    &key2,
    Body:   response.Body,
    ACL: "public-read",
}

sess := session.Must(session.NewSession())

uploader := s3manager.NewUploader(sess)

_, err = uploader.Upload(upParams)
Run Code Online (Sandbox Code Playgroud)

  • 截至 2020 年 9 月,我相信 SDK 已更改为在许多情况下期望传递 `aws.String(...)`。所以这里是 `aws.String("public-read")` (2认同)