recherche
Maisondéveloppement back-endTutoriel PythonAnalyser et charger des données depuis So DynamoDB avec la fonction Lambda

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

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!

Déclaration
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
Comment coupez-vous une liste de python?Comment coupez-vous une liste de python?May 02, 2025 am 12:14 AM

SlitingyPapyThonListIsDoneUsingTheSyntaxList [Démarrage: arrêt: étape] .He'showitworks: 1) startisheindexofthefirStelementoinclude.2) stopisTheIndexoftheFirstelementsoexclude.3) StepistheincrementBetweenselans.it'susefulfactingPortationSoListShsandCanusegeg

Quelles sont les opérations communes qui peuvent être effectuées sur des tableaux Numpy?Quelles sont les opérations communes qui peuvent être effectuées sur des tableaux Numpy?May 02, 2025 am 12:09 AM

NumpyAllowsForvariousOperations ONARRAYS: 1) BasicarithmeticLikeaddition, Soustraction, Multiplication, anddivision; 2) AdvancedOperationSuchasmatrixMultiplication; 3) Element-Wiseoperations withoutExplicitloop

Comment les tableaux sont-ils utilisés dans l'analyse des données avec Python?Comment les tableaux sont-ils utilisés dans l'analyse des données avec Python?May 02, 2025 am 12:09 AM

ArraySinpython, en particulier ThroughNumpyandPandas, aressentialfordataanalysis, offingspeeedAfficiency.1) numpyarrayablefficienthandlingoflargedatasetsandComplexOperationsLikEMoVingAverages.2)

Comment l'empreinte mémoire d'une liste se compare-t-elle à l'empreinte de la mémoire d'un tableau dans Python?Comment l'empreinte mémoire d'une liste se compare-t-elle à l'empreinte de la mémoire d'un tableau dans Python?May 02, 2025 am 12:08 AM

ListsandNumpyArraysInpythonHaveDidifferentMemoryfootprints: listsaRemoreFlexibles Butlessmemory économe, tandis que la liste de résensés est-ce qui

Comment gérez-vous les configurations spécifiques à l'environnement lors du déploiement de scripts Python exécutables?Comment gérez-vous les configurations spécifiques à l'environnement lors du déploiement de scripts Python exécutables?May 02, 2025 am 12:07 AM

ToenSurepythonscriptsBeHavecorrectlyAcrossDevelopment, mise en scène et production, catégories de type: 1) EnvironmentVariblesForsImplesettings, 2) ConfigurationFilesForComplexsetups et3) dynamicloadingforadaptability.eachMethodoffersNebeneFitsAndreCeresca

Comment trancher un tableau Python?Comment trancher un tableau Python?May 01, 2025 am 12:18 AM

La syntaxe de base pour le découpage de la liste Python est la liste [Démarrage: arrêt: étape]. 1.Start est le premier index d'élément inclus, 2.STOP est le premier indice d'élément exclu et 3.StEP détermine la taille de l'étape entre les éléments. Les tranches sont non seulement utilisées pour extraire les données, mais aussi pour modifier et inverser les listes.

Dans quelles circonstances les listes pourraient-elles mieux fonctionner que les tableaux?Dans quelles circonstances les listes pourraient-elles mieux fonctionner que les tableaux?May 01, 2025 am 12:06 AM

ListesoutPerformarRaySin: 1) dynamicingizingandfrequentinSertions / Deletions, 2) StoringheteroGeneousData, and3) MemoryEfficiencyForsparsedata, butmayhaveslightperformanceCostSincertorations.

Comment pouvez-vous convertir un tableau Python en une liste Python?Comment pouvez-vous convertir un tableau Python en une liste Python?May 01, 2025 am 12:05 AM

Toconvertapythonarraytoalist, usethelist () Constructororageneratorexpression.1) ImportTheArrayModuleandCreateArray.2) Uselist (Arr) ou [Xforxinarr] à Convertittoalist, considérant la performance et le domaine de l'émie-efficacité pour les étages.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

DVWA

DVWA

Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.