我使用适用于 Android 的 AWS 开发工具包和 Cognito 对我的 AWS 资源的用户进行身份验证(通过 Amazon 登录)。我是什么尝试要做的就是设置一个 S3 存储桶,如下所示:
./my-bucket
├── [email protected] /cdn-cgi/l/email-protection
└── [email protected] /cdn-cgi/l/email-protection
So, the my-bucket
存储桶将包含基于用户电子邮件地址的文件夹。
我制定政策的第一次尝试是这样的:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::my-bucket"]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::my-bucket/${www.amazon.com:user_id}",
"arn:aws:s3:::my-bucket/${www.amazon.com:user_id}/*"
]
}
]
}
作为测试,我尝试为用户下载一个文件夹,如下所示:
final Map logins = new HashMap();
logins.put("www.amazon.com", token);
credentialsProvider.withLogins(logins);
final TransferManager transferManager = new TransferManager(credentialsProvider);
MultipleFileDownload download = transferManager.downloadDirectory("my-bucket", "[email protected] /cdn-cgi/l/email-protection", new File("/sdcard/Download"));
但是,当我运行此命令时,我收到“禁止”异常。如果我修改策略以明确引用[email protected] /cdn-cgi/l/email-protection
而不是${www.amazon.com:user_id}
效果很好。
Question
- 是否可以使用 LWA 用户的电子邮件地址来进行这样的配置?
- 有没有办法实际记录what当我发出请求时参数会发生吗?
我看过参考资料像这样 http://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingWIF.html#CreatingWIF-userid但我不确定哪些实际上适用。如果我能够以某种方式做到这一点那就太好了see当我提出请求时会遇到什么价值观。
提前致谢。