【发布时间】:2020-02-22 18:37:56
【问题描述】:
我正在尝试使用 boto3 从我的 AWS Lambda 访问另一个账户中的 S3 存储桶。以下是我配置的步骤:
1. 在我的 Lambda 所在的账户 A 中,我创建执行角色 (Lambda-S3-SNS-VPC-Role) 并将一个 AmazonS3FullAccess 托管策略和一个内联策略附加到它:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1489133353000",
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Resource": [
"arn:aws:iam::<Account-B-ID>:role/access-s3-bucket-from-lambda-in-another-acc-role"
]
}
]
}
在我的 S3 存储桶所在的账户 B 中,我创建了一个 IAM 角色 (access-s3-bucket-from-lambda-in-another-acc-role),如下所示: - 附加 AmazonS3FullAccess 托管策略和信任关系:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<Account-A-ID>:role/Lambda-S3-SNS-VPC-Role",
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
另外,在账户 B 的 S3 存储桶中,给出了以下存储桶策略
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<Account-A-ID>:role/Lambda-S3-SNS-VPC-Role"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::my-bucket-in-acc-B",
"arn:aws:s3:::my-bucket-in-acc-B/*"
]
}
]
}
下面是我的 Lambda 函数代码:
def lambda_handler(event, context):
sts_connection = boto3.client('sts')
acct_b = sts_connection.assume_role(
RoleArn="arn:aws:iam::<Account-B-ID>:role/access-s3-bucket-from-lambda-in-another-acc-role",
RoleSessionName="cross_acct_lambda"
)
print('acct_b: ',acct_b)
但在测试时,什么都没有发生,函数超时。请指导。
【问题讨论】:
标签: amazon-web-services amazon-s3 aws-lambda boto3 amazon-iam