Cara membuat AWS S3 Bucket Public/Private Access Dengan Mudah

JudisWeb – Cara membuat Public Bucket AWS S3 – Penyimpanan files, media, video kadang menjadikan sebuah masalah saat kapasitas penyimpanan server mulai penuh dan kinerja server makin terbebani karena harus memproses file tersebut saat diakses secara publik. AWS S3 merupakan alternatif terbaik sebagai media penyimpanan secara cloud yang bisa di akses secara publik maupun private.

Apa itu AWS S3?

Amazon Web Services S3 (Amazon Simple Storage Service) adalah layanan dari AWS sebagai penyimpanan objek. Yang menawarkan fitur untuk ketersediaan data dan keamanan data serta skalabilitas. Dan bisa digunakan sebagai analisis big data, website, cloud apps. Di desain dengan 99.9% durability artinya data yang kita simpan tidak akan hilang ataupun rusak dan mudah dalam mengelola dan mengkonfigurasi kontrol akses baik secara publik maupun private.

Secara default kebijakan pada AWS S3 adalah bersifat pribadi. Artinya file yang tersimpan hanya kita yang bisa akses, dan hanya beberapa pihak/client yang kita tentukan untuk mengaksesnya dengan memberikan rules terhadap file tersebut.

Dan untuk membuat Bucket S3 menjadi publik atau menjadikan sebagai web hosting sangatlah mudah.

AWS S3 Bucket

AWS S3 Bucket merupakan layanan cloud-storage dari AWS dimana kita bisa menyimpan apapun berupa file, gambar, video, bahkan sebuah website (statis). Sebelum masuk kedalam pembahasan S3 Bucket jika dibutuhkan akun AWS, jika belum memiliki akun AWS silahkan baca tutorial yang saya buat disini atau dalam hal ini menggunakan AWS Free Tier untuk menggunakan S3 Bucket.

AWS S3 Free Tier Spesifikasi: 5 GB storage, 20,000 Get Requests, dan 2,000 Put Requests free of charge.

Jika sudah memiliki akun AWS, login ke AWS Management Console.

Pada dashboard AWS Management Console, cari pada bagian Services dan pilih S3.

Membuat S3 Bucket

AWS S3 Dashboard
AWS S3 Dashboard

Setelah masuk Dashboard AWS S3, click Create bucket.

General configuration

Pada General Information, isi Nama S3 Bucket dan pilih Region mana kita akan menempatkan Bucket tersebut. Disini saya menggunakan region Singapore sebagai tempat penyimpanan.

s3 bucket name
Create S3 Bucket

Adapun beberapa aturan untuk memberi nama pada bucket:

  • Panjang nama bucket harus antara 3 dan 63 karakter.
  • Nama bucket hanya boleh terdiri dari huruf kecil, angka, titik (.), dan tanda hubung (-).
  • Nama bucket harus diawali dan diakhiri dengan huruf atau angka.
  • Nama bucket tidak boleh diformat sebagai alamat IP (misalnya, 172.122.23.4).

Copy setting from existing bucket – optional, kita bisa membuat bucket baru dengan setting yang sama dengan bucket lama yang telah kita buat sebelumnya, misal setting Permission, Tag, ACL atau Access Control List Public/Private.

Block Public Access settings for this bucket

s3 block all
Block all public access

Pada bagian Block Public Access settings for this bucket dicentang maka semua akses terhadap bucket bersifat private tidak bisa diakses secara publik.

Screenshot 20211026 162000275
Allow public access

Publik akses bisa dipergunakan sebagai web hosting statis.

Bucket Versioning

Dengan mengaktifkan Bucket Versioning maka kita diperbolehkan menyimpan varian objek didalam bucket yang sama dan varian objek tersebut bisa dijadikan sebagai objek cadangan untuk recovery misal dalam menjalakan aplikasi terjadi error atau kegagalan dalam memproses objek.

s3 bucket no versioning
Disable Bucket Versioning

Contoh saya akan membuat file text sederhana yang berisi:

S3 Bucket Tutorial by JudisWeb

https://judisweb.com

Dan saya saya simpan file tersebut dengan nama file: S3-important-doc.txt, jika saya mengupload file yang sama dengan isi yang berbeda maka akan tersimpan dengan versi berbeda.

Jika mode Bucket Versioning dinonaktifkan maka setiap nama file yang sama otomatis tertimpa dengan file yang baru dengan nama yang sama (overwrite).

File yang sama tersebut saya rubah isi kontennya dan saya upload ke S3.

Amazon S3 Bucket Tutorial by JudisWeb 

https://judisweb.com
bucket versioning
Bucket Versioning

Default encryption

Jika mengaktifkan enkripsi sisi server, Amazon S3 mengenkripsi objek sebelum menyimpannya ke disk dan mendekripsinya saat kita mendownload objek.

Advanced Settings

Object Lock: Objek akan dikunci secara permanen, tidak bisa tertimpa dengan nama file yang sama dan agar tidak terhapus.

Mengakses S3 Bucket

Setelah membuat bucket, selanjutnya kita akan mengupload file ke dalam bucket. Saat mengakses isi bucket terlihat navigasi yang sangat mudah untuk mengoperasikan. Membuat folder, mengupload file, setting meta data, dll.

s3 access object

Contoh: kita membuat folder documents, dan mengupload file S3-important-doc.txt. Kita bisa membuka dengan tombol Open saat kita mengklik objek tersebut dan mengaksesnya.

S3 private object access by open
S3 access granted

Tetapi saat kita membuka melalui S3 Object URL atau akses publik maka tidak ada akses yang dijinkan.

s3 private object uri
S3 Object URL
s3 access denied
S3 Access Denied

Membuat S3 Bucket Menjadi Web Hosting

Menjadikan S3 menjadi Web hosting termasuk salah satu opsi yang menarik untuk menyimpan file HTML, JS, CSS, gambar (JPG, PNG) atau video yang bisa diakses secara publik karena file tersebut bersifat statis.

Caranya sangatlah mudah, jika sudah membuat S3 Bucket dengan Block all public access tidak perlu menghapus bucket tersebut tetapi bisa dengan cara merubahnya di bagian Permissions.

Screenshot 20211026 172804314 1
Edit Block public access

Click Permissions, dan pada bagian Block Public Access click Edit kemudian hilangkan centang dan Save changes.

PicsArt 10 26 06.21.21
S3 Public Access

S3 Bucket Policy

Kemudian pada bagian Bucket Policy click Edit, kemudian masukkan kode Policy dalam JSON:

s3 bucket policy arn public
S3 Bucket Policy
{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::<BUCKET_ARN>/*"
        }
    ]
}

Ganti <BUCKET_ARN> seperti yang ada pada Policy dan Save changes.

Test S3 Bucket Web Hosting

Untuk mencoba sebagai web hosting, maka disini kita akan membuat dan upload file (statis file) HTML, JS, CSS, JPG.

Kita akan membuat folder baru “test-website” di dalam S3 Bucket dan mengupload semua file dan kita buka dengan web browser.

HTML File: index.html

<!doctype html>
<html lang="en">
<head>
	<!-- Required meta tags --> 
	<meta charset="utf-8"> 
	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 
	<!-- Bootstrap CSS --> 
	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
	<link rel="stylesheet" href="style.css"></link>
	<script src="alertdate.js"></script>
	<title>Welcome to S3 Bucket Tutorial by JudisWeb</title>
</head>
<body>
	<div align="center">
		<h1>Welcome to S3 Bucket Web Hosting</h1>
		<p>Test S3 Bucket web hosting by clicking the button below</p>
		<input class="button" type="button" value="SHOW ME THE DATE!!!" onclick="showDate()">
		<p></p>
		<p><img src="opengraph.jpg.webp" alt="JudisWeb" height="228" width="400" title="JudisWeb"></p>
<p>Visit <a href="https://judisweb.com" target="_blank">JudisWeb</a> for more AWS Tutorial</p> </div> </body> </html>

CSS File: style.css

.button {
  display: inline-block;
  padding: 0.5rem 1rem;
  border-radius: 0.1875rem;
  box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1);
  background: #3180c2;
  color: #fff;
  border: 0;
  line-height: 1.5;
  font-size: 1rem;
  vertical-align: middle;
  text-shadow: none;
  -webkit-transition: background 0.1s;
  -moz-transition: background 0.1s;
  transition: background 0.1s;
}

.button:hover {
  background: #3e8dce;
  color: #fff;
}

.button:active, .button:focus {
  background: #2c73ae;
  box-shadow: inset -1px -1px 1px rgba(0, 0, 0, 0.15);
  color: #fff;
  outline: 0;
}

.button:disabled {
  opacity: 0.25;
  cursor: not-allowed;
}

.button:disabled:hover {
  background: #3180c2;
}

Javascript File: alertdate.js

function showDate() {
	var date = new Date();
	var options = { weekday: "long", month: "long", day: "numeric", year: "numeric" };
	date = date.toLocaleString( "en-US", options );
	alert("Today is: " + date);
} 

Simpan semua file tersebut dan upload ke S3 Bucket.

Screenshot 20211026 214646790
Upload static file: HTML, CSS, JS, JPG/WEBP

Buka file index.html via web browser menggunakan S3 Objet URL.

PicsArt 10 26 09.49.26
S3 Object URL

Dan jika berhasil melalui step by step maka file statis yang berhasil diupload menjadikan S3 Bucket sebagai web hosting.

Screenshot 20211026 214618229
Test S3 Bucket Web hosting

File statis HTML, JS, CSS, JPG/WEBP berhasil diakses sebagai halaman website yang diupload di S3 Bucket dan diakses secara publik.

Kesimpulan

Dengan adanya Amazon S3, menjadi salah satu opsi terbaik untuk menjadikan sebagai cloud-storage alternatif, dimana file apapun yang kita upload di S3 Bucket bisa diakses secara pribadi maupun publik. Dan disamping itu S3 juga bisa dijadikan sebagai web hosting sebagai media penyimpanan file statis gambar, video, js, css, html yang bisa diakses secara publik.

Demikian tutorial Cara membuat AWS S3 Bucket Public/Private Access Dengan Mudah.

Semoga bermanfaat.

Tinggalkan komentar