При работе на локальном компьютере я загружаю учетные данные единого входа, беру на себя роль и выполняю чтение. /запись запросов в БД. Все работает нормально.
Теперь мне нужно переместить это для запуска на экземпляре EC2, где, конечно, у меня нет локального профиля AWS. Я уже настроил свой экземпляр EC2 с указанной ниже ролью.
Код: Выделить всё
var roleArnToAssume = "arn:aws:iam:::role/myRole_AppDynamoDbAccess";
var stsClient = new AmazonSecurityTokenServiceClient(LoadSsoCredentials(), RegionEndpoint.EUWest1);
var assumeRoleReq = new AssumeRoleRequest()
{
DurationSeconds = 3600,
RoleSessionName = "Session1",
RoleArn = roleArnToAssume
};
var assumeRoleRes = await stsClient.AssumeRoleAsync(assumeRoleReq);
var config = new AmazonDynamoDBConfig()
{
RegionEndpoint = RegionEndpoint.USEast1,
AllowAutoRedirect = true
};
var client = new AmazonDynamoDBClient(assumeRoleRes.Credentials, config);
services.AddSingleton(client);
services.AddScoped();
static AWSCredentials LoadSsoCredentials()
{
var chain = new CredentialProfileStoreChain();
if (chain.TryGetAWSCredentials("my-profile-name", out var credentials))
return credentials;
else
{
//I tried adding this to support running on EC2
var defaultCreds = FallbackCredentialsFactory.GetCredentials();
return defaultCreds == null ? throw new Exception("Failed to find the profile") : defaultCreds;
}
}
AmazonServiceException: невозможно получить учетные данные безопасности IAM от
Служба метаданных экземпляра EC2.
Кроме того, я подумал, что мне не нужно запускать «aws configure» на моем экземпляре EC2, но Я не уверен.
Я не могу найти нужную информацию о том, как мне нужно адаптировать свой код для работы на EC2 и заставить его работать.
В идеале мне нужна код для обработки обоих сценариев.
Будем благодарны за любую помощь и рекомендации.
Подробнее здесь: https://stackoverflow.com/questions/785 ... ole-on-ec2