如何从不同的 Cognito 用户池访问受 S3 保护的文件?
How can I access S3 protected files from a different cognito user pool?
我有一个 Cognito 用户池(我们称之为 UP1)。该池中的用户使用 Amplify 将受保护的文件上传到 S3。
现在我有另一个用于管理端的用户池 (UP2)。但是,使用在 UP2 中登录的用户(也通过放大),我无法访问 UP1 中用户上传的 S3 文件,因为我总是收到 HTTP 403。
分配给 UP2 的 IAM 角色必须能够对该 S3 存储桶执行任何操作(到目前为止运气不好)。
这是政策
{
"Statement": [
{
"Action": [
"*"
],
"Resource": [
"<bucket_arn/*>"
],
"Effect": "Allow"
}
]
}
以及使用 Amplify 从 UP2 中的用户访问 UP1 文件的方式
Storage.list('<somepath>/', {
level: 'protected',
identityId: '<identityId of the User from UP1>',
}
为了列出和获取此存储桶中的文件,我是否遗漏了什么?可能吗?
或者我如何向 UP2 中的用户授予“特殊”权限以允许我访问这些 S3 文件。
谢谢!
已解决。
抱歉,我错误地配置了 IAM 策略。我认为通配符通过包括它自身在内的所有子资源来解决问题。
我正在执行 ListBucket 操作,其资源必须是 Bucket 本身(不是它的任何子项)。但是,为了避免使用通配符并更好地控制资源,我遵循了 guide(我之前没有读过,ups)并查看那里规定的政策。
我有一个 Cognito 用户池(我们称之为 UP1)。该池中的用户使用 Amplify 将受保护的文件上传到 S3。 现在我有另一个用于管理端的用户池 (UP2)。但是,使用在 UP2 中登录的用户(也通过放大),我无法访问 UP1 中用户上传的 S3 文件,因为我总是收到 HTTP 403。
分配给 UP2 的 IAM 角色必须能够对该 S3 存储桶执行任何操作(到目前为止运气不好)。
这是政策
{
"Statement": [
{
"Action": [
"*"
],
"Resource": [
"<bucket_arn/*>"
],
"Effect": "Allow"
}
]
}
以及使用 Amplify 从 UP2 中的用户访问 UP1 文件的方式
Storage.list('<somepath>/', {
level: 'protected',
identityId: '<identityId of the User from UP1>',
}
为了列出和获取此存储桶中的文件,我是否遗漏了什么?可能吗?
或者我如何向 UP2 中的用户授予“特殊”权限以允许我访问这些 S3 文件。
谢谢!
已解决。
抱歉,我错误地配置了 IAM 策略。我认为通配符通过包括它自身在内的所有子资源来解决问题。
我正在执行 ListBucket 操作,其资源必须是 Bucket 本身(不是它的任何子项)。但是,为了避免使用通配符并更好地控制资源,我遵循了 guide(我之前没有读过,ups)并查看那里规定的政策。