Banyak senario memerlukan anda bekerja dengan data yang diformatkan sebagai JSON, dan anda ingin mengekstrak serta memproses data kemudian menyimpannya ke dalam jadual untuk kegunaan masa hadapan
Dalam artikel ini kita akan membincangkan memuatkan data berformat JSON daripada baldi S3 ke dalam jadual DynamoDB menggunakan fungsi Lambda
Seni bina di bawah menunjukkan kami menggunakan 3 perkhidmatan AWS
Penerangan ringkas tentang perkhidmatan di bawah sebagai penyegaran:
Kami akan melalui langkah & konfigurasi untuk menggunakan rajah di atas
1- Buat Fungsi Lambda dengan Konfigurasi di bawah
Pengarang dari Scratch
Nama Fungsi: ParserDemo
Masa jalan: Python 3.1x
Biarkan selebihnya sebagai lalai
Selepas Lambda dibuat, anda perlu mengubah suai konfigurasi tamat masa & peranan Pelaksanaan seperti di bawah:
Saya menulis kod python ini untuk melaksanakan logik
import json import boto3 s3_client = boto3.client('s3') dynamodb = boto3.resource('dynamodb') def lambda_handler(event, context): bucket_name = event['Records'][0]['s3']['bucket']['name'] # Getting the bucket name from the event triggered by S3 object_key = event['Records'][0]['s3']['object']['key'] # Getting the Key of the item when the data is uploaded to S3 print(f"Bucket: {bucket_name}, Key: {object_key}") response = s3_client.get_object( Bucket=bucket_name, Key=object_key ) # We will convert the streamed data into bytes json_data = response['Body'].read() string_formatted = json_data.decode('UTF-8') #Converting data into string dict_format_data = json.loads(string_formatted) #Converting Data into Dictionary # Inserting Data Into DynamoDB table = dynamodb.Table('DemoTable') if isinstance(dict_format_data, list): #check if the file contains single record for record in dict_format_data: table.put_item(Item=record) elif isinstance(dict_format_data, dict): # check if the file contains multiple records table.put_item(Item=data) else: raise ValueError("Not Supported Format") # Raise error if nothing matched
2- Cipta baldi S3
Nama Baldi: gunakan nama unik
biarkan selebihnya konfigurasi sebagai lalai
Tambah baldi S3 yang dibuat sebagai pencetus kepada fungsi lambda seperti di bawah:
3- Cipta Jadual dalam DynamoDB dengan konfigurasi di bawah
Nama Jadual: DemoTable
Kunci Pemisahan: UserId
Tetapan Jadual: Disesuaikan
Mod Kapasiti: Diperuntukkan
Untuk Menjimatkan kos konfigurasikan unit kapasiti yang diperuntukkan untuk baca/tulis dengan nilai rendah (1 atau 2 unit)
Sekarang persediaan sudah sedia, anda boleh mengujinya dengan memuat naik fail ke S3, kemudian anda akan menemui item yang dibuat pada jadual DynamoDB dengan rekod yang telah anda muat naik ke dalam fail.
Log CloudWatch untuk Fungsi Lambda
Item DynamoDB
Saya harap anda mendapati ini menarik dan sila beritahu saya jika anda mempunyai sebarang komen.
API S3
DynamoDB API
amalan boto3 untuk perkhidmatan AWS
Atas ialah kandungan terperinci Menghuraikan & Memuatkan Data daripada So DynamoDB dengan Fungsi Lambda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!