menu

Showing posts with label AWS. Show all posts
Showing posts with label AWS. Show all posts

AWS - Elastic IP (EC2)


Tutorial sebelumnya kita sudah men-setup cloud server menggunakan EC2 AWS dan kita sudah mendapatkan IP public untuk melakukan SSH remote ke server, tapi ada kelemahan pada IP public tersebut yaitu setiap kali kita menghentikan(stop) service EC2 kemudian menghidupkan(start) kembali service EC2 IP public tersebut akan direset, untuk itulah pada tutorial kali ini kita akan membuat sebuah elastic IP agar setiap kali start-stop service EC2 IP public tidak berubah.

Oke kita mulai saja, pertama masuk ke console AWS dan buka service EC2 kemudian pada sidebar klik menu "Elastic IPs" dan akan tampil halaman seperti berikut,


Klik "Allocate new address" dan setting seperti gambar dibawah,


Klik "Allocate" sehingga akan terbentuk Elastic IP baru,


Klik button "Action" pilih "Associate address" seperti gambar dibawah,


Isikan Instance dengan instance yang ingin dihubungkan dengan Elastic IP berikut,


Klik button "Associate" dan akan tampil halaman seperti gambar dibawah,


Berrati kita berhasil menghubungkan Elastic IP dengan instance yang kita pilih, coba dicek pada halaman "Instance" IP public akan berubah mengikuti Elastic IP yang baru kita buat.

Sehingga kita hanya bisa mengakses SSH remote ke server menggunakan Elastic IP yang baru dan meskipun service EC2 di start-stop IP public instance yang merupakan Elastic IP tidak akan berubah/direset.

===DONE!===

AWS - Setup IAM



Sebenarnya tema dari artikel ini terlewatkan karena sebelum artikel ini codedoct sudah share terlebih dahulu beberapa tools yang ada di AWS, tapi tidak apa-apa lebih baik terlambat dari pada tidak sama sekali.

Oke pada artikel ini akan membahas hal pertama yang harus dilakukan saat pertama kali kita mendapatkan account pada AWS yaitu mensetup IAM.
Pertama login terlebih dahulu ke akun AWS dan buka menu services kemudian cari IAM setelah masuk ke halaman IAM kita akan melihat tampilan seperti berikut.


Setup pertama yang akan kita lakukan adalah mengaktivasi MFA(Multi-Factor Authenticator), klik "Activate MFA on your root account" dan klik button "Manage MFA" dan akan tampil halaman berikut,


Selanjutnya klik button "Activate MFA" seperti gambar dibawah,


Pilih A virtual MFA device dan klik button "Next Step" seperti gambar dibawah,


Selanjutnya, "Next Step" lagi,


Dan selanjutnya akan masuk ke halaman berikut(dibawah) untuk mendapatkan code dari barcode gunakan google authenticator atau apps sejenisnya,  download ke handphone dan scan barcodenya sehingga akan muncul code pertama masukan ke Authentication code 1,


Setelah memasukan code 1 maka pada google authenticator akan muncul code kedua dan isikan ke Authentication code 2, jika sudah klik button "Activate virtual MFA" dan akan muncul pop-up berikut,


Sampai sini kita sudah success mengaktifkan MFA, kembali ke dashboard IAM dan tampilan indikator MFA nya akan berubah seperti ini,


Selanjutnya kita akan membuat user IAM baru klik button "Manage Users" seperti gambar dibawah,


Dan akan muncul halaman seperti dibawah, klik button "Add user"


Isikan field seperti gambar dibawah untuk membuat sebuah user admin baru,


Lanjutkan dengan klik button "Next: Permissions" untuk mengatur permission yang diinginkan,
dan tampil halaman berikut,


Pilih "AdministratorAccess" ini berarti semua access, klik button "Next: Review" halaman berikutnya langsung klik "Create user" dan success membuat user baru,


Klik "Download .csv" untuk mengunduh password akses saat login pertama kali, dan klik button "Close" sehingga tampil halaman berikut,


Kembali ke dashboard, dan security status akan update seperti gambar dibawah,


Lanjut ke tahap berikutnya, "Use groups to assign permissions" klik button "Manage Group"


Isikan nama group misal "admin"


Klik "Next Step" sama seperti di user, pilih "AdministratorAccess" klik "Next Step" lagi dan "Create Group", sehingga  akan tampil halaman berikut,


Klik admin dan "Add Users to Group" untuk menambahkan user ke group admin,


Pilih user yang ingin dimasukan ke dalam group admin


Klik "Add Users" dan masuk kembali ke menu sidebar "Users"


Kita akan melihat user yang baru di masukan ke group admin tadi memiliki 2 permissions(1 permission user, 1 permission admin) untuk itu hapus saja yang paling atas dengan mngklik icon "x".
Jika sudah kembali kedashboard dan kita akan melihat status securitynya update seperti gambar dibawah,


Baiklah tinggal satu step lagi, masuk ke "Apply an IAM password policy" dan akan tampil halaman seperti gambar dibawah,


Secara default isi saja seprti berikut, kemudian klik button "Apply password policy" jika sudah kembali ke dashboard status security akan update kembali menjadi seperti gambar dibawah,


Pada dashboard klik "Customize" pada IAM users sign-in link untuk mengubah account alias yang berfungsi untuk login,


Jika sudah klik "Yes, Create" dan link IAM users sign-in juga akan ikut berubah, silahkan copy link tersebut dan logout dari account AWS, kemudian browse link yang tadi di copy pada browser sehingga akan masuk ke halaman berikut untuk memperbaharui password pertama kali,


Passwordnya ada di file .csv yang sudah kita download saat membuat user baru sebelumnya, setelah klik "Sign In" akan menuju halaman change password, tinggal ganti saja password lama dengan yang baru dan "Confirm password"


Akhirnya kita bisa login dengan user yang baru dibuat dengan berdasarkan permission yang kita set sebagai administrator.

Jika teman-teman sudah bisa masuk menggunakan user admin yang baru tadi maka akan lebih baik user root lama yang digunakan untuk login AWS pertama kali jangan digunakan lagi saja demi keamanan account AWS.

===DONE!===

AWS - Fasting your S3 file with cloudfront


Tahukah anda jika konten terberat pada sebuah website kebanyakan adalah gambar? Ada banyak cara untuk mengoptimize kecepatan rendering data pada sebuah website salah satu cara yang harus dilakukan yaitu dengan mempercepat rendering file gambar.

Dalam hal ini AWS sudah menyediakan sebuah layanan yang bisa membantu menangani masalah tersebut yaitu dengan menggunakan cloudfront. Apa itu cloudfront?

Cloudfront merupakan sebuah layanan web yang digunakan untuk mempercepat distribusi konten web baik itu berupa konten statis maupun dinamis seperti file html, css, js, dan image kepada user client. Cloudfront mengirimkan konten melalui jaringan pusat yang disebut lokasi tepi (edge location) yang menyediakan layanan jeda waktu terendah sehingga konten dikirimkan dengan kinerja sebaik mungkin.

Berikut cara kerja dari cloudfront sendiri:
  • Jika konten sudah berada di lokasi tepi dengan jeda waktu terendah, maka cloudfront segera mengirimkannya.
  • Jika konten tidak berada di lokasi tepi tersebut, maka cloudfront mengambilnya dari tempat asal yang telah ditetapkan seperti bucket Amazon S3.

Pada dasarnya user client dapat dengan mudah menavigasi ke sebuah url dan melihat gambar dari url tersebut. Tetapi mereka mungkin tidak tahu bahwa request mereka dialihkan dari satu jaringan ke jaringan lain melalui kumpulan jaringan interkoneksi kompleks sampai akhirnya gambar itu ditemukan.

Cloudfront mempercepat distribusi konten dengan cara merutekan setiap request user client melalui jaringan backbone AWS ke lokasi tepi yang dapat melayani konten anda dengan sangat baik. Menggunakan jaringan AWS secara dramatis mengurangi jumlah jaringan yang harus dilalui oleh pengguna anda dan meningkatkan kinerja. User client mendapatkan jeda waktu lebih rendah untuk memuat byte pertama file dan kecepatan transfer data yang lebih tinggi.

Oke sekarang sudah tau kan betapa pentingnya layanan cloudfront ini untuk memaksimalkan kinerja distribusi file S3? Sekarang kita mulai saja cara setup cloudfront untuk storage S3 kita.

Jika anda belum punya bucket S3 pada AWS bisa baca disini cara setupnya.

Pertama, pada halaman home AWS kita bisa cari pada kolom pencarian ketikan saja cloudfront dan klik untuk membukanya,


Selanjutnya, akan muncul seperti gambar dibawah,


Klik tombol "Create Distribution", dan akan muncul tampilan seperti gambar dibawah,


Klik tombol "Get Started",  dan akan muncul tampilan seperti gambar dibawah,


Isi kolom pertama dengan Amazon S3 Buckets anda, kemudian biarkan field-field yang lain secara default (jika tidak mau pusing),


Klik tombol "Create Distribution" untuk segera membuat cloudfront url nya, sehingga akan muncul seperti gambar dibawah,


Dari gambar diatas kita bisa lihat pada kolom "Domain" itu merupakan url cloudfront jadi jika status cloudfront sudah "Deployed" seperti diatas itu artinya url cloudfront sudah bisa digunakan, caranya mudah yaitu tinggal ganti url S3 lama anda dengan url cloudfront misal:
url s3               ->  https://s3.us-east-2.amazonaws.com/codedoct-bucket1/image-screen.png

ganti menjadi seperti ini:
url cloudfront  ->  http://d2fm70f5trvewh.cloudfront.net/image-screen.png

Sangat mudah bukan?

===DONE!===
  

How - Manage (CRUD) S3 on laravel


Pada tutorial sebelumnya kita sudah membuat bucket S3 AWS, dan kita sudah berhasil mengupload gambar secara langsung ke S3 sekaligus membuka akses globalnya sehingga gambar bisa dibuka secaral global dengan browse path url nya.

Pada tutorial kali ini codedoct akan memberikan tutorial tentang cara memanage bucket S3 kita melalui website yang menggunakan framework Laravel, dalam hal ini kita akan mengintegrasikan S3 dengan Laravel.

Oke sebelum memulai tutorial ini pastikan Anda sudah expert dalam pemrograman PHP on Laravel jika belum silahkan ikuti tutorialnya terlebih dahulu, klik disini.

Pertama, requirement yang akan kita gunakan adalah,
  • PHP => 5.6
  • Laravel => 5.4
Buka project laravel anda, kemudian install package aws pada laravel, package yang akan kita gunakan adalah league/flysystem-aws-s3-v3, jika laravel anda sudah terinstall versi yang lain maka diremove saja terlebih dahulu karena laravel 5.1 keatas support pada flysystem-aws-s3 versi V3.
Berikut cara remove dan install,
//untuk hapus versi lama
composer remove league/flysystem-aws-s3-v2

//install versi V3
composer require league/flysystem-aws-s3-v3:~1.0

Jika sudah berhasil menambahkan package aws selanjutnya, install juga image intervention untuk mengedit image yang di upload dari sisi server,
php composer.phar require intervention/image

Kemudian buat User IAM pada AWS dengan cara,
Masuk ke akun AWS anda terlebih dahulu dan masuk ke service IAM,


Selanjutnya, akan muncul page seperti gambar dibawah,


Klik button Add user untuk membuat user baru yang akan diperuntukan untuk codedoct-bucket1 yang sudah kita buat, dan akan muncul step pembuatan user seperti pada gambar dibawah,


Isi seperti gambar diatas dengan User name* terserah anda, dan jika sudah klik button "Next:Permissions",


Pada gambar diatas klik menu "Attach existing polices directly" dan klik button "Create policy" yang akan redirect halaman baru untuk membuat policy custom khusus untuk bucket codedoct-bucket1,


Pada gambar diatas ini field Service dengan S3 dan centang "All S3 actions (s3:*)", selanjutnya pada field Resources akan muncul seperti gambar dibawah,


Pilih Specific, pada field bucket klik "Add ARN" dan muncul seperti pop up pada gambar diatas,
isi field Bucket name dengan nama bucket yang sudah kita buat yaitu codedoct-bucket1, dan klik button "Add",


Pada field Object klik "Add ARN" kemudian isi pop up nya seperti pada gambar diatas, klik button"Add" sehingga akan tampak seperti gambar dibawah,


Klik button "Review policy",  dan isi field Name dan Description seperti pada gambar dibawah,


Klik button "Create policy", kemudian kembali pada halaman Set permission sebelumnya, cari policy codedoct yang baru dibuat, centang dan klik button "Next: Review" seperti gambar dibawah,


Dan akan muncul page review seperti gambar dibawah,


Klik button "Create user", dan akan muncul seperti gambar dibawah,


Simpan Access key ID dan Secret access key untuk nanti digunakan pada .env Laravel,
Untuk mengetes apakah User IAM sudah terintegrasi dengan bucket S3 atau belum coba buka service S3 dan buka "Permissions" kita akan melihat pada list pertama "Access for your AWS account" terdapat satu akun,


Terakhir kembali pada laravel, tambahkan pada .env parameter AWS dan pendukungnya,
STORAGE_FILE=s3

AWS_KEY= isi dengan Access key ID
AWS_SECRET= isi dengan Secret access key
AWS_REGION=us-east-1
AWS_BUCKET=codedoct-bucket1

Sekarang laravel anda sudah siap mengupload file pada bucket S3 AWS, untuk code laravelnya bisa dicontoh code dibawah,
<?php
namespace App\Http\Services;

use Illuminate\Support\Facades\Storage;
use Intervention\Image\ImageManagerStatic;

class ImageService
{
    public function uploadImage($file, $folder_path, $for, $size)
    {
        $img = ImageManagerStatic::make($file);
        if ($img->getWidth()) {
            $img->resize($size, null, function ($constraint) {
                $constraint->aspectRatio();
            });
        }
        $img->stream();

        if (env('STORAGE_FILE', 'server')=='s3') {
            $path = 'images/'.$folder_path.'/'.$for->hash_id.'-'.str_random(6).'.'.$file->clientExtension();
            Storage::disk('s3')->put($path, $img->__toString());

            return $path;
        }

        return null;
    }

    public function deleteFile($file)
    {
        if (env('STORAGE_FILE', 'server')=='s3') {
            if (Storage::disk('s3')->has($file)) {
                Storage::disk('s3')->delete($file);
            }
        }

        return true;
    }

    public function getFile($file)
    {
        if (env('STORAGE_FILE', 'server')=='s3') {
            return 'https://s3.amazonaws.com/'.env('AWS_BUCKET').'/'.$file;
        }
    }
}


===DONE!===