30 September 2026 · 6 menit membaca

Cara membuat bucket Amazon S3 menjadi publik

Bucket S3 baru memblokir semua akses publik, dan ACL dinonaktifkan secara default, sehingga tombol lama “make public” di setiap objek tidak lagi berfungsi. Akses baca publik kini berasal dari bucket policy.

Langkah 1: izinkan bucket policy publik

  1. Buka bucket di konsol S3 dan masuk ke tab Permissions.
  2. Di bagian Block public access (bucket settings), pilih Edit.
  3. Hapus centang dua pengaturan tentang bucket and access point policies. Dua pengaturan ACL boleh tetap aktif, karena policy ini tidak memakai ACL.
  4. Simpan dan konfirmasi.

Jika pengaturan yang sama juga aktif di tingkat akun (Block Public Access settings for this account di bilah samping S3), pengaturan itu mengalahkan pengaturan bucket dan juga harus mengizinkan policy.

Langkah 2: tambahkan bucket policy untuk akses baca publik

Masih di Permissions, edit Bucket policy dan tempel ini, dengan nama bucket Anda:

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

Policy ini mengizinkan membaca objek, bukan melihat daftar isi bucket. Untuk membuat hanya satu folder yang publik, persempit resource-nya, misalnya arn:aws:s3:::your-bucket/public/*.

Dengan AWS CLI, dua langkah yang sama adalah:

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

Langkah 3: temukan URL publiknya

Objek kini tersedia di URL bergaya virtual-hosted:

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

Gunakan wilayah bucket Anda. Jika alamat ini menghasilkan AccessDenied, berarti pengaturan Block Public Access masih memblokir policy, atau ada salah ketik pada nama bucket di policy.

Alternatif yang lebih aman: CloudFront dengan bucket pribadi

Jika Anda tidak ingin membuka bucket itu sendiri, biarkan Block Public Access aktif dan buat distribusi CloudFront dengan bucket sebagai origin serta Origin access control (OAC). CloudFront menampilkan bucket policy yang hanya mengizinkan distribusi tersebut membaca objek. Anda mendapatkan HTTPS di domain sendiri, caching, dan bucket yang tetap pribadi. Lihat domain kustom untuk tautan bucket.

Pertanyaan umum

Mengapa “Make public using ACL” tidak berfungsi lagi?

Sejak April 2023, Object Ownership pada bucket baru diatur ke Bucket owner enforced, yang menonaktifkan ACL. Akses publik harus berasal dari bucket policy atau CloudFront.

Apakah bucket publik membuat orang bisa melihat daftar file saya?

Tidak dengan policy di atas. Policy itu hanya mengizinkan s3:GetObject. Melihat daftar isi memerlukan s3:ListBucket pada bucket itu sendiri, yang sebaiknya tidak Anda berikan secara publik.

Apakah bucket publik akan menaikkan tagihan AWS saya?

Anda membayar permintaan dan transfer data keluar saat orang mengunduh file. Untuk file yang sangat sering dibagikan, CloudFront atau penyedia tanpa biaya egress, seperti Cloudflare R2, biasanya lebih murah.