set*_*hro 6 amazon-s3 amazon-web-services amazon-cognito
我正在开发一个应用程序,它将管理对存储在S3中的已购买文件的访问.我在S3中按产品组织文件,例如:
my-bucket
??? product-a
? ??? file-1
? ??? file-2
? ??? file-3
??? product-b
? ??? file-1
? ??? file-2
? ??? file-3
??? etc...
Run Code Online (Sandbox Code Playgroud)
我还使用Cognito来管理用户身份和身份验证.我想创建一个IAM角色,所有用户都会认为这个角色只允许他们访问他们购买的产品的文件.这样做的正确方法是什么?我已经阅读了Cognito的文档,我觉得我只是没有完全连接点.
我从这个例子中看到,我可以为每个用户提供对存储桶中自己的文件夹的访问权限,但之后我必须将文件复制到每个用户的文件夹,这似乎既低效又容易出错.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::my-bucket"],
"Condition": {"StringLike": {"s3:prefix": ["cognito/myapp/"]}}
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::my-bucket/myapp/${cognito-identity.amazonaws.com:sub}",
"arn:aws:s3:::my-bucket/myapp/${cognito-identity.amazonaws.com:sub}/*"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
但我希望创建一个策略,授予用户访问product-aif和仅当他们购买该产品的文件夹的权限,比如说使用该用户的Cognito Sync数据中包含的一些标志.
这可能吗?我只是没有使用正确的工具?我认为这必须是一个常见的用例.
在我的用例中,这是可能的,原因如下: