具有公共读取权限的AWS S3 putobject - .Net SDK

Sum*_*ngi 6 permissions amazon-s3

我正在使用.Net SDK for AWS.

我想将一个文件放入S3并使其内容可以公开读取,我看到我可以使用"Grants"属性来执行此操作,但是我无法在某些字段的联机文档中找到值输入.

var request = new PutObjectRequest()
{
BucketName = "some-bucket",
Key = fileName,
FilePath = filePath,
StorageClass = new S3StorageClass("REDUCED_REDUNDANCY"),
ContentType = "text/csv",
Grants = new List<S3Grant>() {
new S3Grant() {
Grantee = new S3Grantee()
{
CanonicalUser = "Everyone",
DisplayName = "Everyone"
},
Permission = new S3Permission("open/download")}}
};
Run Code Online (Sandbox Code Playgroud)

在上面的请求中:

1)受助人"Everyone"只是我的猜测,那里的有效值应该是多少?

2)对于S3Permission,什么是相当于我的"开放/下载"猜测的有效值?

我知道我必须在桶级别向公众开放列表权限,我可以通过控制台做任何事情,我似乎无法找到有效的API请求参数.

Sum*_*ngi 11

我在AWS论坛得到了答案@ https://forums.aws.amazon.com/message.jspa?messageID=671223

为了方便起见,请在此处重新发布:

http://docs.aws.amazon.com/sdkfornet1/latest/apidocs/html/T_Amazon_S3_Model_S3CannedACL.htm

var request = new PutObjectRequest()
{
    BucketName = "some-bucket",
    Key = fileName,
    FilePath = filePath,
    StorageClass = new S3StorageClass("REDUCED_REDUNDANCY"),
    ContentType = "text/csv",
    CannedACL = S3CannedACL.PublicRead
};
Run Code Online (Sandbox Code Playgroud)

这将上传文件,并使用公共读取权限进行设置.

如果您收到"拒绝访问"错误,请确保您的IAM策略中具有"PutObjectAcl"权限.


Fuz*_*uzz 9

对于仍在寻找答案的任何人,添加ACL:'public-read'属性即可解决问题。

      s3.putObject({ 
              BucketName = "some-bucket",
              Key = fileName,
              FilePath = filePath,
              ACL:'public-read'
      }
Run Code Online (Sandbox Code Playgroud)