[英]AWS IAM role creation is failing
我在账户 A 中创建了一个 DynamoDB 表,并在同一账户中创建了一个角色来对其执行一些操作。
这个角色将由部署在账户 B 中的 lambda function 承担。现在我只在账户 A 中使用上面的代码部署堆栈。账户 B 的堆栈和 lambda function 的 cdk 将在稍后部署。 这是部署在账户 A 中的堆栈的相关角色代码,如下所示:
self._ddb_table = ddb.Table(
self,
id,
.
.
.
)
ddb_lambda_role = iam.Role(self, "ddb_lambda_role",
assumed_by=iam.ServicePrincipal("lambda.amazonaws.com"),
role_name="ddb_lambda_role"
)
ddb_policy_stmt = iam.PolicyStatement(
effect=iam.Effect.ALLOW,
actions=[
'dynamodb:Query',
'dynamodb:GetItem',
'dynamodb:GetRecords',
'dynamodb:PutItem',
'dynamodb:UpdateItem',
'dynamodb:BatchGetItem',
],
resources=[self._ddb_table.table_arn]
)
ddb_lambda_role.add_to_policy(ddb_policy_stmt)
这给出了一条错误消息: The following resource(s) failed to create: [ddblambdarole...].
cli 以及 web 控制台中没有提供更多信息。 您看到上面创建的角色有什么问题吗? 如果不是上面的方法,如何在当前账户A中创建一个跨账户角色,可以由另一个账户中的lambda function承担?
编辑
检查您的 CloudTrail 日志中是否有来自iam.amazonaws.com
的事件,您会在那里找到失败的真正原因。
你应该仔细检查你的角色能力。
由账户 B 中的 lambda 承担的账户 A 中的角色必须具有正确的可信实体,在这种情况下是 Lambda 的执行角色
B账户中Lambda的执行角色必须有AssumeRole策略
我想你们所有人都需要这里https://aws.amazon.com/premiumsupport/knowledge-center/lambda-function-assume-iam-role/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.