Maison > développement back-end > Tutoriel Python > Analyser et charger des données depuis So DynamoDB avec la fonction Lambda

Analyser et charger des données depuis So DynamoDB avec la fonction Lambda

Susan Sarandon
Libérer: 2025-01-06 06:24:47
original
187 Les gens l'ont consulté

De nombreux scénarios nécessitent que vous travailliez avec des données au format JSON, et vous souhaitez extraire et traiter les données, puis les enregistrer dans un tableau pour une utilisation future

Dans cet article, nous allons discuter du chargement de données au format JSON du compartiment S3 dans la table DynamoDB à l'aide de la fonction Lambda

Conditions préalables

  1. Utilisateur IAM disposant des autorisations nécessaires pour télécharger des objets sur S3
  2. Rôle d'exécution Lambda avec autorisations sur S3 et DynamoDB

Architecture et composants

L'architecture ci-dessous montre que nous utilisons 3 services AWS

  1. Seau S3
  2. Fonction Lambda
  3. Tableau DynamoDB

Parsing & Loading Data from So DynamoDB with Lambda Function

Une brève description des services ci-dessous à titre de rafraîchissement :

  • Seau S3 : un service de stockage d'objets avec évolutivité, sécurité et service hautes performances sera utilisé comme service de stockage pour les données
  • Fonction Lambda : service de calcul sans serveur qui vous permet d'exécuter votre code sans vous soucier de l'infrastructure, facile à configurer et prend en charge de nombreux langages de programmation, nous l'utiliserons pour exécuter notre code et déployer notre logique.
  • DynamoDB : Base de données NoSQL sans serveur utilisée pour stocker nos données dans des tables, nous l'utiliserons pour stocker nos données traitées par la fonction Lambda

Couler

  1. L'utilisateur téléchargera le fichier JSON dans le compartiment S3 via la console ou la CLI qui, en coulisses, API PutObject
  2. L'objet est téléchargé avec succès, l'événement S3 sera déclenché pour appeler la fonction lambda afin de charger et traiter le fichier
  3. Lambda traitera les données et les chargera dans la table DynamoDB

Étapes de mise en œuvre

Nous allons parcourir les étapes et la configuration pour déployer le diagramme ci-dessus

1- Créer une fonction Lambda avec la configuration ci-dessous

Auteur à partir de zéro
Nom de la fonction : ParserDemo
Exécution : Python 3.1x

Laissez le reste par défaut
Une fois Lambda créé, vous devrez modifier la configuration du délai d'attente et le rôle d'exécution comme ci-dessous :

Parsing & Loading Data from So DynamoDB with Lambda Function

Parsing & Loading Data from So DynamoDB with Lambda Function

J'ai écrit ce code python pour exécuter la logique

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

Copier après la connexion

2- Créer un bucket S3

BucketName : utilisez un nom unique

laissez le reste de la configuration par défaut

Ajoutez le bucket S3 créé comme déclencheur à la fonction lambda comme ci-dessous :

Parsing & Loading Data from So DynamoDB with Lambda Function

Parsing & Loading Data from So DynamoDB with Lambda Function

3- Créez une table dans DynamoDB avec la configuration ci-dessous

Nom de la table : DemoTable
Clé de partition : UserId
Paramètres de table : personnalisés
Mode capacité : provisionné

Pour économiser des coûts, configurez les unités de capacité provisionnées pour la lecture/écriture avec une faible valeur (1 ou 2 unités)

Parsing & Loading Data from So DynamoDB with Lambda Function

Parsing & Loading Data from So DynamoDB with Lambda Function

Maintenant que la configuration est prête, vous pouvez la tester en téléchargeant un fichier sur le S3, vous trouverez alors les éléments créés sur la table DynamoDB avec les enregistrements que vous avez téléchargés dans le fichier.

Journaux CloudWatch pour la fonction Lambda

Parsing & Loading Data from So DynamoDB with Lambda Function

Articles DynamoDB

Parsing & Loading Data from So DynamoDB with Lambda Function

J'espère que vous avez trouvé cela intéressant et n'hésitez pas à me faire savoir si vous avez des commentaires.

Références

API S3
API DynamoDB
Pratique boto3 pour les services AWS

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal