0

Я работаю над проектом VOIP с использованием Asterisk в Linux. Наша текущая задача состоит в том, чтобы на каждом из них было несколько машин EC2 с контейнером Asterisk, и мы хотим иметь возможности для разработки, промежуточной и производственной среды. Для этого я пишу шаблон CloudFormation для использования AWS-ECS. Моя проблема заключается в том, что я не могу найти подходящий способ сопоставить ведра AWS-S3 с томами контейнеров. Я хочу использовать 2 разных ведра. Один для ввода файлов конфигурации Asterisk во все контейнеры. Еще один способ сохранить голосовые сообщения и журналы всех контейнеров.Как сопоставить ковш AWS S3 в контейнер на AWS ECS с шаблоном CloudSormation от AWS?

Thanks,

P.S. Я нажал изображение Asterisk на AWS-ECR и ссылался на него в TaskDefenition. Я вижу MountPoints и Volumes там, но они, похоже, не являются моим решением.

ответ

1

Не могли бы вы попытаться использовать переменную среды в своих задачах?

в шаблоне CF было бы так:

"DefJob":{ 
    "Type":"AWS::ECS::TaskDefinition", 
    "Properties":{ 
     "ContainerDefinitions":[ 
      { 
       "Name":"integration-jobs", 
       "Cpu":"3096", 
       "Essential":"true", 
       "Image":"828387064194.dkr.ecr.us-east-1.amazonaws.com/poblano:integration", 
       "Memory":"6483", 
       "Environment":[ 
       { 
        "Name":"S3_REGION", 
        "Value":"us-east-1" 
       }, 
       { 
        "Name":"S3_BUCKET" 
        "Value":"Name-of-S3" 
        } 
        ........ 

И затем ссылаться на эти переменные среды в контейнерах, чтобы использовать эти ведра S3. Вы должны убедиться, что ваш экземпляр имеет доступ к этим ведрам S3.

Спасибо, Manish

0

Я знаю, что это не отвечает именно этому вопрос, это более простой, чем решение Маниш, но сырой способ для достижения общего хранилища между контейнерами ECS полагаться на Elastic Файловые системы.

Установив такой сценарий в пользователем данных экземпляры Docker или конфигурации запуска группы автоматического масштабирования, то EFS может быть установлен на/MNT/EFS каждого экземпляра Докер, таким образом, разделяя объемы установить что-то вроде/мнт/EFS/что-то.

Для этого, это данных пользователя блока делает работу (мы используем его с Amazon ECS Оптимизированной изображений).

Content-Type: multipart/mixed; boundary="==BOUNDARY==" 
MIME-Version: 1.0 

--==BOUNDARY== 
MIME-Version: 1.0 
Content-Type: text/text/x-shellscript; charset="us-ascii" 
#!/bin/bash 
yum install -y nfs-utils 
mkdir "/mnt/efs" 
echo "us-east-1a.fs-1234567.efs.us-east-1.amazonaws.com:/ /mnt/efs nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 0 0" >> /etc/fstab 
mount -a 
/etc/init.d/docker restart 
docker start ecs-agent 
--==BOUNDARY==-- 

Docker возобновляется в конце, в противном случае он не видит установленный объем (necesary только на создание экземпляра).

Конечно, для этого необходимо создать группы безопасности, чтобы экземпляры и EFS могли взаимодействовать через сетевой порт NFS (2049).

 Смежные вопросы

  • Нет связанных вопросов^_^