Transform Data dengan Amazon S3 Object Lambda

Amazon S3 digunakan untuk menyimpan data yang dapat dibagikan ke berbagai aplikasi. Namun, sebagian aplikasi membutuhkan format data yang spesifik. Kita bisa menyimpan data dalam banyak format, tetapi pendekatan tersebut tidak efisien. Alternatifnya, transform data sebelum dikonsumsi aplikasi.
Dengan Amazon S3 Object Lambda, kita dapat menjalankan Lambda function setiap kali aplikasi mengambil data. Fungsi tersebut dapat mengubah data ke format yang dibutuhkan, sehingga tak perlu menyimpan banyak versi data di S3.
Contoh penggunaan: aplikasi membutuhkan data JSON, sementara file di S3 masih berupa CSV.
Prerequisite:
- Buat Lambda function untuk convert CSV ke JSON. Contoh kodenya tersedia di repo ini: lambda-csv-to-json/index.py
Untuk memulai, buka S3 terlebih dahulu.
Lalu buat bucket yang publicly accessible, dan upload data ke bucket tersebut. Contoh dataset CSV yang akan digunakan:
Username,Login email,Identifier,First name,Last name booker12,rachel@example.com,9012,Rachel,Booker grey07,laura@example.com,2070,Laura,Grey johnson81,craig@example.com,4081,Craig,Johnson jenkins46,mary@example.com,9346,Mary,Jenkins smith79,jamie@example.com,5079,Jamie,Smith
Berikut langkah membuat pipeline transformasi dengan Object Lambda:
- Buka tab Access Points, kemudian klik Create access point.
- Isi nama access point, pilih Network Origin. Di contoh ini gunakan Internet Network Origin dan hilangkan centang “Block all public access” agar bisa diakses publik. Setelah selesai, klik Create access point.

- Buka menu Object Lambda Access Points di sidebar, lalu pilih Create Object Lambda Access Point.

- Isi nama Object Lambda Access Point, pilih region, kemudian pilih Access Point yang baru dibuat melalui Browse S3. Selanjutnya, pilih Lambda function CsvToJsonConverter yang sudah disiapkan.

- Klik Create Object Lambda Access Point.
- Buka detail Object Lambda Access Point dan salin ARN-nya.

- Terakhir, buat satu Lambda function lagi untuk mengambil data yang sudah dikonversi. Contoh kode:
import boto3
s3 = boto3.client('s3')
def lambda_handler(event, context):
response = s3.get_object(
Bucket='{OBJECT-LAMBDA-ACCESS-POINT}',
Key='dev-team.csv')
return response['Body'].read()
Ganti {OBJECT-LAMBDA-ACCESS-POINT} dengan ARN yang telah disalin. Setelah membuat fungsi, konfigurasi test event, lalu jalankan pengujian. Lambda tersebut akan mengembalikan respons JSON—hasil konversi file CSV di bucket S3—sedangkan file asli tetap utuh.
Key= ‘dev-team.csv’
return response[‘Body’].read()
Ganti {OBJECT-LAMBDA-ACCESS-POINT} dengan ARN yang telah disalin. Setelah membuat fungsi, konfigurasi test event, lalu jalankan pengujian. Lambda tersebut akan mengembalikan respons JSON—hasil konversi file CSV di bucket S3—sedangkan file asli tetap utuh.
