30 Eylül 2026 · 6 dk okuma

Amazon S3 bucket herkese açık nasıl yapılır

Yeni S3 bucket'ları tüm herkese açık erişimi engeller ve ACL'ler varsayılan olarak kapalıdır; yani her nesnedeki eski "make public" düğmesi artık hiçbir şey yapmaz. Herkese açık okuma artık bir bucket policy'den gelir.

1. adım: herkese açık bucket policy'lere izin ver

  1. S3 konsolunda bucket'ı aç ve Permissions sekmesine git.
  2. Block public access (bucket settings) altında Edit'e tıkla.
  3. Bucket and access point policies ile ilgili iki ayarın işaretini kaldır. İki ACL ayarını açık bırakabilirsin, çünkü policy ACL kullanmaz.
  4. Kaydet ve onayla.

Ayar hesap düzeyinde de açıksa (S3 kenar çubuğundaki Block Public Access settings for this account), bucket ayarının önüne geçer ve onun da policy'lere izin vermesi gerekir.

2. adım: public-read bucket policy ekle

Yine Permissions sekmesinde Bucket policy'yi düzenle ve kendi bucket adınla şunu yapıştır:

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

Bu, bucket'ı listelemeye değil, nesneleri okumaya izin verir. Yalnızca bir klasörü herkese açık yapmak için kaynağı daralt, örneğin arn:aws:s3:::your-bucket/public/*.

AWS CLI ile aynı iki adım şöyle:

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

3. adım: herkese açık URL'yi bul

Nesneler artık virtual-hosted URL'den erişilebilir:

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

Bucket'ının bölgesini kullan. Bu adres AccessDenied döndürüyorsa ya Block Public Access ayarları policy'yi hâlâ engelliyordur ya da policy'deki bucket adında yazım hatası vardır.

Daha güvenli alternatif: gizli bucket ile CloudFront

Bucket'ın kendisini açmak istemiyorsan Block Public Access'i açık tut ve kaynağı (origin) bucket olan, Origin access control (OAC) kullanan bir CloudFront dağıtımı oluştur. CloudFront sana nesneleri yalnızca dağıtımın okuyabilmesini sağlayan bucket policy'yi gösterir. Kendi alan adında HTTPS, önbellekleme ve gizli kalan bir bucket elde edersin. Bkz. bucket bağlantıları için özel alan adları.

Sık sorulan sorular

"Make public using ACL" neden artık çalışmıyor?

Nisan 2023'ten beri yeni bucket'larda Object Ownership, ACL'leri devre dışı bırakan Bucket owner enforced olarak ayarlı. Herkese açık erişimin bir bucket policy'den ya da CloudFront'tan gelmesi gerekir.

Herkese açık bir bucket, insanların dosyalarımı listelemesine izin verir mi?

Yukarıdaki policy ile hayır. Yalnızca s3:GetObject'e izin verir. Listeleme için bucket'ın kendisinde s3:ListBucket gerekir, bunu da herkese açık vermemelisin.

Herkese açık bir bucket AWS faturamı artırır mı?

İnsanlar dosya indirdiğinde istekler ve dışarı veri aktarımı için ödeme yaparsın. Çok paylaşılan dosyalar için CloudFront ya da Cloudflare R2 gibi egress ücreti olmayan bir sağlayıcı genellikle daha ucuzdur.