Como faço para montar um sistema de arquivos do Amazon EFS em um contêiner ou tarefa do Amazon ECS em execução no Fargate?

5 minuto de leitura
0

Quero montar um sistema de arquivos do Amazon Elastic File System (Amazon EFS) em um contêiner ou tarefa do Amazon Elastic Container Service (Amazon ECS) em execução no AWS Fargate.

Breve descrição

Para montar um sistema de arquivos do Amazon EFS em uma tarefa ou contêiner do Fargate, você deve primeiro criar uma definição de tarefa. Em seguida, disponibilize essa definição de tarefa para os contêineres em sua tarefa em todas as zonas de disponibilidade em sua região da AWS. Em seguida, suas tarefas do Fargate usam o Amazon EFS para montar automaticamente o sistema de arquivos nas tarefas que você especifica em sua definição de tarefa.

Importante: A resolução a seguir se aplica à plataforma Fargate versão 1.4.0 ou posterior, que tem armazenamento persistente que você pode definir no nível da tarefa e do contêiner no Amazon ECS. As versões 1.3.0 ou anteriores da plataforma Fargate não oferecem suporte ao armazenamento persistente usando o Amazon EFS.

Antes de concluir as etapas na seção Resolução, você deve ter:

Resolução

Criar e configurar um sistema de arquivos Amazon EFS

1.    Crie um sistema de arquivos do Amazon EFS e anote a ID do EFS e a ID do grupo de segurança.

Observação: Seu sistema de arquivos do Amazon EFS, cluster Amazon ECS e tarefas do Fargate devem estar todos na mesma VPC.

2.    Para permitir conexões de entrada na porta 2049 (Sistema de Arquivos de Rede ou NFS) do grupo de segurança associado à sua tarefa ou serviço do Fargate, edite as regras do grupo de segurança do seu sistema de arquivos EFS.

3.    Atualize o grupo de segurança do seu serviço Amazon ECS para permitir conexões de saída na porta 2049 com o grupo de segurança do seu sistema de arquivos do Amazon EFS.

Criar uma definição de tarefa

1.    Abra o console do Amazon ECS.

2.    No painel de navegação, escolha Definições de tarefas e, em seguida, escolha Criar nova definição de tarefa.

3.    Na seção Selecionar compatibilidade do tipo de inicialização, escolha FARGATE e escolha Próxima etapa.

4.    Na seção Configurar definições de tarefas e contêineres, em Nome da definição da tarefa, insira um nome para sua definição de tarefa.

5.    Na seção Volumes, escolha Adicionar volume.

6.    Em Nome, insira um nome para o volume.

7.    Em Tipo de volume, insira EFS.

8.    Em ID do sistema de arquivos, insira a ID do seu sistema de arquivos do Amazon EFS.

Observação: Você pode especificar opções personalizadas para Diretório raiz, Criptografia em trânsito e autorização do IAM para EFS. Ou você pode aceitar o padrão, em que “/” é o diretório raiz.

9.    Escolha Adicionar.

10.    Na seção Definição de contêineres, escolha Adicionar contêiner.

11.    Na seção ARMAZENAMENTO E REGISTRO, na subseção Pontos de montagem, selecione o volume que você criou para Volume de origem na etapa 5.

12.    Em Caminho do contêiner, escolha o caminho do contêiner.

13.    (Opcional) Na seção AMBIENTE, em Ponto de entrada, insira seu ponto de entrada.

14.    Em Comando, digite o comando [df, -h ] para exibir o sistema de arquivos montado. 

Observação: Você pode usar o ponto de entrada e o comando para testar se o sistema de arquivos do Amazon EFS foi montado com sucesso. Por padrão, o contêiner fecha após a execução bem-sucedida do comando df -h. O exemplo de definição de tarefa JSON na etapa 16 usa um loop while infinito para manter a tarefa em execução.

15.    Escolha Adicionar.

16.    Preencha os campos restantes no assistente de definição de tarefas e escolha Criar.

No exemplo a seguir, a definição da tarefa cria um volume de dados chamado efs-test. O contêiner nginx monta o volume de dados do host no caminho Any_Container_Path.

{
    "family": "sample-fargate-test",
    "networkMode": "awsvpc",
    "executionRoleArn": "arn:aws:iam::1234567890:role/ecsTaskExecutionRole",
    "containerDefinitions": [
        {
            "name": "fargate-app",
            "image": "nginx",
            "portMappings": [
                {
                    "containerPort": 80,
                    "hostPort": 80,
                    "protocol": "tcp"
                }
            ],
            "essential": true,
            "entryPoint": [
                "sh",
		"-c"
            ],
            "command": [
                "df -h && while true; do echo \"RUNNING\"; done"
            ],
            "mountPoints": [
                {
                    "sourceVolume": "efs-test",
                    "containerPath": "Any_Container_Path"
                }
            ],
            "logConfiguration": {
              "logDriver": "awslogs",
              "options": {
                "awslogs-group": "AWS_LOG_GROUP_PATH",
                "awslogs-region": "AWS_REGION",
                "awslogs-stream-prefix": "AWS_STREAM_PREFIX"
              }
            }
        }
    ],

    "volumes": [
        {
            "name": "efs-test",
            "efsVolumeConfiguration": {
                "fileSystemId": "fs-123xx4x5"
            }
        }
    ],

    "requiresCompatibilities": [
           "FARGATE"
       ],

    "cpu": "256",
    "memory": "512"
}

Observação: substitua fileSystemId, logConfiguration, **containerPath ** e outros valores de espaço reservado com valores para sua configuração personalizada. Além disso, confirme se sua definição de tarefa tem um nome do recurso da Amazon (ARN) de função de execução para suporte ao driver de log awslogs.

Executar uma tarefa do Fargate e verificar seus logs de tarefas

1.    Execute uma tarefa do Fargate usando a definição de tarefa que você criou anteriormente.

Importante: Certifique-se de executar sua tarefa na plataforma Fargate versão 1.4.0.

2.    Para verificar se seu sistema de arquivos do Amazon EFS foi montado com sucesso no seu contêiner Fargate, verifique seus logs de tarefas.

A saída de df-h é semelhante à seguinte:

2020-10-27 15:15:35
Filesystem 1K-blocks Used Available Use% Mounted on

2020-10-27 15:15:35
overlay 30832548 9859324 19383976 34% /

2020-10-27 15:15:35
tmpfs 65536 0 65536 0% /dev

2020-10-27 15:15:35
shm 2018788 0 2018788 0% /dev/shm

2020-10-27 15:15:35
tmpfs 2018788 0 2018788 0% /sys/fs/cgroup

2020-10-27 15:15:35
fs-xxxxxxxx.efs.us-east-1.amazonaws.com:/ 9007199254739968 0 9007199254739968 0% /Any_Container_Path

2020-10-27 15:15:35
/dev/xvdcz 30832548 9859324 19383976 34% /etc/hosts

2020-10-27 15:15:35
tmpfs 2018788 0 2018788 0% /proc/acpi

2020-10-27 15:15:35
tmpfs 2018788 0 2018788 0% /sys/firmware

2020-10-27 15:15:35
tmpfs 2018788 0 2018788 0% /proc/scsi

RUNNING

Informações relacionadas

Segurança no Amazon EFS

Tutorial: Uso de sistemas de arquivos do Amazon EFS com o Amazon ECS usando o console clássico

AWS OFICIAL
AWS OFICIALAtualizada há 3 anos