Heim > Backend-Entwicklung > Python-Tutorial > Analysieren und Laden von Daten aus So DynamoDB mit der Lambda-Funktion

Analysieren und Laden von Daten aus So DynamoDB mit der Lambda-Funktion

Susan Sarandon
Freigeben: 2025-01-06 06:24:47
Original
227 Leute haben es durchsucht

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

Voraussetzungen

  1. IAM-Benutzer mit Berechtigungen zum Hochladen von Objekten in S3
  2. Lambda-Ausführungsrolle mit Berechtigungen für S3 und DynamoDB

Architektur & Komponenten

Die Architektur unten zeigt, dass wir drei AWS-Dienste verwenden

  1. S3-Eimer
  2. Lambda-Funktion
  3. DynamoDB-Tabelle

Parsing & Loading Data from So DynamoDB with Lambda Function

Eine kurze Beschreibung der Leistungen unten als Erfrischung:

  • S3 Bucket: Objektspeicherdienst mit Skalierbarkeit, Sicherheit und Hochleistungsdienst wird als unser Speicherdienst für die Daten verwendet
  • Lambda-Funktion: Serverloser Rechendienst, der es Ihnen ermöglicht, Ihren Code auszuführen, ohne sich Gedanken über die Infrastruktur machen zu müssen, einfach einzurichten und viele Programmiersprachen zu unterstützen. Wir werden ihn nutzen, um unseren Code auszuführen und unsere Logik bereitzustellen.
  • DynamoDB: Serverlose NoSQL-Datenbank, die zum Speichern unserer Daten in Tabellen verwendet wird. Wir werden sie zum Speichern unserer verarbeiteten Daten durch die Lambda-Funktion verwenden

Fließen

  1. Der Benutzer lädt die JSON-Datei über die Konsole oder die CLI in den S3-Bucket hoch, was hinter den Kulissen der PutObject-API erfolgt
  2. Objekt wurde erfolgreich hochgeladen, S3-Ereignis wird ausgelöst, um die Lambda-Funktion aufzurufen, um die Datei zu laden und zu verarbeiten
  3. Lambda verarbeitet die Daten und lädt sie in die DynamoDB-Tabelle

Implementierungsschritte

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:

Parsing & Loading Data from So DynamoDB with Lambda Function

Parsing & Loading Data from So DynamoDB with Lambda Function

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

Nach dem Login kopieren

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:

Parsing & Loading Data from So DynamoDB with Lambda Function

Parsing & Loading Data from So DynamoDB with Lambda Function

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)

Parsing & Loading Data from So DynamoDB with Lambda Function

Parsing & Loading Data from So DynamoDB with Lambda Function

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

Parsing & Loading Data from So DynamoDB with Lambda Function

DynamoDB-Elemente

Parsing & Loading Data from So DynamoDB with Lambda Function

Ich hoffe, Sie fanden das interessant und lassen Sie mich bitte wissen, wenn Sie Kommentare haben.

Referenzen

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!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage