Sab*_*hni 4 amazon-dynamodb amazon-iam aws-lambda aws-sts
我遇到这种情况:区域 X 帐户 A中的 dynamoDB 表和区域 Y 帐户 B中的 Lambda 函数。我想使用 lambda 函数写入 dynamoDB 表。到目前为止我做了什么:
但仍然不起作用,这让我很困惑AccessDeniedException。我在这里遗漏了一些东西吗?或者在这种情况下甚至可以做到这一点?
以下是解决该问题所需的步骤:
\nLambda_DDBTest具有 Lambda 执行角色的Lambda 函数 \xe2\x80\x93<LambdaExecutionRole>LambdaTest中存在DynamoDB 表 \xe2\x80\x93 \n此 Lambda 函数正在尝试从账户B访问 DynamoDB 表,下面是设置 IAM 配置时需要遵循的步骤。以目标账户管理员身份登录 AWS 管理控制台,然后打开\nIAM 控制台。
\n在左侧导航窗格中,选择 \xe2\x80\x9cRoles\xe2\x80\x9d 并单击“创建新角色”按钮,\n输入角色名称并单击“下一步”
\n在下一页中,选择与“另一个 AWS 账户:属于您或第 3 方”相关的按钮
\n输入源帐户的帐户 ID,然后在选项中选择 \xe2\x80\x9c 需要外部 ID\xe2\x80\x9d 并\ng给它一个外部 ID 值(例如,我给了 \xe2\x80\x9ctestcrossaccountddb\xe2\x80\ x9d)。记下外部 ID 值以供稍后使用(我们在 lambda 函数中使用它)。
\n在下一个窗口中,单击“AmazonDynamoDBFullAccess”复选框,然后单击“下一步\n步骤”
\n检查您的设置并键入角色名称(例如 \xe2\x80\x98crossaccount-LambdaDDB\xe2\x80\x99)
\n查看角色后,选择 \xe2\x80\x9c创建角色\xe2\x80\x9d。\n创建角色后,您可以在角色列表中看到它。再次打开角色,添加内联策略\n以添加账户 A 中的 lambda 函数执行角色,以允许代入角色从账户 B 访问 DynamoDB\n表。
\n{\n"Version": "2012-10-17",\n"Statement": {\n"Effect": "Allow",\n"Action": "sts:AssumeRole",\n"Resource": "arn:aws:iam::<Account A>:role/<LambdaExecutionRole>"\n}\n}\n\nRun Code Online (Sandbox Code Playgroud)\n{\n"Version": "2012-10-17",\n"Statement": [\n{\n"Effect": "Allow",\n"Action": "sts:AssumeRole",\n"Resource": " arn:aws:iam::<Account B>:role/crossaccount-LambdaDDB\xe2\x80\x9d\n}\n]\n}\nRun Code Online (Sandbox Code Playgroud)\n完成上述配置后,我在 Lambda\nfunction 中使用以下 python boto3 示例代码来访问账户 B 中的 DynamoDB 表 \xe2\x80\x98LambdaTest\xe2\x80\x99。在此示例代码中,我尝试扫描\n该表并将一个新项目插入该表中。
\n{\n"Version": "2012-10-17",\n"Statement": {\n"Effect": "Allow",\n"Action": "sts:AssumeRole",\n"Resource": "arn:aws:iam::<Account A>:role/<LambdaExecutionRole>"\n}\n}\n\nRun Code Online (Sandbox Code Playgroud)\nhttps://aws.amazon.com/premiumsupport/knowledge-center/lambda-function-assume-iam-role/
\n| 归档时间: |
|
| 查看次数: |
4169 次 |
| 最近记录: |