惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LINUX DO - 最新话题
A
Arctic Wolf
I
Intezer
V
Vulnerabilities – Threatpost
C
Cisco Blogs
MyScale Blog
MyScale Blog
NISL@THU
NISL@THU
Y
Y Combinator Blog
C
CERT Recently Published Vulnerability Notes
P
Privacy International News Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
酷 壳 – CoolShell
酷 壳 – CoolShell
Recorded Future
Recorded Future
云风的 BLOG
云风的 BLOG
S
SegmentFault 最新的问题
Microsoft Security Blog
Microsoft Security Blog
L
LangChain Blog
博客园 - 聂微东
博客园 - 叶小钗
F
Fortinet All Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Recent Announcements
Recent Announcements
C
Cyber Attacks, Cyber Crime and Cyber Security
Latest news
Latest news
Simon Willison's Weblog
Simon Willison's Weblog
P
Palo Alto Networks Blog
S
Schneier on Security
C
Cybersecurity and Infrastructure Security Agency CISA
V
V2EX
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Hacker News
The Hacker News
博客园 - 司徒正美
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
L
LINUX DO - 热门话题
罗磊的独立博客
K
Kaspersky official blog
Last Week in AI
Last Week in AI
Know Your Adversary
Know Your Adversary
小众软件
小众软件
Stack Overflow Blog
Stack Overflow Blog
T
Threat Research - Cisco Blogs
D
DataBreaches.Net
Scott Helme
Scott Helme
P
Proofpoint News Feed
P
Privacy & Cybersecurity Law Blog
P
Proofpoint News Feed
博客园 - 三生石上(FineUI控件)
Hugging Face - Blog
Hugging Face - Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
F
Full Disclosure

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
Amazon S3 Files - Guia prático de criação e montagem em ambiente linux
Isaque Alcan · 2026-05-05 · via DEV Community

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".

Passo 1 - Criando o 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.

Passo 1 - Escolhendo nome para o bucket

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”.

Passo 1 - Habilitando versionamento

Habilite o versionamento e clique em “Save changes”.

Passo 1 - Habilitando versionamento

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”.

Passo 1 - Acessando S3 Files

Em seguida, clique no botão Create file system.

Passo 1 - Criando 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.

Passo 1 - Selecionando o bucket e a VPC

Passo 1 - Mensagem de criação de File system

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:

Passo 2 - Tabela de configuração do Security Group

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.

Passo 2 - Regra de saída do Security Group

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.

Passo 2 - Criar Security Group para File System

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.

Passo 2 - Preencher campos do Security Group para File System

Com o Security Group criado, volte ao sistema de arquivos. Selecione o Alvo de Montagem e clique em Edit.

Passo 2 - Editar alvo de montagem

Em Security Groups, remova o Security Group default e selecione o que você criou na etapa anterior. Clique em Save changes para salvar.

Passo 2 - Selecionar Security Group

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:

Passo 3 - Saída do comando

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

Passo 4 - Saída do comando de montagem

Vá até a página do sistema de arquivos e copie o ID. Ele será necessário para o comando de montagem.

Passo 4 - ID do File System

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

Passo 4 - Verificação de montagem

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

Passo 5 - Criação de arquivo teste direto da instância

Liste o diretório para confirmar no Linux:

ls -la /mnt/s3files/

Passo 5 - Confirmar criação de arquivo no linux

Vá até o bucket criado no passo 1 e verifique se o arquivo se encontra nele.

Passo 5 - Confirmar criação de arquivo no linux

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

Passo 6 - Persistindo a montagem

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…

Extra - Falha ao resolver o nome do S3 Files

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):

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! 🚀