30 września 2026 · 6 min czytania
Jak upublicznić bucket Amazon S3
Nowe buckety S3 blokują wszelki dostęp publiczny, a listy ACL są domyślnie wyłączone, więc dawny przycisk „make public” przy każdym obiekcie już nic nie robi. Publiczny odczyt zapewnia teraz polityka bucketu.
Krok 1: zezwól na publiczne polityki bucketu
- Otwórz bucket w konsoli S3 i przejdź do karty Permissions.
- W sekcji Block public access (bucket settings) wybierz Edit.
- Odznacz dwa ustawienia dotyczące bucket and access point policies. Dwa ustawienia ACL możesz zostawić włączone, bo polityka nie korzysta z ACL.
- Zapisz i potwierdź.
Jeśli to ustawienie jest włączone także na poziomie konta (Block Public Access settings for this account na pasku bocznym S3), ma ono pierwszeństwo przed ustawieniem bucketu i również musi zezwalać na polityki.
Krok 2: dodaj politykę bucketu do publicznego odczytu
Wciąż na karcie Permissions edytuj Bucket policy i wklej to, wstawiając nazwę swojego bucketu:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicRead",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket/*"
}
]
}
To pozwala odczytywać obiekty, ale nie listować bucketu. Aby upublicznić tylko jeden folder, zawęź zasób, np. do arn:aws:s3:::your-bucket/public/*.
W AWS CLI te same dwa kroki wyglądają tak:
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.jsonKrok 3: znajdź publiczny adres URL
Obiekty są teraz dostępne pod adresem w stylu virtual-hosted:
https://your-bucket.s3.eu-central-1.amazonaws.com/2026/09/report.pdf
Użyj regionu swojego bucketu. Jeśli ten adres zwraca AccessDenied, ustawienia Block Public Access nadal blokują politykę albo w nazwie bucketu w polityce jest literówka.
Bezpieczniejsza alternatywa: CloudFront z prywatnym bucketem
Jeśli wolisz nie otwierać samego bucketu, zostaw włączone Block Public Access i utwórz dystrybucję CloudFront z bucketem jako źródłem (origin) i Origin access control (OAC). CloudFront pokaże Ci politykę bucketu, która pozwala odczytywać obiekty tylko tej dystrybucji. Dostajesz HTTPS na własnej domenie, pamięć podręczną i bucket, który pozostaje prywatny. Zobacz własne domeny dla linków z bucketu.
Częste pytania
Dlaczego „Make public using ACL” już nie działa?
Od kwietnia 2023 nowe buckety mają ustawienie Object Ownership na Bucket owner enforced, co wyłącza listy ACL. Dostęp publiczny musi pochodzić z polityki bucketu lub z CloudFront.
Czy publiczny bucket pozwala innym listować moje pliki?
Nie z powyższą polityką. Zezwala ona tylko na s3:GetObject. Listowanie wymagałoby s3:ListBucket na samym buckecie, czego nie powinno się nadawać publicznie.
Czy publiczny bucket zwiększy mój rachunek za AWS?
Płacisz za żądania i transfer wychodzący, gdy ktoś pobiera pliki. Przy często udostępnianych plikach CloudFront lub dostawca bez opłat za transfer wychodzący, np. Cloudflare R2, zwykle wychodzi taniej.