我正在寻找一种使用在EC2实例上运行的AWS SDK(可能不相关的Java)访问多个AWS账户上的AWS资源的方法。
更准确地说,假设有两个AWS账户:
在 prod 帐户的EC2实例上运行了一个Java应用程序,该帐户创建了一个AmazonEC2Client实例(来自AWS Java SDK)。我希望能够从那里为测试和 prod 帐户创建客户端实例。
我可以使用本地计算机上的配置文件执行此操作,但还没有想出如何在EC2实例上执行此操作。
答案 0 :(得分:2)
您可以通过以下两种方式之一进行操作;
<强> AssumeRole 强>
使用AWS安全令牌服务AssumeRole。实际的实现取决于您,但是您可以为EC2实例分配IAM Role,然后使用Java SDK中的AssumeRole函数从生产角色切换到测试(反之亦然)
<强>配置文件强>
听起来你已经知道如何在本地进行此操作,但它可以在EC2中复制(取决于用例)。也就是说,我强烈建议反对它,而是遵循最佳实践并使用STS:AssumeRole(上图)。
实际上,最好(在这里做一些关于你实际上要做的事情的假设)为生产和测试建立一个单独的EC2实例,在这种情况下你可以根据需要分配适当的角色。
此外,如果我们讨论的是更大的部署,您可能需要探索Consolidated Billing,这样可以让您通过为每个(但只有一个结算帐户)使用单独的AWS账户来完全隔离您的生产和测试环境。要了解有关它的更多信息,我建议您查看一下这篇文章:https://blog.codeship.com/separate-aws-production-and-development-accounts/