【发布时间】:2020-04-01 04:38:16
【问题描述】:
在我的 AWS 项目中,我使用 Cognito 来允许经过身份验证和未经身份验证的用户使用我的 Android 应用程序。我还使用 S3 存储用户可以从应用下载的文件。
这是我的 S3 存储桶的内容:
myS3Bucket:
- folderAll
- folderUserGroup
在该存储桶中,folderAll 包含我的应用程序的每个用户都可以下载的文件,folderUserGroup 包含只能由特定 Cognito 用户组中经过身份验证的用户下载的文件。
folderAll 和folderUserGroup 的文件均不得在应用程序外部下载,例如使用网络浏览器。
我已经配置了一个 Cognito 用户池和身份池,其中包含经过身份验证和未经身份验证的用户的角色,例如经过身份验证的用户角色:
MyIdentityPoolRoleAuthenticated:
Type: AWS::IAM::Role
Properties:
RoleName: my-identity-pool-authenticated
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: 'Allow'
Principal:
Federated: 'cognito-identity.amazonaws.com'
Action:
- 'sts:AssumeRoleWithWebIdentity'
Condition:
StringEquals:
'cognito-identity.amazonaws.com:aud':
Ref: MyIdentityPool
'ForAnyValue:StringLike':
'cognito-identity.amazonaws.com:amr': authenticated
Policies:
- PolicyName: 'MyIdentityPoolRoleAuthenticatedPolicy'
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: 'Allow'
Action:
- 'mobileanalytics:PutEvents'
- 'cognito-sync:*'
- 'cognito-identity:*'
Resource: '*'
- Effect: "Allow"
Action:
- "s3:GetObject"
Resource: "arn:aws:s3:::myS3Bucket/*"
所以我尝试关注this 或this,但我不明白如何配置 S3 和 Cognito 角色和策略来满足我的需求。
如何配置我的角色和策略以将文件下载仅限于我的 Cognito 用户?
感谢您的帮助。
【问题讨论】:
-
到目前为止你做了多少?
-
@ArunmainthanKamalanathan 我已经设置了一个完整的环境,其中包含一个完全正常工作的 Cognito 用户池和身份池,以及一个 S3 存储桶。我唯一不明白的是如何设置 IAM 角色和策略来满足我的需求。
-
@ArunmainthanKamalanathan 我刚刚更新了我的问题,但仍然出现 403 错误。
-
你还没有发布你的代码。您只发布了政策。试图访问文件的代码在哪里
标签: amazon-web-services amazon-s3 amazon-cognito amazon-iam