我在 AWS_ACCOUNT_A 上的 EC2 实例上设置了一个 Java 应用程序,并试图调用已在 AWS_ACCOUNT_B 上设置的 Dynamo_DB 表。
我通过在 EC2 上假设一个已配置的实例角色来做到这一点,以便它可以访问相关的 Dynamo DB。该角色附加了一个策略,其中包括以下内容:
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"dynamodb:BatchGetItem",
"dynamodb:ConditionCheckItem",
"dynamodb:DescribeContributorInsights",
"dynamodb:Scan",
"dynamodb:ListTagsOfResource",
"dynamodb:Query",
"dynamodb:DescribeStream",
"dynamodb:DescribeTimeToLive",
"dynamodb:DescribeGlobalTableSettings",
"dynamodb:PartiQLSelect",
"dynamodb:DescribeTable",
"dynamodb:GetShardIterator",
"dynamodb:DescribeGlobalTable",
"dynamodb:GetItem",
"dynamodb:DescribeContinuousBackups",
"dynamodb:DescribeExport",
"dynamodb:DescribeKinesisStreamingDestination",
"dynamodb:DescribeBackup",
"dynamodb:GetRecords",
"dynamodb:DescribeTableReplicaAutoScaling"
],
"Resource": "ARN_OF_AWS_ACCOUNT_B:CORRECT_TABLE_PATH"
},
用于进行调用的代码如下:
AmazonDynamoDBClientBuilder.standard()
.withCredentials(new InstanceProfileCredentialsProvider(false))
.withRegion(awsRegion)
.build();
执行此操作时,Java 应用程序会承担正确的角色,但调用本身会失败,因为它正在寻找不存在的 Dynamo DB 表。这是我收到的错误消息:
用户 CORRECT_INSTANCE_ROLE 无权对资源arn:ARN_OF_AWS_ACCOUNT_A /CORRECT_TABLE_PATH执行查询
显然,问题在于它试图查询错误 AWS 账户上的资源。但是,我一直无法弄清楚如何指示我的代码查询正确的 Dynamo 路径。
任何帮助将不胜感激。