aws ecs fargate не может получить секретный менеджер
Я использую сервис AWS ECS для управления моим док-контейнером.
Также используется Secret Manager для хранения и извлечения личной информации.
Я применяю SecretsManagerReadWrite
политика к моему ecsTaskExecutionRole
а также ecsServiceRole
,
Перед использованием Fargate
Я только что использовал ECS с EC2.
И это прекрасно работает.
Но в fargate
Кидаю NoCredentialsError
Я получил секретный менеджер с помощью скрипта Python, сделанного с Boto3. ( https://docs.aws.amazon.com/ko_kr/code-samples/latest/catalog/python-secretsmanager-secrets_manager.py.html)
Здесь есть какое-то решение?
Благодарю.
ТАМОЖЕННОЕ разрешение
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"secretsmanager:GetSecretValue",
"ssm:GetParameters"
],
"Resource": "*"
}
]
}
2 ответа
Убедитесь, что применяемая политика IAM имеет следующие разрешения:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:GetParameters",
"secretsmanager:GetSecretValue",
"kms:Decrypt"
],
"Resource": [
"arn:aws:ssm:<region>:<aws_account_id>:parameter/parameter_name",
"arn:aws:secretsmanager:<region>:<aws_account_id>:secret:secret_name",
"arn:aws:kms:<region>:<aws_account_id>:key/key_id"
]
}
]
}
Также убедитесь, что вы используете Fargate 1.3.0 ( https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html).
Но я бы попробовал что-то еще, чтобы уменьшить объем кода. Начиная с ноября 2018 года, нет необходимости писать собственный код для получения секретов из Secret Manager. ECS/Fargate может сделать это за вас. Просто дайте ECS разрешение на доступ к вашему секрету и укажите секретный ARN в определении задачи. ECS / Fargate назначит секрет для переменной среды. Ваш код просто должен читать переменную окружения как обычно.
Например:
"containerDefinitions": [
{
"secrets": [
{
"name": "environment_variable_name",
"valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
}
]
}
]
Документ находится здесь: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html
Я наткнулся на эту ветку при устранении той же проблемы. В моем случае разрешения были настроены правильно. Однако ARN диспетчера секретов не был полным.
Я передал ARN как - "arn:aws:secretsmanager:${AWS :: Region}:${AWS :: AccountId}: secret: nonprod-testapp-rds-password"
вместо - "arn:aws:secretsmanager:${AWS :: Region}:${AWS :: AccountId}: secret: nonprod-testapp-rds-password-wdxsae"
Проблема была решена после передачи полного ARN секрета в качестве секретов в определении контейнера.