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
L'architecture ci-dessous montre que nous utilisons 3 services AWS
Une brève description des services ci-dessous à titre de rafraîchissement :
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 :
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 :
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)
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
Articles DynamoDB
J'espère que vous avez trouvé cela intéressant et n'hésitez pas à me faire savoir si vous avez des commentaires.
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!