AWS,iOS,我知道,困惑

AWS , iOS, cognito, confusion

我正在开发一个将文件加载到 s3 的应用程序,遵循此示例

https://github.com/awslabs/aws-sdk-ios-samples/tree/master/S3BackgroundTransfer-Sample/Objective-C

自述文件中写着

In the Amazon Cognito console, use Amazon Cognito to create a new identity 
pool. Obtain the PoolID constant. Make sure the role has full permissions for 
the bucket you created.

这让我感到困惑,当我转到 IAM 角色并管理用户时,我看到我可以添加 AmazonS3FullAccess 策略,但我无法指定实际的存储桶名称!! 单击显示策略时,我会弹出此消息

{
 "Version": "2012-10-17",
 "Statement": [
   {
    "Effect": "Allow",
    "Action": "s3:*",
    "Resource": "*"
   }
 ]
}

及其只读。我有一个 s3 存储桶,想确保 IAM 用户可以访问它,但不知道如何在 AWS 网站上进行访问。

好的,在仔细研究之后,我找到了创建自定义策略并更新其中的 s3 存储桶并将其附加到角色的方法。在 IAM 中,在仪表板下转到策略 -> 创建策略 -> 复制 AWS 托管策略(我推荐)并在那里配置它。希望这对其他人有帮助,但仍然认为该站点需要更好地记录。

预配置的 AmazonS3FullAccess 策略提供了对 Amazon S3 的完全访问权限,因此对存储桶名称没有限制。

这是一个限制特定存储桶的策略示例,并且仅当目录名称与用户的 Cognito 用户 ID 匹配时才在 S3 中"directory"。

您使用策略的 Resource 部分限制对特定存储桶/目录/文件的访问。

{
         "Effect": "Allow",
         "Action": [
            "s3:PutObject",
            "s3:GetObject",
            "s3:DeleteObject"
         ],
         "Resource": [
            "arn:aws:s3:::iosdemo-upload/pictures/${cognito-identity.amazonaws.com:sub}/*"
         ]
      }

要了解有关 Amazon S3 策略的更多信息,我建议您完成这些步骤 http://docs.aws.amazon.com/AmazonS3/latest/dev/walkthrough1.html