Теперь я работаю с Фаргейтом. Это не имело никакого отношения к приложению Java, оно было связано с правами на развертывание ECS, как я попытаюсь объяснить.
ECS: EC2
ECS по умолчанию использует экземпляры EC2 для развертывания задач (хранения контейнеров). Для этого он использует агента ECS в каждом экземпляре EC2, который, в свою очередь, связывается с механизмом Docker; этот агент ECS по умолчанию не имеет прав, что означает, что он не может загружать личные изображения (например, из ECR) и записывать журналы в CloudWatch (например).
Чтобы исправить это, мы создаем роль IAM и запускаем задачу с ExecutionRoleArn
(в CloudFormation), ссылающейся на это. Роль IAM требует прав ecr и прав на запись в журнал.
Теперь, в спешке, я добавил права на хранилище параметров к этому, не задумываясь об этом, и эй, прежде чем мое приложение успешно работало и получало значения хранилища параметров. Оказывается , что в режиме EC2 права, предоставленные агенту ECS, наследуются работающим контейнером (мое приложение).
ECS: Fargate
Переключитесь на Фаргейт, перерывы выше. ExecutionRoleArn
остается релевантным, но не наследуется работающим контейнером. Так что нет смысла предоставлять ему права на хранилище параметров.
Добавьте в определение задачи TaskRoleArn
и укажите его на другую роль. На этот раз предоставьте права в этой новой роли для вызова сервисов AWS, которые нужны вашему контейнеру (приложению) - хранилище параметров, S3, SQS и т. Д.
С этим сделано, мое приложение доволен. Не стесняйтесь обновлять с любыми исправлениями, поскольку это написано моим пониманием и опытом пока.
Возможно, было бы лучше назвать ExecutionRoleArn
как AgentRoleArn
и TaskRoleArn
как ApplicationRoleArn
, но это только моя точка зрения.