使用 .NET 将对象 PublicRead 上传到 Amazon S3

Issue uploading object PublicRead to Amazon S3 using .NET

我在将 PublicRead 对象上传到 Amazon S3 公司存储桶时遇到问题。

我有一个个人 Amazon S3 帐户,我可以使用下面的代码使用 S3CannedACL.PublicRead 上传到我创建的私有存储桶,但是当我尝试使用公司存储桶执行此操作时,出现拒绝访问错误.如果我删除 S3CannedACL.PublicRead 我可以将对象上传到这个公司存储桶,我也可以在上传后删除和下载但我无法通过 public URL 访问对象,我需要这样做。

        var amazonFileName = Guid.NewGuid();

        var request = new PutObjectRequest()
        {
            BucketName = _amazonBucketName,
            InputStream = fileStream,
            Key = amazonFileName.ToString(),
            CannedACL = S3CannedACL.PublicRead
        };

        var result = _amazonClient.PutObject(request);

似乎缺少权限或类似问题,但我无权访问此公司帐户,因此很难弄清楚那里发生了什么。在我的个人帐户中,我只需要创建存储桶。

有人知道这个公司 bucket/account 缺少什么来允许上传 PublicRead 对象吗?

这是由于对关联的 AWS 凭据没有正确的权限造成的。具体来说,您需要获得 s3:PutObjectAcl 的许可。这可以在 IAM 中配置。

希望对您有所帮助!