3
respostas

EFS e Fargate - upload de arquivos em PHP

Olá, tenho uma infra com ECR e ECS.

o que eu preciso e ainda não consegui implementar é o EFS como volume para minha aplicação em PHP poder subir arquivos estaticos como PDFs e DOCs. Tentei a documentação da AWS mas sem sucesso.

alguém teria um exemplo em como monto este volume e posso utilizar ele para upload de arquivos e compartilhamento entre todas as minhas taks?

compartilhamento persistente.

a estruturo que criei foi. CodeCommit -> CodeBluild -> ECR -> Cluster -> Services e Tasks

já inclui o volume na taks definition mas ainda não consegui usar ele de fato pelo fargate.

até valeu

3 respostas

Olá, André!

Pelo que entendi, você está tentando implementar o uso do EFS como volume para sua aplicação em PHP poder subir arquivos estáticos como PDFs e DOCs, correto?

Uma maneira de fazer isso é seguir os seguintes passos:

  1. Crie um sistema de arquivos EFS na sua conta da AWS. Você pode fazer isso através do console da AWS ou via código usando a AWS CLI ou SDKs.

  2. Em seguida, você precisa configurar o seu cluster ECS para usar o EFS como um volume compartilhado. Isso pode ser feito através da definição de tarefas (task definitions) do ECS. Certifique-se de adicionar o EFS como um volume e montá-lo na pasta correta dentro do seu contêiner.

  3. Agora, você precisa atualizar a sua aplicação PHP para fazer o upload dos arquivos para o diretório montado do EFS. Certifique-se de que as permissões de escrita estejam corretamente configuradas para o diretório.

  4. Por fim, você pode testar o upload de arquivos estáticos através da sua aplicação PHP. Certifique-se de que a aplicação esteja apontando corretamente para o diretório montado do EFS.

Infelizmente, não tenho um exemplo específico para compartilhar com você, mas espero que esses passos te ajudem a implementar o uso do EFS para upload de arquivos em PHP utilizando o Fargate.

Espero ter ajudado e bons estudos!

Olá, isso mesmo uma aplicação em PHP onde posso subir arquivos estáticos como PDF's e DOC's.

Já fiz todo o processo de criação do EFS, ECS, também taks definition e Cluster ( service e tasks ), quando não incluo o volume ele funciona tudo certo, mas quando faço a inclusão do volume em minha taks definition ele gera um erro ele diz:

Tarefa interrompida em: 2023-10-16T13:43:04.222Z
ResourceInitializationError: failed to invoke EFS utils commands to set up EFS volumes: stderr: b'mount.nfs4: access denied by server while mounting 127.0.0.1:/' : unsuccessful EFS utils command execution; code: 32

Refiz os passos criei um grupo de segurança dando as permissões necessárias e mesmo assim não consigo passar esse erro.

Estou usando um dockerfile que monta um imagem do nginx com php em uma máquina ubuntu. será que preciso instalação algum "amazon-efs-utils" ou algo parecido? obs: pelo "apt search amazon-efs-utils" ele não encontra nenhum candidato a instação..

valeu. vou continuar tentando mas se tiver algum dica seria legal.

Já fiz o procedimento de criar um ponto de acesso.

também tentei expondo a porta 2049 no dockerfile e também no task definition e mesmo assim o volume não é montado.

exemplo

app/ - pasta do aplicativo
    img/ - pasta que deve ser montado
    public/ - pasta com os arquivos públicos e estáticos como index.php e css js
nginx/ - pasta configurações do nginx apontando document root para /var/www/html/app/public
php/ - pasta de configurações do php
dockerfile

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade