Я ищу способ внедрения секретов / сертификатов в контейнеры Amazon ECS. В моем случае это простой контейнер nginx.
Я следил за этим постом, используя AWS Parameter Store:
https://aws.amazon.com/blogs/compute/managing-secrets-for-amazon-ecs-applications-using-parameter-store-and-iam-roles-for-tasks/
Вот основная суть:
- В моем Dockerfile я присоединяю скрипт к точке входа , который устанавливает клиент AWS и извлекает ключи из хранилища параметров AWS.
Dockerfile
FROM nginx:1.16.0
...
ENTRYPOINT ["/var/run/fetch.sh", "nginx", "-g", "daemon off;"]
fetch.sh
aws ssm get-parameter \
--name ${key} \
--with-decryption \
--region us-east-1 \
--output text \
--query Parameter.Value
- Определение задачи предполагает роль IAM, которая имеет доступ к необходимым службам (хранилище параметров kms +). Я могу убедиться, что это работает, потому что если я ssh на сервер и запускаю скрипт на контейнере, я могу получить ключи из хранилища параметров.
{
"portMappings": [
{
"hostPort": 0,
"protocol": "tcp",
"containerPort": 443
}
],
"cpu": 0,
"environment": [],
"mountPoints": [],
"memoryReservation": 256,
"memory": 512,
"volumesFrom": [],
"image": "url/some_image:latest",
"essential": true,
"name": "my-container"
}
- Когда ECS запускает эту задачу, он должен попасть в точку входа , которая выбирает ключи из хранилища параметров и сохраняет их.
Я могу получить ключи для запущенной задачи, запустив ее вручную через docker exec, но я не могу получить их при запуске задачи (в частности, когда я присоединяю скрипт к точке входа, как в коде выше) ,
Имеет ли задача ECS доступ к ролям IAM на точке входа? Когда он фактически принимает роли IAM?