amazon-s3 - 通过托管在 VPC 私有子网中的 Lambda 从另一个账户访问 S3 存储桶
问题描述
我有两个 AWS 账户 A 和 B,我有以下设置
账户 A:S3 存储桶
账户 B:托管需要从账户 A 访问 S3 存储桶的 Lambda
我在账户 B 中创建了一个具有以下策略的 IAM 角色并将其附加到 Lambda
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::dest-bucket-name/*"
},
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::dest-bucket-name/*"
}
]
}
我还将存储桶策略(如下)与账户 A 中的 S3 存储桶相关联
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AccountBID:role/lambda-role"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::dest-bucket-name/*"
}
]
}
VPC 终端节点已正确配置。从存储桶下载工件的 Lambda 请求超时,有人可以指出我错在哪里。
解决方案
有两点突出:
你确定你的 lambda 成功地扮演了它的角色吗?
s3:ListBucket
是应用于存储桶的权限。arn:aws:s3:::dest-bucket-name/*
匹配存储桶中的所有对象。尝试ListBucket
单独申请,以arn:aws:s3:::dest-bucket-name
. (该模式通常具有一个用于对象操作的策略块,以及另一个用于存储桶操作的策略块。)
推荐阅读
- python - function .. 接受 0 个位置参数,但给出了 1 个
- macos - 使用 .pub 文件、用户名和主机名连接到 Mac 上的 AWS EC2 Ubuntu 实例的公钥错误
- android - 是否有必要使用协调器布局作为抽屉布局的第一个孩子
- context-free-grammar - 我怎样才能做到这一点?L = {w ∈ {0, 1}* | n0(w) = 2n1(w) 和 |w| 甚至}
- mysql - MySQL 全文搜索斯堪的纳维亚字符 ø æ
- python - 在python中散列一个字符串会返回错误的结果?
- purescript - 我如何才能将可能转换为值?
- javascript - 在 Jest 中使用 toMatchObject 检查对象是否具有一个属性但没有另一个
- css - Internet Explorer 中的粗体 UTF-8 字符
- agens-graph - 如何更改 AgnsGraph 的服务器端口号?