ios - 拒绝访问具有相同 IAM、Cognito 和权限配置的新存储桶

标签 ios amazon-web-services amazon-s3 aws-sdk amazon-cognito

在上个月,我成功地将 Cognito 与 iOS SDK 结合使用,在我的应用程序中从 s3 存储桶上传和下载文件。我最近创建了一个新的存储桶来存储文件,但我突然无法下载任何东西(尽管上传继续工作)。我收到此错误:

Error downloading from S3: Error Domain=com.amazonaws.AWSS3ErrorDomain
Code=1 "The operation couldn’t be completed. 
(com.amazonaws.AWSS3ErrorDomain error 1.)" UserInfo=0x157da330 
{HostId=xlPbd8nAQvYPesh0JZ5yH7LFuV562FK85qd5MEgg3DNXn9U0m1K6e8kji
CsC4NXf, Code=AccessDenied, Message=Access Denied,   
RequestId=EF39DF70A50540EA}

我使用与旧存储桶完全相同的配置,新存储桶的名称在需要的地方进行了更改。

这是我一直在使用的 Unauth IAM 政策:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "mobileanalytics:PutEvent",
        "cognito-sync:*"
      ],
      "Resource": [
        "*"
      ]
    },
    {
       "Action": [
         "s3:GetObject",
         "s3:PutObject"
       ],
       "Effect": "Allow",
       "Resource": [
         "*"
       ]
     }
  ]
}

这是我的存储桶策略:

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::bucket_name/*"
        }
    ]
}

新桶和旧桶是同一个区域。现在,我完全不知道仅仅更改为新存储桶会发生什么变化(以及为什么上传有效,但下载无效)。如果相关,我的文件现在存储在存储桶的子目录中,但我已经更新了客户端上的所有 key 字符串。非常感谢您的帮助。

最佳答案

我看到您在 IAM 策略中的资源设置为 *。尝试在您的 IAM 策略中明确说明资源

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

关于ios - 拒绝访问具有相同 IAM、Cognito 和权限配置的新存储桶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28914927/

相关文章:

ios - 文档选择器 Controller 的多项选择

javascript - 显示 AWS(Amazon Web 服务)中 DynamoDB 的整个表

ios - AWS Cognito : Problems logging back in immediately after logging out

Nginx 在浏览器中提供 S3 文件的内容

ruby-on-rails - 如何在 Rails 5.x.x 应用程序中以 Zip 格式从 S3 下载多个文件?

ios - 谷歌分析实时不工作

multithreading - 在后台和主线程 ios 中执行

ios - UIBarButton 的点击事件如何处理

node.js - 无法部署 NodeJS AWS Lambda 函数。 Object.fs.openSync 错误

PHP Laravel 异步上传文件到AWS S3