Apa yang bisa kami bantu?

A.Pendahuluan

Manajemen akses Object Storage bisa dilakukan dengan apa saja, bisa menggunakan aplikasi S3-client seperti DragonDisk, S3Browser, S3fs, S3cmd maupun dengan bahasa pemrograman PHP, Python, dll. Adapun manajemen akses Object Storage menggunakan aplikasi S3-Client sudah pernah dibahas pada tautan berikut. Namun kali ini pembahasan untuk manajemen Object Storage menggunakan bahasa pemrograman Python. 

 

Adapun untuk mengakses Object Storage membutuhkan modul boto3 dalam script python, boto3 merupakan AWS SDK untuk python yang disediakan oleh Amazon. Apabila belum menginstall silakan install modul boto3 terlebih dahulu.  

 

Prasyarat :

1. Memiliki layanan Object Storage pada Neo Cloud
2. Install Pyhton3 
3. Install modul Boto3 
4. Menggunakan sistem operasi Ubuntu 20.04

 

B. Instalasi dan Konfigurasi 

1. Update paket ke yang paling baru: 

sudo apt update
sudo apt -y upgrade

 

2. Apabila proses update dan upgrade sudah selesai, silakan cek versi python dengan perintah: 

python3 –V
Output:
Python 3.8.5

 

3. Untuk mengelola software python bisa menggunakan pip, pip adalah sebuah modul python yang digunakan untuk mengelola software atau paket dalam pengembangan sebuah projek. 

sudo apt install -y python3-pip

 

Kemudian install modul boto3: 

sudo pip3 install boto3

 

4. Selanjutnya bisa setup environment pada python, hal ini bersifat opsional. Apabila projek Anda tidak ingin diganggu dengan adanya dependensi atau hal lain bisa membuat environment baru. 

Install modul venv terlebih dahulu: 

sudo apt install -y python3-venv

 

Untuk setup environment baru, silakan buat direktorinya, seperti: 

mkdir environment
cd environment

 

Keterangan: 

environment’ adalah nama direktori, bisa menggunakan nama direktori yang lain. 

 

Setelah masuk pada direktori ‘environment’, buat environment dengan menjalankan perintah: 

python3 -m venv my_env

 

 

Keterangan

‘my_env’: Nama environment

 

Apabila dilihat isi direktori ‘my_env’ tersebut sudah muncul output berikut, maka pembuatan environment baru berhasil. 

ls
bin  include  lib  lib64  pyvenv.cfg  share

 

Aktifkan environment yang sudah dibuat dengan menjalankan perintah berikut: 

source my_env/bin/activate

 

 

Apabila sudah terdapat prefiks (my_env), berarti setup environment berhasil dilakukan. 

 

Catatan

Apabila menggunakan environment pada projek Anda, pastikan modul boto3 sudah terinstall, jika belum silakan install terlebih dahulu tanpa menggunakan sudo.

pip3 install boto3

 

5. Langkah selanjutnya adalah import modul boto3 kedalam script python, silakan buat nama file terlebih dahulu dengan ekstensi .py (misal: biznet.py). 

import boto3

 

Masukkan data credential seperti Access Key dan Secret Key beserta Service Endpoint layanan object storage, untuk melihatnya bisa login ke Portal Neo terlebih dahulu dan pilih layanan Object Storage Anda. 

Gambar 1. Melihat akses key & secret key

 

 

 

s3 = boto3.resource('s3', endpoint_url='http://nos.wjv-1.neo.id',
aws_access_key_id = 'Masukkan Access_Key disini',
aws_secret_access_key = ' Masukkan Secret_Key disini') 

 

6. Kemudian, masukkan perintah untuk akses object storage seperti membuat bucket, melihat daftar bucket, melihat object pada daftar bucket, menghapus bucket, mengakses bucket, membuat akses kontrol/permission, dll. 

 

a. Membuat bucket

s3.create_bucket(Bucket='nama_bucket') atau
s3.create_bucket(Bucket='nama_bucket', CreateBucketConfiguration={
'LocationConstraint': 'idn'})

Keterangan: 

‘nama_buket’: nama buket bisa menggunakan nama bucket yang lain. 

Simpan script python tersebut, dan jalankan dengan perintah: 

Python3 (nama_script.py)

Apabila tidak ada pesan error yang muncul, maka pembuatan bucket berhasil, Anda bisa melihat pada aplikasi DragonDisk dan pastikan nama bucket tersebut ada. 

 

Gambar 2. Hasil membuat bucket baru

 

b.Mengakses bucket 

Untuk mengakses bucket bisa menggunakan script dibawah ini: 

bucket = s3.Bucket('nama_bucket')exists = True
try:
s3.meta.client.head_bucket(Bucket='nama_bucket')
except botocore.exceptions.ClientError as e:
# If a client error is thrown, then check that it was a 404 error.
# If it was a 404 error, then the bucket does not exist.
error_code = e.response['Error']['Code']
if error_code == '404':
   exists = False 

Keterangan: 

‘nama_buket’: nama buket bisa menggunakan nama bucket yang lain. 

 

 

c. Melihat semua object pada daftar bucket 

Untuk melihat nama objek pada semua daftar bucket layanan object storage bisa menggunakan script berikut: 

ffor bucket in s3.buckets.all():
  for key in bucket.objects.all():
    print(key.key)

Gambar 3. Hasil listing file objek storage

 

d. Menghapus bucket

Adapun untuk menghapus bucket bisa menggunakan script berikut: 

 s3.Bucket('neocloud').delete()

Catatan
Untuk menghapus bucket, pastikan bucket tersebut kosong atau tidak terdapat file objek apapun. 

 

e. Apabila ingin melakukan generate presigned URL untuk mengakses bisa menggunakan script berikut ini. 

Presigned URL merupakan URL hasil generate untuk mengakses file objek storage dari public tanpa mengubah permission default dengan rentang waktu tertentu. 

uurl = client.generate_presigned_url('get_object', {'Bucket': nama_buket', 'Key': 'nama_objek'}, ExpiresIn=60)
print("Pre-signed URL: %s" % (url))

Keterangan: 

Nama_buket    : Isi dengan nama buket dalam layanan Objek Storage Anda
Nama_objek    : Isi dengan nama file objek dalam layanan Objek Storage Anda. 
ExpiresIn         : Waktu habis akses presigned URL, default satuannya adalah detik. 

Karena menggunakan variabel client pada script diatas, maka tambahkan variabel client dibawah import, seperti berikut: 

client = s3.meta.client

 

Gambar 4. Menambah variabel client

 

Nantinya akan muncul output hasil generate URL dan silakan akses menggunakan browser. 

 

Gambar 5. Akses sebelum generate presigned URL

 

 

 

Gambar 6. Akses sesudah  generate presigned URL

 

Apabila ingin keluar dari environment, bisa mengetikkan perintah `deactivate` (tanpa tanda petik). 

 

C. Kesimpulan

Manajemen akses storage menggunakan pemrograman python sangatlah luas, hal diatas hanyalah beberapa contoh cara akses storage. Selebihnya bisa Anda explore secara mandiri. Contoh diatas lebih aman karena setup environment terlebih dahulu, sehingga tidak akan mengganggu projek Anda yang sedang berjalan. 

Namun, hal tersebut hanyalah bersifat opsional. Apabila Anda ingin mengelola layanan objek storage dengan python tanpa setup environmen tentu juga bisa dilakukan. 

 

Semoga artikel ini dapat membantu Anda. Temukan bantuan lainnya melalui Knowledge Base Biznet Gio. Jika Anda masih memiliki kendala silahkan hubungi support@biznetgio.com atau (021) 5714567.