Upload Backup ke AWS S3 Menggunakan Python Script
Pastikan Anda telah membuat Bucket terlebih dahulu di AWS S3, kemudian membuat folder yang akan digunakan untuk menyimpan hasil upload, contoh path “/backup/mysql”. Hasil yang diharapkan setelah Python script nya berhasil meng-upload semua folder + file backup akan seperti tampilan dibawah.
[*] Folder yang kosong tidak akan diupload ke AWS S3, karena S3 mengacu pada file path sebagai key nya.
Sekarang buat terlebih dahulu sebuah user di AWS IAM service, yang akan dipakai khusus untuk mengakses folder “/backup/mysql” di bucket “my-bucket”.
User yang telah dibuat akan memiliki Access Key dan Access Secret, Anda harus simpan data tersebut baik – baik, karena akan dibutuhkan oleh python script yang akan dibuat nanti untuk mengakses AWS S3.
Kemudian buat sebuah custom policy yang khusus akan dipakai oleh user “mysql-backup”.
LANGKAH Create Policy -> Create Your Own Policy
Kemudian attach policy yang telah dibuat ke user “mysql-backup”.
Sekarang masuk ke console server Anda. Anda membutuhkan AWS S3 Python SDK (boto3). Pertama Anda harus memiliki “pip”, jika belum punya maka install menggunakan perintah dibawah (contoh pada CentOS):
sudo yum -y install python-pip pip install boto3
Sekarang buat sebuah file “upload-dir-s3.py” dengan isi isi python script yang telah saya buat di Gist Github
Kemudian update permission file tersebut:
sudo chmod 0700 upload-dir-s3.py
Sekarang buat sebuah file “/home/user-anda/.aws/credentials” untuk menyimpan informasi Access Key and Access Secret yang akan digunakan oleh AWS S3 Python SDK:
[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY
Sekarang buat sebuah file “/home/user-anda/.aws/config” untuk menyimpan informasi default zona (region) S3 bucket “my-bucket” yang akan digunakan oleh AWS S3 Python SDK:
[default]
region=us-east-1
Mari kita coba jalankan script python nya:
./upload-dir-s3.py my-bucket backup/mysql
Silahkan periksa apakah semua ter-upload dengan benar. Jika semua lancar, Anda tinggal membuat crontab untuk menjalankan perintah diatas pada waktu tertentu setiap hari.