30 de setembro de 2026 · 6 min de leitura

Como deixar um bucket do Amazon S3 público

Buckets novos do S3 bloqueiam todo acesso público, e as ACLs vêm desativadas por padrão, então o antigo botão "tornar público" em cada objeto não faz mais nada. Hoje, a leitura pública vem de uma bucket policy.

Passo 1: permita bucket policies públicas

  1. Abra o bucket no console do S3 e vá até a aba Permissions.
  2. Em Block public access (bucket settings), selecione Edit.
  3. Desmarque as duas opções sobre bucket and access point policies. Você pode deixar as duas opções de ACL ativadas, porque a policy não usa ACLs.
  4. Salve e confirme.

Se essa configuração também estiver ativada no nível da conta (Block Public Access settings for this account, na barra lateral do S3), ela prevalece sobre a do bucket e também precisa permitir policies.

Passo 2: adicione uma bucket policy de leitura pública

Ainda em Permissions, edite a Bucket policy e cole isto, com o nome do seu bucket:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicRead",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::your-bucket/*"
    }
  ]
}

Isso permite ler objetos, não listar o bucket. Para deixar só uma pasta pública, restrinja o recurso, por exemplo arn:aws:s3:::your-bucket/public/*.

Com o AWS CLI, os mesmos dois passos ficam assim:

aws s3api put-public-access-block --bucket your-bucket \
  --public-access-block-configuration \
  BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=false,RestrictPublicBuckets=false

aws s3api put-bucket-policy --bucket your-bucket --policy file://policy.json

Passo 3: encontre a URL pública

Os objetos agora estão disponíveis na URL no estilo virtual-hosted:

https://your-bucket.s3.eu-central-1.amazonaws.com/2026/09/report.pdf

Use a região do seu bucket. Se esse endereço retornar AccessDenied, as configurações do Block Public Access ainda estão bloqueando a policy, ou o nome do bucket na policy está com erro de digitação.

A alternativa mais segura: CloudFront com bucket privado

Se você prefere não abrir o próprio bucket, mantenha o Block Public Access ativado e crie uma distribuição do CloudFront com o bucket como origem e Origin access control (OAC). O CloudFront mostra a bucket policy que permite que só a distribuição leia os objetos. Você ganha HTTPS no seu próprio domínio, cache e um bucket que continua privado. Veja domínios personalizados para links de bucket.

Perguntas frequentes

Por que "Make public using ACL" não funciona mais?

Desde abril de 2023, buckets novos vêm com Object Ownership definido como Bucket owner enforced, o que desativa as ACLs. O acesso público precisa vir de uma bucket policy ou do CloudFront.

Um bucket público deixa as pessoas listarem meus arquivos?

Não com a policy acima. Ela só permite s3:GetObject. Listar exigiria s3:ListBucket no próprio bucket, que você não deve liberar publicamente.

Um bucket público vai aumentar minha conta da AWS?

Você paga pelas requisições e pela transferência de dados de saída quando as pessoas baixam arquivos. Para arquivos muito compartilhados, o CloudFront ou um provedor sem taxa de egress, como o Cloudflare R2, costuma sair mais barato.