我有一个在 ECS 中运行的 Java 应用程序,我想从帐户 1 中的表(source_table)读取数据并将其写入帐户 2 中的表(destination_table)。我创建了两个具有不同凭证提供程序的 dynamodb 客户端 - 对于 source_table 客户端,我使用带有帐户 1 中角色的 arn 的 STSAssumeRoleSessionCredentialsProvider
;对于目标客户端,我使用 DefaultAWSCredentialsProviderChain
。
假设角色位有效,我可以使用源客户端进行读取,但使用目标客户端不起作用 - 当尝试写入目标表时,它仍然尝试使用假设的角色凭据,并因未经授权的错误而失败(假设-角色无权执行Put Item)。
我尝试在目标客户端上使用EC2ContainerCredentialsProviderWrapper
,但出现同样的错误。
这应该有效吗?或者凭证是否在幕后共享,导致不可能像这样同时运行两个不同的 AWSCredentialProvider
?
我注意到this答案使用静态凭据并且显然有效,所以我不知道为什么这不起作用。
最佳答案
我在 AWS 支持人员的帮助下解决了这个问题。这是我在帐户 2 中的角色上的 IAM 配置出现的问题。我被错误消息误导了,该错误消息显示“假设的角色无权执行 Put Item”,而实际上我的原始帐户 2 角色本身无法执行此操作.
关于java - 使用假设角色同时访问属于不同帐户的两个 dynamodb 表不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56608819/