Убедитесь, что применяемая политика 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