Problemas com Bucket Público: Lista Objetos, mas Não Permite Acesso aos Arquivos
Cenário
O bucket está configurado como público, permitindo a listagem de objetos, mas ao tentar acessá-los diretamente, ocorre erro de acesso negado (403 Forbidden).
Esse comportamento é correto, conforme a documentação, pois a permissão para listar objetos e a permissão para acessá-los são gerenciadas separadamente via ACLs.
Diagnóstico
-
O bucket está realmente público?
-
Execute:
mgc object-storage buckets acl get NOME_DO_BUCKET
-
Confirme se a ACL do bucket permite
READ
público.
-
-
Os objetos dentro do bucket possuem permissão pública?
-
A ACL do bucket não define automaticamente a ACL dos objetos.
-
Verifique as permissões de um objeto com:
mgc object-storage objects acl get NOME_DO_BUCKET/NOME_DO_OBJETO
-
Se não houver
READ
emGrantee: DisplayName: "" ID: ""
, o objeto não está acessível publicamente.
-
Solução
Para garantir que os objetos também sejam públicos, é necessário definir a ACL deles manualmente.
Tornar um objeto público
Execute o seguinte comando para definir a ACL public-read
em um objeto:
mgc object-storage objects acl set NOME_DO_BUCKET/CAMINHO_DO_OBJETO --public-read
Fazer o upload dos objetos já públicos
Ao realizar o upload dos arquivos, defina a ACL public-read
diretamente:
aws s3 cp <file> s3://<bucket-name>/ --acl public-read
Conclusão
-
A ACL do bucket não define automaticamente a ACL dos objetos.
-
Para acessar objetos publicamente, é necessário definir explicitamente a ACL
public-read
para cada um deles. -
Para mais detalhes, consulte a documentação de ACLs da Magalu Cloud.