python-3.x AWS IAM角色创建失败

y4ekin9u  于 2023-01-22  发布在  Python
关注(0)|答案(2)|浏览(140)

我在帐户A中创建了一个DynamoDB表,并在同一帐户中创建了一个角色,以便在该表上执行一些操作。
此角色将由部署在帐户B中的lambda函数承担。现在我只在帐户A中部署具有上述代码的堆栈。稍后将部署帐户B的堆栈以及lambda函数的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函数承担?

    • 编辑**

添加屏幕截图

9rygscc1

9rygscc11#

检查您的CloudTrail日志中来自iam.amazonaws.com的事件,您会发现失败的真正原因。
https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-log-file-examples.html#cloudtrail-log-file-examples-iam

sqyvllje

sqyvllje2#

你应该仔细检查你的角色能力。
帐户A中的角色(由帐户B中的lambda承担)必须具有正确的受信任实体,在本例中是Lambda的执行角色
帐户B中Lambda的执行角色必须具有AssumeRole策略
我想你们都需要

相关问题