Dev*_*Dev 8 amazon-web-services amazon-iam aws-lambda assume-role
我有一个使用Account-A中的以下 IAM 角色创建的lambda 函数 ( lambda-get-details )
角色名称:兰姆巴罗
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*",
"Effect": "Allow"
},
{
"Action": [
"config:PutEvaluations",
"ec2:DescribeImages",
"sts:AssumeRole"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
Run Code Online (Sandbox Code Playgroud)
在不同账户中创建相同的 IAM 角色名称 ( lambdarole ),就像Account-B一样
现在,来自账户 A 的lambda 函数需要从账户 B获取详细信息(例如 AMI 列表),我们收到以下错误
"errorMessage": "An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:sts::Account-A:assumed-role/lambdarole/lambda-get-details is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::Account-B:role/lambdarole
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解决上述问题吗?
任何帮助,将不胜感激
谢谢
在Account-A中,策略lambdarole允许角色代入任何角色 ARN(包括Account-B中的角色)。这个声明照顾到了这一点
{
"Action": [
"sts:AssumeRole"
],
"Resource": "*",
"Effect": "Allow"
}
Run Code Online (Sandbox Code Playgroud)
类似地,在Account-B中,角色应包含允许从Account-Alambdarole承担角色的信任策略。
将Account-A的角色 ARNAccountID添加为Account-B的AssumeRolePolicyDocument中的委托人。lambdarolelambdarole
看起来AssumeRolePolicyDocument像这样(如果帐户 ID 用作主体),
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect" : "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS" : "<Account-ID-of-Account-A>"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
您可以参考此处了解如何使用 IAM 角色建立跨账户访问。
| 归档时间: |
|
| 查看次数: |
39619 次 |
| 最近记录: |