Blog AWS Indonesia

Membangun Situs WordPress dengan Ketersediaan Tinggi dengan Amazon Lightsail, Bagian 2: Menggunakan Amazon S3 dengan WordPress untuk Mengirim Berkas Media Secara Aman

Pengantar

Ini adalah tulisan kedua dari seri tulisan membangun situs WordPress dengan ketersediaan tinggi pada Amazon Lightsail. Jika Anda belum membaca bagian pertama, sebaiknya Anda kembali ke bagian pertama terlebih dahulu karena tulisan ini adalah kelanjutannya. Jika Anda sudah membaca bagian pertama, silakan kembali melanjutkan membaca tulisan ini.

Sebagai tinjauan sekilas, pada tulisan pertama, saya sudah menjelaskan bagaimana membangun sebuah instans WordPress dengan basis data mandiri (standalone database) MySQL dengan Lightsail. Saya juga sudah menjelaskan bagaimana WordPress menyimpan data tidak hanya di dalam basis data, tetapi juga di dalam sistem berkas web server.

Pada tulisan ini, saya akan menunjukkan bagaimana mengatur WordPress agar menyimpan berkas media (gambar, video, dll) di dalam Amazon Simple Storage Service (Amazon S3). Amazon S3 adalah layanan penyimpanan data yang dikelola oleh Amazon yang menyediakan metode penyimpanan bermacam data yang terjangkau, memiliki performa handal, dan aman. Antarmuka antara WordPress dan Amazon S3 adalah plugin WP Offload Media Lite dari Delicious Brains. Plug-in ini akan mengambil semua berkas yang diunggah ke WordPress dan menyalinnya ke Amazon S3 di mana instans WordPress milik Anda yang lain dapat mengaksesnya.

Prasyarat

Anda sudah memiliki sebuah instan WordPress, dan sudah mengaturnya untuk menggunakan basis data mandiri MySQL di Lightsail.

Pada tulisan ini, saya akan menggunakan layanan AWS lainnya di luar LightSail. Anda membutuhkan akun AWS dengan hak pengaturan yang cukup.

Gambaran Solusi

Tulisan ini akan mencakup pembahasan bagaimana cara memasang dan mengatur WP Offload Media Lite plugin dengan beberapa langkah berikut:

  1. Membuat sebuah Amazon S3 Bucket untuk menyimpan semua berkas media
  2. Menambahkan pengguna dan kebijakan pada AWS Identity and Access Management (IAM)
  3. Memperbaharui berkas konfigurasi WordPress dengan kredensial pengguna.
  4. Memasang dan mengatur plugin
  5. Mengunggah sebuah gambar untuk menguji solusi ini

Solusi

Membuat Bucket S3

Bucket menyimpan semua berkas yang dapat diakses oleh publik dari Internet, jadi Anda harus memastikan bahwa pengaturan izin S3 pada level akun mengijinkan akses publik.

  1. Buka konsol S3.
  2. Dari menu sebelah kiri, klik Block public access (account settings).
  3. Jika Block all public access dicentang, maka lanjutkan dengan klik Edit. Jika tanda centangnya kosong dan setidaknya ada 2 tanda centang lain yang kosong (seperti pada gambar di bawah ini) maka Anda bisa melanjutkan ke bagian selanjutnya.
    Jika tidak, lanjutkan ke langkah ke-4.
  4. Kosongkan tanda centang di samping Block all public access.
  5. Untuk aplikasi, Anda hanya butuh untuk mengatur akses menggunakan ACL. Jadi pastikan kedua kotak centang pertama dikosongkan dan 2 kotak centang terakhir dalam kondisi dicentang.
  6. Klik Save Changes.
  7. Ketik confirm pada kotak text yang muncul, dan klik Confirm.

Catatan: pengaturan ini berlaku pada level akun, jadi Anda harus memastikan semua bucket di dalam akun Anda menggunakan pengaturan izin yang tepat.

Setelah pengaturan izin akses publik sudah diterapkan, sekarang Anda bisa melanjutkan pembuatan bucket baru.

  1. Dari menu di sebelah kiri, klik Buckets.
  2. Di kanan atas klik Create Bucket.
  3. Jika Block all public access dicentang, maka lanjutkan dengan klik Edit. Jika tanda centangnya kosong dan setidaknya ada 2 tanda centang lain yang kosong (seperti pada gambar di bawah ini) maka Anda bisa melanjutkan ke bagian selanjutnya.
    Jika tidak, lanjutkan ke langkah ke-4.
  4. Kosongkan tanda centang di samping Block all public access.
  5. Untuk aplikasi, Anda hanya butuh untuk mengatur akses menggunakan ACL. Jadi pastikan kedua kotak centang pertama dikosongkan dan 2 kotak centang terakhir dalam kondisi dicentang.
  6. Klik Save Changes.
  7. Ketik confirm pada kotak text yang muncul, dan klik Confirm.

Catatan: pengaturan ini berlaku pada level akun, jadi Anda harus memastikan semua bucket di dalam akun Anda menggunakan pengaturan izin yang tepat.

Setelah pengaturan izin akses publik sudah diterapkan, sekarang Anda bisa melanjutkan pembuatan bucket baru.

  1. Dari menu di sebelah kiri, klik Buckets.
  2. Di kanan atas klik Create Bucket.
  3. Tentukan nama bucket Anda. Catatan: Semua nama S3 Bucket harus unik di seluruh dunia, jadi Anda tidak bisa menggunakan nama yang sama seperti yang saya contohkan pada tulisan ini. Catat nama bucket yang Anda pilih, Anda akan membutuhkannya saat melakukan konfigurasi WordPress.
    Tentukan region dari bucket Anda. Anda sebaiknya membuat semua sumber untuk tutorial ini di region yang sama, pastikan Anda mencatat region yang Anda pilih.
  4. Kosongkan Block all public access, dan centang hanya kedua kotak centang terakhir. Tahap ini sama dengan langkah yang sudah Anda lakukan pada bagian sebelumnya. Hanya saja kali ini pengaturan izin ini khusus berlaku untuk bucket ini saja bukan di level akun.
  5. Centang kotak yang tersedia untuk mengkonfirmasi bahwa Anda akan membuat bucket ini publik.
  6. Klik Create bucket.

Sekarang Anda sudah punya sebuah bucket untuk menyimpan berkas media. Pada bagian selanjutnya, Anda akan membuat sebuah pengguna IAM dengan izin yang cukup untuk menyalin berkas dari WordPress ke dalam S3 bucket.

Membuat Sebuah Pengguna IAM Baru

Agar dapat menyimpan berkas ke dalam Amazon S3, WordPress perlu menunjukkan kredensial yang mengandung izin yang tepat. Untuk mewujudkannya, pertama-tama Anda perlu membuat sebuah kebijakan. Kemudian Anda akan membuat sebuah pengguna IAM baru dan menerapkan kebijakan yang tadi sudah Anda siapkan. Setelah kredensial dibuat, tambahkan kredensial tersebut ke dalam berkas konfigurasi WordPress.

Mari mulai dengan membuat kebijakan IAM

  1. Buka halaman muka IAM.
  2. Dari menu sebelah kiri, klik Policies.
  3. Pada bagian kiri atas klik Create policy.
  4. Klik pada tab JSON.
  5. Kosongkan isi yang ada pada kotak editor dan salinkan teks di bawah ini. Anda harus memasukkan nama bucket yang sudah Anda buat sebelumnya.
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": [
                    "s3:PutObject",
                    "s3:GetObjectAcl",
                    "s3:GetObject",
                    "s3:PutBucketAcl",
                    "s3:ListBucket",
                    "s3:DeleteObject",
                    "s3:GetBucketAcl",
                    "s3:GetBucketLocation",
                    "s3:PutObjectAcl"
                ],
                "Resource": [
                    "arn:aws:s3:::<your bucket name>",
                    "arn:aws:s3:::<your bucket name>/*"
                ]
            }
        ]
    }

    Jendela teks Anda harusnya sekarang berisi seperti di bawah ini, dengan pengecualian nama bucket Anda pada bagian Resource.

  6. Klik Review policy.
  7. Beri nama kebijakan ini wp-s3-policy dan klik Create policy.

Selanjutnya Anda perlu membuat sebuah pengguna baru dan mengaplikasikan kebijakan yang sudah disiapkan.

  1. Klik pada Users di menu sebelah kiri.
  2. Klik tombol Add user pada bagian atas halaman.
  3. Berikan nama yang berarti, pada contoh ini saya memberi nama wp-s3-user.
  4. Centang pada pilihan Programmatic access.
  5. Klik Next: Permissions.
  6. Klik Attach existing policy directly dan kemudian pada bagian pencarian masukkan wp-s3-policy (tanpa tanda kutip).
  7. Dari hasil pencarian beri tanda centang di samping wp-s3-policy.
  8. Klik Next: Tags pada bagian bawah layar.
  9. Klik Next: Review pada bagian bawah layar.
  10. Klik Create User pada bagian bawah layar.

Halaman selanjutnya akan menunjukkan kredensial yang akan Anda gunakan untuk mengatur plugin WP Offload Media Lite

Klik Show pada Secret access key dan salin dan tempel kedua isi (Access Key ID dan Secret Access Key) pada editor teks agar Anda bisa menggunakannya nanti. Anda juga bisa mengunduh berkas CSV yang berisi informasi yang sama dengan cara mengklik tombol di tengah-tengah layar.

Penting: jika Anda keluar dari halaman ini, Anda tidak bisa lagi mengakses kredensial tersebut dan Anda perlu mengulang pembuatan pengguna baru lagi. Pastikan Anda mengunduh berkas CSV atau menyalin tempel kedua parameter tersebut di editor teks lain.

Selanjutnya, buat sambungan ke instan WordPress menggunakan program klien SSH atau klien SSH berbasis web pada konsol LightSail.

Setelah Anda berada pada terminal prompt di instans WordPress Anda, Anda perlu menyimpan 2 variabel lingkungan (environment variable) yakni ACCESS_KEY dan SECRET_KEY yang berisi kredensial pengguna IAM.

Untuk menyimpan variabel lingkungan, ganti nilai yang Anda dapat dari pengguna IAM dan masukkan ke dalam kedua baris di bawah ini, masukkan satu per satu setiap barisnya:

ACCESS_KEY=AKIAIOSFODNN7EXAMPLE
SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

Berikutnya, Anda perlu memperbarui berkas konfigurasi WordPress (wp-config) dengan kredensial yang sama.

Pertama, salin dan tempel perintah di bawah ini untuk membuat sebuah berkas berisi kredensial yang sudah Anda isikan ke dalam berkas konfigurasi pada langkah selanjutnya:

cat <<EOT >> credfile.txt
define( 'AS3CF_SETTINGS', serialize( array (
    'provider' => 'aws',
    'access-key-id' => '$ACCESS_KEY',
    'secret-access-key' => '$SECRET_KEY',) ) );
EOT

Berikutnya, salin tempel perintah sed berikut untuk memasukkan berkas sementara yang sudah Anda buat ke dalam berkas konfigurasi WordPress:

sed -i "/define( 'WP_DEBUG', false );/r credfile.txt" \
/home/bitnami/apps/wordpress/htdocs/wp-config.php

Perintah sed akan mengganti pengaturan izin di dalam berkas konfigurasi WordPress. Salin tempel perintah berikut ini untuk mereset kembali:

sudo chown bitnami:daemon /home/bitnami/apps/wordpress/htdocs/wp-config.php

Mulai ulang aplikasi WordPress pada instans dengan menyalin tempel perintah berikut di dalam jendela terminal:

sudo /opt/bitnami/ctlscript.sh restart

Setelah memulai ulang aplikasi WordPress, sekarang WordPress Anda sudah menggunakan kredensial IAM. Anda sudah bisa melakukan konfigurasi plugin WP Offload Media Lite.

Memasang dan Mengatur Plugin

Sekarang berkas konfigurasi sudah mengandung kredensial Anda, Anda dapat melanjutkan proses untuk memasang dan melakukan pengaturan plugin WP Offload Media Lite.

Langkah berikutnya membutuhkan Anda untuk login ke dalam dasbor WordPress. Untuk bisa login Anda perlu kata sandi aplikasi Bitnami untuk situs WordPress Anda. Kata sandinya disimpan di /home/bitnami/bitnami_application_password.

Masukkan perintah cat berikut ke dalam terminal untuk menampilkan isi kata sandinya:

cat /home/bitnami/bitnami_application_password

Tangkapan layar berikut menunjukkan contoh kata sandi dasbor WordPress:

Masuk ke dalam panel kontrol administratif situs WordPress Anda. Halaman login Wodpress dapat diakses di http://SiteIpAddress/wp-admin, dengan SiteIpAddress adalah alamat IP instans WordPress, yang bisa didapatkan dari konsol LightSail seperti tampilan berikut ini.

Sebagai contoh, instans di atas memiliki alamat IP 192.0.2.0, jadi Anda bisa mengakses halaman login melalui http://192.0.2.0/wp-admin.
Terkait kredensial login, default nama penggunanya adalah user. Gunakan kata sandi aplikasi Bitnami yang sudah Anda dapatkan sebelumnya.

Setelah berhasil masuk, pasang dan atur plugin WP Offload Media Lite mengikuti langkah-langkah berikut:

  1. Dari menu sebelah kanan klik Plugins kemudian Add New.
  2. Pada halaman Add New plugin, masukkan WP media offload di kotak pencarian.
  3. Klik Install Now pada tampilan plugin WP Offload Media Lite.

    Setelah beberapa saat tombol Install Now akan berubah menjadi Activate.
  4. Klik tombol Activate.
  5. Anda akan dibawa kembali ke halaman WordPress plugin.
    Gulirkan halaman ke bawah sampai Anda mendapati WP Offload Media Lite. Plugin tersebut akan ada di paling bawah karena daftarnya diurutkan berdasar abjad. Klik Settings.
  6. Masukkan nama S3 bucket yang sudah Anda buat sebelumnya, dan klik Save Bucket Settings. Pastikan nama bucket yang Anda masukkan bukan yang tercantum pada gambar di bawah ini.

    Catatan: Anda tidak bisa menggunakan “Browse existing buckets” atau “Create new bucket” karena kebijakan IAM yang Anda buat tidak mengijinkannya. Anda tidak disarankan untuk mengijinkan plugin untuk bisa mengakses semua S3 bucket Anda.

Situs WordPress Anda sekarang sudah diatur agar mengunggah berkas ke Amazon S3 Bucket yang dikelola oleh plugin WP Offload Media Lite.

Mencoba plugin

Anda dapat melakukan percobaan untuk memastikan apakah plugin sudah berfungsi semestinya dengan mengunggah beberapa berkas media, kemudikan lakukan verifikasi bahwa berkas medianya sudah disediakan oleh Amazon S3 bucket. Ikuti langkah-langkah berikut ini:

  1. Dari menu sebelah kanan WordPress klik Media dan klik Add new.
  2. Anda bisa menyeret lepas sebuah berkas atau mengklik tombol Select dan memilih berkas dari dalam komputer Anda.
  3. Setelah mengunggah berkas, click tombol Edit di sebelah thumbnail.
  4. Pada menu sebelah kanan layar, File URL seharusnya sudah merujuk pada S3 bucket.
  5. Salin URL tersebut ke dalam sebuah perambah web dan pastikan berkas Anda terbuka dengan benar.

Semua berkas media Anda sekarang sudah disediakan langsung dari Amazon S3. Sampai tahap ini Anda sudah siap untuk memfinalisasi tampilan dan perilaku dari situs web Anda, untuk kemudian melakukan peningkatan skala pada bagian front-end – hal ini akan Anda lakukan di seri tulisan berikutnya.

Kesimpulan

Pada tulisan ini Anda sudah belajar bagaimana cara memasang dan mengatur plugin Media Offload Lite. Semua berkas media Anda sekarang sudah bisa diakses dari S3. Anda telah siap untuk memfinalisasi tampilan dan perilaku situs Anda dan melakukan peningkatan skala di bagian front-end. Tulisan lanjutan akan membahas proses tersebut lebih jauh lagi.

Tulisan ini berasal dari artikel Deploying a highly available WordPress site on Amazon Lightsail, Part 2: Using Amazon S3 with WordPress to securely deliver media files yang ditulis oleh Mike Coleman dan diterjemahkan oleh Tedy Tirtawidjaja.

Petra Barus

Petra Barus

Petra Novandi Barus is Developer Advocate at Amazon Web Services based in Jakarta. He is passionate in helping startups and developers in Indonesia to reinvent on behalf their customers. Prior to AWS, Petra co-founded UrbanIndo.com as CTO. The startup became the largest real-estate portal in Indonesia and then was acquired by 99.co. During that time Petra had been a happy AWS customer for 8 years. Petra is also very active in local tech communities