首页 > 解决方案 > 使用假设角色同时访问属于不同帐户的两个 dynamodb 表不起作用

问题描述

我有一个在 ECS 中运行的 java 应用程序,我想从帐户 1(source_table)中的表中读取数据并将其写入帐户 2(destination_table)中的表。我创建了两个具有不同凭据提供程序的 dynamodb 客户端 - 对于 source_table 客户端,我使用的STSAssumeRoleSessionCredentialsProvider是帐户 1 中角色的 arn;对于我正在使用的目标客户端DefaultAWSCredentialsProviderChain

假设角色位有效,我可以使用源客户端进行读取,但使用目标客户端不起作用 - 在尝试写入 destination_table 时它仍然尝试使用假设的角色凭据,并且失败并出现未经授权的错误(假设角色是无权执行放置项目)。

我尝试EC2ContainerCredentialsProviderWrapper在目标客户端上使用,但同样的错误。

这应该工作吗?还是在后台共享凭据,这使得两个不同AWSCredentialProvider的 s 不可能像这样同时运行?

我注意到这个答案使用静态凭据并且显然有效,所以我不知道为什么这不起作用。

标签: javaamazon-web-servicesamazon-dynamodbamazon-iam

解决方案


我在 AWS 支持的帮助下想通了。这是我对账户 2 中角色的 IAM 配置的问题。我被错误消息误导了,上面写着“假定角色无权执行放置项目”,而实际上我的原始账户 2 角色本身无法这样做.


推荐阅读