首页 > 解决方案 > 通过角色连接到 2 个不同 AWS 账户的资源

问题描述

考虑 2 个 AWS 账户 A(其他团队)和 B(我的)对于我的用例,我必须轮询 A 的 AWS 账户中的队列以获取有效负载并在 B 中执行数据库操作。为此,我在 B 中创建了一个角色访问我的数据库 + A 的帐户 ID 作为信任关系。同样,A 创建了一个角色,用于授予对 A + 添加 B 中的队列的访问权限作为信任关系。

执行所有轮询 + 数据库操作的代码将驻留在我的帐户 (B) 中的 EC2 上。现在,我如何使用有效负载并从角色的角度执行操作。我的理解正确吗?

  1. 担任角色 A
  2. 轮询配置队列,从 SQS 获取 JSON 负载
  3. 担任角色 B
  4. 在 Oracle RDS 中执行数据库操作
  5. 担任角色 A
  6. 将响应返回到响应 SQS
  7. 在配置队列 SQS 上再次开始轮询

仅供参考:我正在使用 Python + Boto3 执行上述操作

标签: amazon-web-servicesamazon-iam

解决方案


假装一切都发生在您自己的帐户(帐户-B)中。

您将为您的代码提供一组凭证(一个 IAM 用户,或者,如果代码在 Amazon EC2 实例上运行,您将向该实例分配一个 IAM 角色),它可以用来访问账户 B 中的必要资源. 所以,那里没有问题。

唯一的附加要求是您希望在账户 A 中访问 Amazon SQS。碰巧您可以直接向授予跨账户访问权限的 Amazon SQS 队列添加权限。

请参阅:Amazon SQS 的 IAM 策略的基本示例 - Amazon Simple Queue Service

因此,您实际上不需要承担任何角色。只需使用分配给您的代码的普通凭证,并向 SQS 队列添加权限以允许该特定 IAM 用户或 IAM 角色使用该队列。


推荐阅读