Я также прохожу эту проблему, и вывод, который я собираюсь принять, состоит в том, что не существует простого способа сделать это.Этот вывод подтверждается этой проблемой и этой другой .Я видел сторонние решения , подобные этому , но мне неудобно прибегать к сторонним приложениям в моей инфраструктуре.
В отличие от этого репо , который утверждает, чтодостигли способа обеспечить узлы EFS.Я знаю, что это не EBS, но он может обеспечить способ обмена данными между контейнерами и основным экземпляром EC2 независимо от того, в каком конкретном экземпляре работают контейнеры.
Возможно, вы сможете найти способ присоединить существующийEC2 создает кластер, чтобы вы могли лучше контролировать его.Это то, что я, вероятно, собираюсь попробовать, но я понимаю, что это сводит на нет половину цели использования ecs, которая абстрагируется от того, как вы запускаете контейнеры, не заботясь о базовой инфраструктуре хоста.
Редактировать :
Мне удалось создать кластер ECS, в котором во всех экземплярах смонтирован раздел EFS.
Создайте том EFS в том же регионе доступности, что и при создании кластера [1].Обязательно создайте его в частной подсети.
Измените конфигурацию запуска UserData
[2] сценарий для установки amazon-efs-utils
[3].Если вы используете оптимизированные для Linux образы Amazon Amazon, просто добавьте в свой скрипт следующее:
sudo yum install -y amazon-efs-utils
- Добавьте шаг для создания точки монтирования и монтирования ранее созданной EFSтом в
UserData
bash script:
mkdir -p /mnt/efs
mount -t efs fs-12345678:/ /mnt/efs
Измените fs-12345678
на идентификатор вашего тома EFS.
Полагаю, вы можете выставить том EBS, используя что-то вроде samba, но EFS не требуется обслуживать выделенный экземпляр EC2, он получает днс и может быть смонтирован напрямую.
[1] https://docs.aws.amazon.com/efs/latest/ug/troubleshooting-efs-mounting.html#mount-fails-dns-name
[2] https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html#user-data-shell-scripts
[3] https://docs.aws.amazon.com/efs/latest/ug/using-amazon-efs-utils.html