Я настроил кластер AWS ECS с экземплярами контейнеров типа EC2.В определении задачи есть переменная окружения "SECRETS", значение которой соответствует определенному секретному имени.В определении задачи используется сетевой режим awsvpc.
Для доступа к значению секретов из кода (.net) используется следующий код (из фрагмент aws ):
IAmazonSecretsManager client = new AmazonSecretsManagerClient(region);
GetSecretValueRequest request = new GetSecretValueRequest
{
SecretId = secretName,
VersionStage = "AWSCURRENT" // VersionStage defaults to AWSCURRENT if unspecified.
};
GetSecretValueResponse response = Task.Run(async () => await client.GetSecretValueAsync(request)).Result;
Это прекрасно работает с Fargate типом экземпляра.При переключении на EC2 экземпляр контейнера GetSecretValueAsync () завершается с AggregateException: TaskCanceledException .
Я пытался получить роль IAMучетные данные изнутри контейнера с успехом:
curl 169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
Я также попытался указать полученные учетные данные напрямую, но не повезло:
AmazonSecretsManagerClient(awsAccessKeyId, awsSecretAccessKey, region)
Кроме того, у меня естьпробовал выпекать aws cli внутри контейнера, а изнутри я пробовал aws secretsmanager
, aws iam get-user
и aws sts get-caller-identity
- все еще зависает без ответа.Я предоставил полный доступ администратора к роли выполнения задач - все еще безуспешно.Я могу получить секреты из экземпляра контейнера EC2, но не из смонтированного контейнера.