Utilizando EFS para persistência de arquivos do container ECS/Fargate

Paulo Ponciano
3 min readJul 17, 2022

--

Caso esteja executando sua aplicação em container docker utilizando o ECS/Fargate e tenha a necessidade de persistir arquivos de um determinado diretório, o EFS pode ser útil.

Dessa forma, pode ter a tranquilidade de caso o container seja destruído, estes arquivos não serão perdidos.

Com esse recurso, é possível também executar vários containers utilizando o mesmo respositório de persistência e compartilhando os mesmos dados.

Topologia de referência

Pré-requisitos

  • Acesso ao console AWS e ao serviço ECS
  • Cluster ECS/Fargate já configurado
  • EFS já criado

Considerações

  • Foi utilizado uma imagem httpd do Docker Hub
  • Um bastion host Linux pode ser útil para administração e deploy no EFS
  • O diretório padrão do httpd (/usr/local/apache2/htdocs) será consumido no EFS
  • Foi feito upload de uma nova index.html através do bastion host para o diretório raiz do EFS que será montado no WORKDIR do container

Execução

  1. Visualização do EFS criado — Lembre-se de permitir NFS no security group:

2. Na task definition do ECS, crie uma nova revisão para adicionar as configurações de volume:

3. Ainda na task definition, será necessário ajustar container definitions:

4. Atualize o service para utlizar a revisão correspondente aos ajustes realizados:

5. It works!

Conclusão

Foi utilizado uma função básica de web server para demonstrar a funcionalidade do EFS como repositório de persistência. Assim cada container proveniente da task definition que foi atualizada pode consumir o repositório, podendo ser parado e iniciado a qualquer momento sem ocasionar perda de dados (no caso do exemplo, a index.html).

Happy building!

--

--

Paulo Ponciano

Solutions Architect | 7x AWS Certified | AWS Black Belt | AWS Community Builder