上载S3对象时拒绝访问

时间:2019-11-11 09:22:32

标签: javascript amazon-web-services amazon-s3

我正在按照this教程从S3添加/列出对象。

起初,由于Access Denied错误,我在列出对象时遇到了问题,因此我发现必须向<创建的角色添加其他权限s3:ListBucket和资源arn:aws:s3:::my-bucket。 strong>认知取消身份验证用户:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ]
        }
    ]
}

现在,当我尝试上传文件时,我得到另一个Access Denied

我做错了还是本教程有很多错误?

其他检查:

  • 存储桶有CORS
  • 创建后,我没有更改存储桶的任何权限(所有设置均为默认值)
  • 我正在使用正确的Cognito身份池ID(我可以列出albmus)
  • 我可以删除相册
  • 发生Access Denied错误之后,我可以看到在cognito取消身份验证中存在新的身份,因此脚本可以正常工作。
  • 存储桶(我)的所有者对存储桶具有读/写访问权限

2 个答案:

答案 0 :(得分:0)

在策略中添加IAM角色,这将使用户能够使用API​​或通过控制台上传任何文件。

{
    "Version": "2012-10-17",
    "Id": "1",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::777777:user/myuser"
                 ]
            },
            "Action": [
                "s3:ListBucket",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:GetObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::bucketname/*",
                "arn:aws:s3::: bucketname"
            ]
        }
}

答案 1 :(得分:0)

我不确定cognito在内部如何工作,它可能正在使用s3对象的ACL。因此,添加json_decodes3:PutObjectAcl操作访问权限可能会有所帮助。此外,如果您的代码正在分段上传到S3,则应考虑添加s3:GetObjectAcl操作访问权限。 s3:ListBucketMultipartUploads操作已经添加了启动分段上传上传分段完成分段上传的权限。