#amazon-web-services #amazon-ec2 #aws-sdk #aws-sdk-net
#amazon-web-services #amazon-ec2 #aws-sdk #aws-sdk-net
Вопрос:
В настоящее время у нас есть 2 учетные записи AWS, которые мы используем. Для большинства вещей мы хотим использовать учетную запись AWS, на которой размещено наше веб-приложение в экземпляре EC2, так что это работает нормально:
services.AddDefaultAWSOptions(this.Configuration.GetAWSOptions());
services.AddAWSService<IAmazonSQS>();
services.AddAWSService<IAmazonSimpleSystemsManagement>();
Однако я хочу получить доступ к экземплярам EC2 в другой учетной записи AWS. Я настроил его для локальной работы с использованием учетных данных и следуя этому руководству (где упоминается об использовании нескольких служб): https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-config-netcore.html
services.AddDefaultAWSOptions(this.Configuration.GetAWSOptions());
services.AddAWSService<IAmazonSQS>();
services.AddAWSService<IAmazonSimpleSystemsManagement>();
if (this.WebHostEnvironment.IsDevelopment())
{
// This works fine locally, but I don't want to use credential file in production
var other = this.Configuration.GetAWSOptions("other");
services.AddAWSService<IAmazonEC2>(other);
}
else
{
// How do I register other here without putting a credential file on my ec2 instance?
services.AddAWSService<IAmazonEC2>();
}
Я не уверен, как зарегистрироваться IAmazonEC2
, чтобы использовать свою other
учетную запись. Я не хочу помещать файл учетных данных в свой экземпляр, и именно так я заставляю его работать локально, но мне это кажется неправильным на производственных серверах.
Я настроил роль IAM, которая имеет доступ к моей other
учетной записи, и передал ее моему экземпляру EC2. Но как мне перевести эту роль IAM в профиль для использования там, где я регистрируюсь IAmazonEC2
выше?
Любая помощь приветствуется. Спасибо
Комментарии:
1. Что вы подразумеваете под «доступом к экземплярам EC2 в другой учетной записи AWS»? Вы имеете в виду, что хотите иметь доступ к консоли управления Amazon EC2 для просмотра экземпляров в другой учетной записи, или вы имеете в виду, что хотите иметь возможность «входить» в эти другие экземпляры EC2 (например, через SSH или диспетчер сеансов)?
2. Я имею в виду, что я хочу использовать
IAmazonEC2
сервис из SDK для запроса / управления экземплярами в моейother
учетной записи (проверять их статус, запускать их и т. Д.).
Ответ №1:
На самом деле есть два способа сделать это…
Вариант 1. используйте роль IAM
Предположим, что экземпляр Amazon EC2 запущен в Account-A, и теперь он хочет запросить информацию об Account-B. Вы могли бы:
- Создайте роль IAM в Account-B с политикой доверия, которая доверяет роли IAM, используемой экземпляром EC2 в Account-A
- Ваш код, выполняемый на экземпляре EC2 в Account-A, может вызывать AssumeRole() (используя обычные учетные данные из Account-A). Это вернет набор временных учетных данных.
- Используйте эти временные учетные данные для выполнения вызовов API для Account-B
Вариант 2: Использовать учетные данные из учетной записи-B
В качестве альтернативы, предоставьте вашей программе набор учетных данных пользователя IAM из учетной записи-B. Они могут храниться в хранилище параметров AWS Systems Manager — AWS Systems Manager или AWS Secrets Manager и извлекаться с помощью обычных учетных данных, назначенных экземпляру EC2 в Account-A.
Комментарии:
1. Спасибо. Я обязательно попробую! 🙂