Konfigurasi untuk Ubuntu 24.04
- Install dependencies yang dibutuhkan
sudo snap install aws-cli --classic sudo apt install s3fs fuse -y
- Konfigurasi untuk credential yang akan diperlukan untuk menghubungkan ke S3 nya, referensi yang bisa digunakan, ada 3 tipe, yaitu:
- Menggunakan aws configure, atau di file .aws/credentials. Untuk tipe ini biasanya sering digunakan apa bila akun yang di miliki itu memiliki token_session, atau akun aws academy yang sifatnya temporary, karena untuk tipe lain tidak bisa jika dengan akun yang ada token_session, atau akun aws academy yang sifatnya temporary.
- Menggunakan file $HOME.passwd-s3fs yang di isikan ACCESS_KEY_ID:SECRET_ACCESS_KEY dengan permission / hak akses 600.
- Menggunakan file /etc/passwd-s3fs yang di isikan ACCESS_KEY_ID:SECRET_ACCESS_KEY dengan permission / hak akses 640.
- Menggunakan environment variables AWS_ACCESS_KEY_ID dan AWS_SECRET_ACCESS_KEY yang nanti akan secara otomatis di baca oleh s3fs. Sebagai contoh saya menggunakan yang pertama atau yang aws configure, atau di .aws/credentials. Karena pada Kesempatan kali ini saya menggunakan akun aws academy yang sifatnya temporary. —
- untuk lebih mempermudah, hubungkan Ec2 ke IAM yang sesuai, bisa buat IAM baru akan tetapi harus yang ada permission untuk akses ke S3, atau pakai yang sudah ada, untuk kali ini saya menggunakan bawaan yang sudah ada, karena pakai akun academy
- Kemudian coba untuk connect ke S3 secara manual dulu. Untuk iam_role=auto akan menyesuaikan IAM yang terhubung di Ec2 nya.
s3fs bucket-name directory-mount -o iam_role=autoexample:
s3fs test-bucket /etc/test-s3 -o iam_role=auto
- Kemudian cek dulu apakah berhasil atau gagal. Bisa pilih salah satu.
df -hKalau untuk lebih detail bisa pakai perintah ini, untuk fungsinya sama, untuk mengecek apakah mounting nya berhasil atau tidak.
mount
- Kemudian setelah di pastikan bisa, berarti credentials yang di atur sudah sesuai. Kemudian lanjut untuk konfigurasi di fstab agar permanent saat reboot ec2 tidak lepas. Konfigurasi seperti berikut ini.
sudo nano /etc/fstabs3fs#bucket-name:/ /dir-mount fuse _netdev,allow_other,nonempty,iam_role=auto 0 0Atau bisa juga pakai format seperti ini, sama saja
bucket-name:/ /dir-mount fuse.s3fs _netdev,allow_other,nonempty,iam_role=auto 0 0
- Opsi _netdev digunakan untuk menandakan bahwa block device terhubung lewat networking.
- Opsi allow_other digunakan untuk agar user lain dapat menggunakan block device itu, tidak terbatas user tertentu.
- Opsi nonempty digunakan untuk mengizinkan mounting saat directory yang di pakai mounting ada isi nya, atau ada file di dalam directory itu.
- Opsi iam_role=auto akan melakukan verifikasi menggunakan iam role yang di pasang ke Ec2 nya, jadi otomatis menyesuaikan. Wajib ada, jika tidak akan error credential.
Pastikan untuk tidak melupakan bagian titik dua setelah nama bucket nya, karena nanti akan ada error s3fs – bucket name contains illegal character. Dan di belakangnya menyesuaikan prefix yang di S3 nya, jadi jika ada folder di S3 misalkan folder “test”, bisa dibuat spesifik ke folder tersebut dengan “bucket-name:/test”.
Example:
s3fs#test-bucket:/ /etc/test-s3 fuse _netdev,allow_other,nonempty,iam_role=auto 0 0
- Lalu Konfigurasi untuk fuse nya, karena pada konfigurasi saya pakai allow_other untuk agar dapat di akses siapa saja, saya perlu setting di bagian /etc/fuse.conf hapus tanda pager ”#” di user_allow_other.
user_allow_other
- Lalu restart systemd
sudo systemctl daemon-reload
- Kemudian cek konfigurasi nya apakah berhasil atau ada yang salah. Kalau berhasil akan mengeluarkan Output seperti di bawah ini, dan kalau ada error juga nanti akan ada keterangan nya juga, jadi lebih mudah untuk solving error nya, tanpa harus reboot Ec2 nya dan jika salah bisa ada kemungkinan rusak juga.
mount -fav /etc/test-s3 : successfully mounted
- Jika menemukan error tidak dapat mount padahal sudah di cek dengan “mount -fav” sudah “successfully mounted”, coba cek dengan perintah ini.
sudo journalctl -b | grep mountDan coba cek apakah ada error, seperti contoh jika tidak menggunakan opsi iam_role, akan ada error seperti ini.
... systemd[1]: Mounting home-ubuntu-testaja.mount - /home/ubuntu/testaja... ... mount[537]: s3fs: could not determine how to establish security credentials. ... systemd[1]: Mounted home-ubuntu-backup\x2ds3.mount - /home/ubuntu/backup-s3. ... systemd[1]: home-ubuntu-testaja.mount: Mount process exited, code=exited, status=1/FAILURE ... systemd[1]: home-ubuntu-testaja.mount: Failed with result 'exit-code'. ... systemd[1]: Failed to mount home-ubuntu-testaja.mount - /home/ubuntu/testaja.
Konfigurasi jika menggunakan Ubuntu 20.04
- update IMDSv2 (Instance MetaData Service) dari yang tadinya IMDSv2, menjadi IMDSv1 dan v2