A gestão de armazenamento na AWS sempre exigiu uma escolha difícil: a escalabilidade e o baixo custo do Amazon S3 (Object Storage) ou a facilidade de montagem e baixa latência do Amazon EFS (File Storage). Para aplicações legadas ou fluxos de trabalho que dependem de comandos de sistema de arquivos nativos, essa escolha muitas vezes significava reescrita de código ou custos elevados de infraestrutura.
Com o recente lançamento do Amazon S3 Files, essa barreira desapareceu. Agora é possível montar buckets S3 diretamente em instâncias EC2, containers ou funções Lambda utilizando o protocolo NFS v4.1, aproveitando a robustez do motor do EFS.
Se você quiser conferir mais detalhes sobre essa novidade, preparei um artigo com tudo que você precisa saber.
Neste tutorial, vamos além da teoria. Este é um guia prático para configurar o S3 Files via console, provisionar a infraestrutura necessária e, o mais importante, resolver os desafios de rede e DNS que surgem em ambientes reais de produção.
Vamos botar a mão na massa!
Passo 1: Criar o Bucket e Inicializar o S3 Files
1. Criando o Bucket S3
Como ponto de partida, vamos criar o bucket que será utilizado para armazenamento dos arquivos.
Acesse o console do Amazon S3 e clique em "Create Bucket".
Dê um nome para o bucket e avance até o final da página. Clique no botão “Create Bucket” para concluir a criação.
Obs: Lembre-se de usar um nome globalmente único para seu bucket S3.
Agora que criamos o bucket, será necessário ativar o versionamento do Bucket. Esse é um pré-requisito obrigatório para utilizá-lo como sistema de arquivos.
Clique na guia “Properties” e em “Bucket Versioning” clique em “Edit”.
Habilite o versionamento e clique em “Save changes”.
2. Inicializando o Amazon S3 Files
Agora que o bucket existe e está com o versionamento ativo, vamos criar a camada de sistema de arquivos sobre ele. No menu lateral esquerdo, clique em “File Systems”.
Em seguida, clique no botão Create file system.
Clique no botão “Browse S3” e selecione o bucket criado na etapa anterior. Após selecionar o bucket, será necessário selecionar a VPC em que o bucket estará. Aqui é importante que você selecione a mesma VPC em que sua EC2 (ou outro recurso) está alocado.
Após selecionar o bucket e a VPC, clique no botão “Create file system” e aguarde até que o processo de criação seja concluído.
Obs: Ao criar um sistema de arquivos usando o Console AWS, o S3 Files cria automaticamente um destino de montagem em cada Zona de Disponibilidade na sua VPC padrão e um ponto de acesso para o sistema de arquivos.
Passo 2: Configurar permissões
1. Função do IAM
Para que a nossa instância EC2 consiga acessar o sistema de arquivos e o bucket, vamos adicionar as seguintes políticas gerenciadas à Função IAM atachada nossa EC2:
- AmazonS3FilesClientFullAccess
- AmazonS3FullAccess
Obs: Para esse tutorial vamos conceder permissão Full, mas é altamente recomendável seguir o princípio do privilégio mínimo.
2. Grupos de Segurança
Após a criação do sistema de arquivos e o destino de montagem, é necessário ajustar o Security Group de ambos (sistema de arquivos e EC2).
A tabela abaixo mostra como deve ser essa configuração:
Por padrão, o Security Group já vem com uma regra de saída liberando todo tráfego. Portanto, não será necessário adicionar outra regra específica para a porta 2049 no SG da instância EC2.
Para o nosso sistema de arquivos, vamos criar um security group exclusivo e alterar no alvo de montagem. Para isso, vá ao console da EC2 e no menu lateral esquerdo clique em Security Groups > Create scurity group.
Preencha os campos com o nome, descrição e selecione a mesma VPC do sistema de arquivos. Adicione uma regra de entrada liberando a porta 2049 para o SG da instância EC2. Após, clique em Create security group.
Com o Security Group criado, volte ao sistema de arquivos. Selecione o Alvo de Montagem e clique em Edit.
Em Security Groups, remova o Security Group default e selecione o que você criou na etapa anterior. Clique em Save changes para salvar.
Passo 3: Instalar cliente na EC2
Para usar o S3 Files com o Amazon EC2, você precisa instalar o cliente amazon-efs-utils na versão 3.0.0 ou superior. O amazon-efs-utils, uma coleção compartilhada de ferramentas de código aberto para o Amazon EFS e o Amazon S3 Files.
Acesse sua instância EC2 e digite o comando abaixo:
Para Amazon Linux: sudo yum -y install amazon-efs-utils
Observe se ao final da saída aparece como a imagem abaixo:
Para outras distribuições Linux compatíveis: curl https://amazon-efs-utils.aws.com/efs-utils-installer.sh | sudo sh -s -- --install
Passo 4: Montagem do sistema de arquivos
Ainda dentro da instância, crie o diretório onde o sistema de arquivos será montado. Por exemplo:
sudo mkdir /mnt/s3files
Vá até a página do sistema de arquivos e copie o ID. Ele será necessário para o comando de montagem.
Volte na instância EC2 e execute o comando de montagem abaixo:
sudo mount -t s3files file-system-id /mnt/s3files
Obs: altere file-system-id pelo ID do seu sistema de arquivos.
Exemplo: sudo mount -t s3files fs-008801558069a98e7 /mnt/s3files
Após executar o comando de montagem, execute o seguinte comando para verificar se o mesmo aparece montado:
df -h
Podemos ver que a montagem ocorreu com sucesso!
Repare na última linha do df -h, na coluna Size. Ele mostra 8.0E.
Isso significa 8 Exabytes (ou seja, 8 milhões de Terabytes). Como o S3 é um armazenamento de objetos virtualmente ilimitado, o sistema operacional Linux não sabe como lidar com o conceito de "infinito", então a AWS injeta esse valor de 8 EB para o SO parar de se preocupar com espaço livre.
Obs: apesar de o disco mostrar 8 Exabytes de espaço, você só paga pelos exatos Kilobytes que gravar lá dentro. Adeus discos EBS de 1TB ociosos!
Outro detalhe que podemos observar é que na coluna Filesystem ele montou como 127.0.0.1:/. Isso acontece porque o utilitário amazon-efs-utils que instalamos é inteligente: ele cria um túnel local (stunnel) invisível dentro da sua EC2 para garantir que todos os arquivos enviados para o S3 Files sejam criptografados em trânsito (TLS) antes de saírem pela placa de rede.
Passo 5: Testando o funcionamento
Execute o comando abaixo para criar um arquivo diretamente no diretório de montagem do sistema de arquivos:
echo "Hello World diretamente da minha EC2 para o S3 Files!" | sudo tee /mnt/s3files/teste-blog.txt
Liste o diretório para confirmar no Linux:
ls -la /mnt/s3files/
Vá até o bucket criado no passo 1 e verifique se o arquivo se encontra nele.
Passo 6: Persistindo a montagem
Para que a montagem persista ao reiniciar a instância, basta executar o comando a seguir para adicionar uma instrução no arquivo /etc/fstab (File System Table). Esse arquivo é lido pelo sistema operacional toda vez que ele é iniciado.
echo "file-system-id /mnt/s3files s3files _netdev 0 0" | sudo tee -a /etc/fstab
Explicando os parâmetros:
- file-system-id: O ID do seu S3 Files.
- /mnt/s3files: A pasta local onde ele deve ser montado.
- s3files: O tipo do sistema de arquivos (o Linux sabe que precisa usar o utilitário da AWS).
- _netdev: Esse é o parâmetro mais importante! Ele avisa ao Linux: "Isso é um disco de rede. Só tente montá-lo depois que a placa de rede e a internet estiverem ligadas durante o boot". Sem isso, a sua máquina pode travar ao reiniciar.
- 0 0: Desativa os utilitários antigos de backup e verificação de disco (fsck) do Linux, pois o S3 já é totalmente gerenciado pela AWS.
Como mexer no /etc/fstab pode ser perigoso (um erro de digitação pode impedir a máquina de ligar), sempre faça a "Prova de Fogo" simulando a leitura do arquivo:
Desmonta a montagem manual que fizemos antes:
sudo umount /mnt/s3files
Pede pro Linux ler o fstab e montar tudo que está lá:
sudo mount -a
Verifica se o S3 voltou a aparecer:
df -h
Se o comando df -h mostrar novamente o seu disco de 8.0E, parabéns! Sua configuração de infraestrutura está impecável e totalmente à prova de falhas de reinicialização.
Extra: Troubleshooting (Erros Comuns e Soluções)
Falha ao resolver o nome do S3 Files
O Sintoma: Ao tentar rodar o comando de mount no Linux, você recebe:
Failed to resolve "use1-az1.fs-xxx.s3files.us-east-1.on.aws" - check that your file system ID is correct…
Por que acontece: A sua instância EC2 está isolada e não consegue traduzir o endereço (DNS) do S3 Files para um IP privado dentro da rede.
A Solução (Verificação Dupla):
- Vá ao console do S3 Files, clique no seu File System e na aba Mount targets, garanta que existe um alvo com o status Available na mesma subnet/VPC da sua EC2.

- Vá ao console de VPC, selecione a sua VPC, clique em "Edit VPC settings" e garanta que as opções DNS resolution e DNS hostnames estejam obrigatoriamente habilitadas.

DNS configurado, mas a montagem continua falhando
O Sintoma: Você ativou as opções de DNS na VPC, o Mount Target está Available, mas o erro Failed to resolve insiste em aparecer.
Por que acontece (Atraso de Propagação): O Route 53 Resolver (o DNS nativo da AWS) pode levar alguns minutos para propagar a nova rota do S3 Files para toda a sua rede local.
A Solução: Você pode esperar alguns minutos ou fazer um bypass forçado de DNS. Pegue o IP local do seu Mount Target no painel da AWS (ex: 10.0.1.194) e injete-o diretamente no arquivo de hosts do Linux:
echo "10.0.1.194 use1-az1.fs-SEU-ID.s3files.us-east-1.on.aws fs-SEU-ID.s3files.us-east-1.on.aws" | sudo tee -a /etc/hosts
Nota: Assim que o DNS da AWS terminar de propagar nos bastidores (geralmente após alguns minutos ou no próximo reboot), essa linha não será mais necessária e a resolução nativa assumirá o controle.
O comando de montagem não dá erro, mas fica "travado"
O Sintoma: Você roda o sudo mount, não aparece mensagem de erro de DNS, mas o cursor fica piscando eternamente (Timeout).
Por que acontece: O DNS funcionou, a EC2 encontrou o S3 Files, mas o Security Group do seu Mount Target está bloqueando a porta de comunicação.
A Solução: Vá no Security Group atrelado ao Mount Target do S3 Files e adicione uma Inbound Rule (Regra de Entrada) liberando a porta 2049 (NFS) para o IP privado da sua EC2 ou para o Security Group atrelado a ela.
Conclusão
O Amazon S3 Files é, sem dúvida, uma daquelas novidades que vêm para resolver uma dor real do dia a dia. Agora, você tem o poder do armazenamento virtualmente infinito do S3 (aqueles assustadores 8 Exabytes) acessível diretamente como um disco de rede no seu servidor Linux. Tudo isso sem precisar reescrever aplicações legadas para entender as APIs do S3 e, o melhor, pagando apenas pelos Kilobytes que você realmente utiliza.
Seja para migrar sistemas antigos, simplificar fluxos de ingestão de dados ou apenas explorar novas arquiteturas, essa integração via protocolo NFS abre um leque gigante de possibilidades para nós, desenvolvedores e engenheiros de infraestrutura.
E aí, o que achou dessa nova funcionalidade? Já tem algum caso de uso em mente para aplicar o S3 Files na sua empresa?
Se este artigo foi útil para você, não se esqueça de deixar um ❤️ ou 🦄. Caso tenha ficado com alguma dúvida ou tenha esbarrado em um erro diferente durante a configuração, deixe um comentário abaixo e vamos conversar!
Até a próxima! 🚀






















Top comments (0)