Como montar o Amazon EFS como volume de dados na tarefa do ECS?

5

Userdata na configuração de lançamento:

#!/bin/bash
echo ECS_CLUSTER=prodcluster >> /etc/ecs/ecs.config

sudo yum install -y nfs-utils 
sudo mkdir /home/ec2-user/web_file_uploads 
sudo chmod 777 /home/ec2-user/web_file_uploads 

sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 fs-abcdef.efs.ap-southeast-2.amazonaws.com:/ /home/ec2-user/web_file_uploads 

Definição de tarefa:

{
  "networkMode": "bridge",
  "containerDefinitions": [
    {
      "portMappings": [
        ...
      ],
      "essential": true,
      "mountPoints": [
        {
          "containerPath": "/src/temp_uploads/",
          "sourceVolume": "web_file_uploads",
          "readOnly": null
        }
      ],
      "name": "webapp",
      "readonlyRootFilesystem": null,
      "image": "911911911.dkr.ecr.ap-southeast-2.amazonaws.com/webapp:release6",
      "memoryReservation": 150
    }
  ],
  "volumes": [
    {
      "host": {
        "sourcePath": "/home/ec2-user/web_file_uploads"
      },
      "name": "web_file_uploads"
    }
  ],
  "family": "webapp-task"
}

Nota : Eu adicionei portas necessárias ao grupo de segurança. A pasta src / temp_uploads deve ter todas as outras instâncias de contêiner lançadas com essa definição de tarefa.

Problema : Se eu montá-lo manualmente usando sudo mount ... folder1 , coloque alguns arquivos lá e monte o mesmo para sudo mount ... folder2 A pasta 2 contém as alterações que mostra se monta corretamente.

O problema é que o volume mapeado através da definição da tarefa não mapeia efs . Em vez disso, coloca / usa o conteúdo, na verdade, dentro de /home/ec2-user/web_file_uploads . Como fazer esse volume realmente mapeado para efs

    
por sith 04.04.2017 / 06:34

1 resposta

2

Modifique a configuração do almoço para reiniciar o serviço de encaixe logo após a montagem do EFS . Então, somente o ECS usará o EFS montado como volume. Caso contrário, usará o diretório original (a montagem será ignorada).

#!/bin/bash
echo ECS_CLUSTER=prodcluster >> /etc/ecs/ecs.config
sudo yum install -y nfs-utils

sudo stop ecs
sudo mkdir /home/ec2-user/web_file_uploads
sudo chmod 777 /home/ec2-user/web_file_uploads
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 fs-abcdef.efs.ap-southeast-2.amazonaws.com:/ /home/ec2-user/web_file_uploads
sudo service docker restart
sudo start ecs

Observação: o serviço do ECS será interrompido após a reinicialização do serviço de encaixe conforme o Agente do ECS é executado dentro da janela de encaixe. Você precisa iniciar o Serviço ECS posteriormente.

    
por 06.04.2017 / 07:52