In vielen Szenarien müssen Sie mit Daten arbeiten, die als JSON formatiert sind, und Sie möchten die Daten extrahieren und verarbeiten und sie dann zur späteren Verwendung in einer Tabelle speichern
In diesem Artikel besprechen wir das Laden von JSON-formatierten Daten aus dem S3-Bucket in die DynamoDB-Tabelle mithilfe der Lambda-Funktion
Die Architektur unten zeigt, dass wir drei AWS-Dienste verwenden
Eine kurze Beschreibung der Leistungen unten als Erfrischung:
Wir werden die Schritte und Konfigurationen für die Bereitstellung des obigen Diagramms durchgehen
1- Erstellen Sie eine Lambda-Funktion mit der folgenden Konfiguration
Autor von Grund auf
Funktionsname: ParserDemo
Laufzeit: Python 3.1x
Belassen Sie den Rest als Standard
Nachdem Lambda erstellt wurde, müssen Sie die Timeout-Konfiguration und die Ausführungsrolle wie folgt ändern:
Ich habe diesen Python-Code geschrieben, um die Logik auszuführen
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- S3-Bucket erstellen
BucketName: verwenden Sie einen eindeutigen Namen
Belassen Sie den Rest der Konfiguration als Standard
Fügen Sie den erstellten S3-Bucket wie folgt als Auslöser zur Lambda-Funktion hinzu:
3- Erstellen Sie eine Tabelle in DynamoDB mit der folgenden Konfiguration
Tabellenname: DemoTable
Partitionsschlüssel: UserId
Tabelleneinstellungen: Angepasst
Kapazitätsmodus: Bereitgestellt
Um Kosten zu sparen, konfigurieren Sie die bereitgestellten Kapazitätseinheiten für Lese-/Schreibvorgänge mit einem niedrigen Wert (1 oder 2 Einheiten)
Jetzt ist das Setup fertig. Sie können es testen, indem Sie eine Datei auf den S3 hochladen. Anschließend finden Sie in der DynamoDB-Tabelle erstellte Elemente mit den Datensätzen, die Sie in die Datei hochgeladen haben.
CloudWatch Logs für Lambda-Funktion
DynamoDB-Elemente
Ich hoffe, Sie fanden das interessant und lassen Sie mich bitte wissen, wenn Sie Kommentare haben.
S3-API
DynamoDB-API
boto3-Praxis für AWS-Dienste
Das obige ist der detaillierte Inhalt vonAnalysieren und Laden von Daten aus So DynamoDB mit der Lambda-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!