#amazon-web-services #amazon-ec2 #aws-sdk
#amazon-веб-сервисы #amazon-ec2 #aws-sdk
Вопрос:
Я ищу способ доступа к ресурсам AWS в нескольких учетных записях AWS с использованием AWS SDK (Java, возможно, не имеет значения), работающего на экземпляре EC2.
Чтобы быть более точным, представьте, что есть две учетные записи AWS:
- тест
- prod
В экземпляре EC2 для учетной записи prod запущено Java-приложение, которое создает, например, экземпляр AmazonEC2Client (из AWS Java SDK). Я хотел бы иметь возможность создавать клиентский экземпляр как для тестовых, так и для продающих учетных записей оттуда.
Я могу сделать это с помощью профилей на локальном компьютере, но не понял, как это сделать в экземпляре EC2.
Ответ №1:
Вы можете сделать это одним из двух способов;
AssumeRole
Используйте службу маркеров безопасности AWS для AssumeRole. Фактическая реализация зависит от вас, но вы можете назначить экземпляру EC2 роль IAM, а затем использовать функцию AssumeRole в Java SDK для переключения с производственной роли на тестовую (или наоборот).
Профили
Похоже, вы уже выяснили, как это сделать локально, но его можно реплицировать в EC2 (в зависимости от варианта использования). Тем не менее, я бы настоятельно рекомендовал отказаться от этого и вместо этого следовать рекомендациям и использовать STS: AssumeRole (выше).
На самом деле, вероятно, было бы лучше (делая некоторые предположения о том, что вы на самом деле пытаетесь сделать) иметь отдельный экземпляр EC2 для производства и тестирования, и в этом случае вы можете назначить соответствующие роли по мере необходимости.
Более того, если мы говорим о более крупном развертывании, вы можете захотеть изучить консолидированный биллинг, который позволит вам полностью изолировать свою производственную и тестовую среды, используя отдельные учетные записи AWS для каждой (но одну учетную запись для выставления счетов). Чтобы узнать больше об этом, я бы посоветовал взглянуть на эту статью: https://blog.codeship.com/separate-aws-production-and-development-accounts /