我在帐户A中具有DynamoDB,在帐户B中具有Fargate服务。我想从Fargate服务访问DynamoDB。为此,
1.在帐户A中创建一个IAM角色,该角色具有附加的DynamoDB访问策略。
2.在帐户B中创建了一个IAM角色,该角色已附加到承担在帐户A中创建的角色的策略。
3.在帐户A的信任关系中添加了帐户B ID。
在用于创建DynamoDBClient的代码中,通过传递在帐户A中创建的角色的ARN来使用STSAssumeRoleSessionCredentialsProvider
。运行服务时,出现访问被拒绝错误。
User: <ARN of ECS task> is not authorized to perform: sts:AssumeRole on resource: <ARN of role created in account A> (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDeniedException;
ARN格式为arn:aws:sts::<accountId of B>:assumed-role/<ECSTaskInstanceID>
。
请注意,ecs-tasks.amazonaws.com
已通过sts:AssumeRole的动作添加到帐户B的受信任关系中。