Python AWS S3

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.

AWS S3 Backup [*] 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.

AWS User Backup


Kemudian buat sebuah custom policy yang khusus akan dipakai oleh user “mysql-backup”.

AWS Policy Backup

LANGKAH Create Policy -> Create Your Own Policy

AWS Policy Create


Kemudian attach policy yang telah dibuat ke user “mysql-backup”.

AWS Policy Attach


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.