如何让AWS跨账号IAM用户devuser访问AccountB中的Lambda函数?
跨账号调用Lambda权限问题解决方法
你当前的核心错误是修改了Lambda执行角色的信任关系,但这个信任关系是用来授权Lambda服务自身扮演该角色执行函数的,和外部用户调用Lambda的权限无关。要让AccountA的devuser能调用AccountB的Lambda,需要给目标Lambda添加基于资源的策略(即Lambda资源策略),而不是修改执行角色的信任关系。
步骤1:恢复Lambda执行角色的信任关系
把AccountB中Lambda执行角色的信任关系恢复为初始状态,删除添加的devuser相关条目,正确的信任关系应该是:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
步骤2:给AccountB的Lambda添加资源策略
在AccountB中,找到目标Lambda函数dev-my-lambda,进入配置→权限→资源策略,添加以下策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA:user/devuser" }, "Action": [ "lambda:InvokeFunction", "lambda:InvokeAsync" ], "Resource": "arn:aws:lambda:us-west-2:AccountB:function:dev-my-lambda" } ] }
这个策略的作用是直接授权AccountA的devuser对该Lambda执行调用操作。
步骤3:确认AccountA的devuser权限策略
你当前给devuser附加的IAM权限策略是正确的,无需修改:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:InvokeAsync" ], "Resource": "arn:aws:lambda:us-west-2:AccountB:function:dev-my-lambda" } ] }
完成以上步骤后,devuser就能正常调用AccountB的Lambda函数了。
内容的提问来源于stack exchange,提问作者LP13
相关产品推荐
相关产品推荐

