【发布时间】:2019-11-06 10:15:58
【问题描述】:
问题出在这里:我需要使用 AWS 账户 A(根 AWS 账户 A)中的 Lambda 函数将一些数据写入 AWS 账户 B(根 AWS 账户 B)中的 DynamoDB 表。所有项目都是用 Node.js 中的无服务器框架编写的。
我知道我需要在 Lambda 函数中使用跨账户角色来执行此操作。由于 Serverless 使用的模板与 cloudformation 模板有很多相似之处。然后我对如何使用跨账户角色做了一些研究,这里是AWS文档https://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {"AWS": "Example Corp's AWS Account ID"},
"Condition": {"StringEquals": {"sts:ExternalId": "12345"}}
}
}
这是此类任务的示例 iam 规范。 serverless 中的 yaml 模板在我的项目中是这样的:
- Effect: Allow
Principal:
AWS: 'AWS Account B External ID'
Action:
- sts:AssumeRole
Resource:
- '*'
但是当我尝试部署无服务器模板时: 我得到了这样的错误:
发生错误:IamRoleLambdaExecution - 策略文档不应指定委托人。 (服务:AmazonIdentityManagement;状态代码:400;错误代码:MalformedPolicyDocument;请求 ID:XXXX-XXXX-XXXX-XXXX-XXXX)。
我想知道根据需求指定模板的正确方法是什么。 感谢任何形式的帮助
【问题讨论】:
标签: amazon-web-services amazon-iam serverless-framework serverless aws-serverless