Le guide de API référence AWS SDK for JavaScript V3 décrit en détail toutes les API opérations de la AWS SDK for JavaScript version 3 (V3).
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Création d'une application pour envoyer des données à DynamoDB
Ce didacticiel Node.js multiservice explique comment créer une application permettant aux utilisateurs de soumettre des données à une table Amazon DynamoDB. Cette application utilise les services suivants :
AWS Identity and Access Management(IAM) et Amazon Cognito pour les autorisations et autorisations.
Amazon DynamoDB (DynamoDB) pour créer et mettre à jour les tables.
Amazon Simple Notification Service (Amazon SNS) pour avertir l'administrateur de l'application lorsqu'un utilisateur met à jour le tableau.
Le scénario
Dans ce didacticiel, une page HTML fournit une application basée sur un navigateur pour envoyer des données à une table Amazon DynamoDB. L'application utilise Amazon SNS pour avertir l'administrateur de l'application lorsqu'un utilisateur met à jour le tableau.
![Relation entre l'interface du navigateur, le SDK et les AWS services dans l'application de soumission de données.](images/submitting_data.png)
Pour créer l'application :
Prérequis
Effectuez les tâches préalables suivantes :
-
Configurez l'environnement du projet pour exécuter ces TypeScript exemples de nœuds et installez les modules requis AWS SDK for JavaScript et tiers. Suivez les instructions indiquées sur GitHub
. Créez un fichier de configurations partagé avec vos informations d'identification utilisateur. Pour plus d'informations sur la fourniture d'un fichier d'informations d'identification partagé, consultez la section Fichiers de configuration et d'informations d'identification partagés dans le Guide de référence AWS des SDK et des outils.
Créez les AWS ressources
Cette application nécessite les ressources suivantes :
AWS Identity and Access Management(IAM) Rôle d'utilisateur Amazon Cognito non authentifié avec les autorisations suivantes :
sns:Publish
dynamodb : PutItem
Une table DynamoDB.
Vous pouvez créer ces ressources manuellement dans la AWS console, mais nous vous recommandons de les approvisionner en suivant les AWS CloudFormation instructions de ce didacticiel.
Créez les AWS ressources en utilisant AWS CloudFormation
AWS CloudFormationvous permet de créer et de provisionner des déploiements AWS d'infrastructure de manière prévisible et répétée. Pour plus d’informations sur AWS CloudFormation, consultez le AWS CloudFormationGuide de l’utilisateur .
Pour créer la AWS CloudFormation pile à l'aide de AWS CLI :
Installez et configurez en AWS CLI suivant les instructions du guide de l'AWS CLIutilisateur.
Créez un fichier nommé
setup.yaml
dans le répertoire racine du dossier de votre projet et GitHubcopiez-y lecontenu. Note
Le AWS CloudFormation modèle a été généré à l'aide du modèle AWS CDK disponible ici GitHub
. Pour en savoir plus sur le AWS CDK, veuillez consulter le Guide du développeur AWS Cloud Development Kit (AWS CDK). Exécutez la commande suivante depuis la ligne de commande, en remplaçant
STACK_NAME par un nom
unique pour la pile et REGION dans votrerégion
. AWSImportant
Le nom de la pile doit être unique au sein d'une AWS région et d'un AWS compte. Vous pouvez spécifier jusqu'à 128 caractères. Les chiffres et les tirets sont autorisés.
aws cloudformation create-stack --stack-name STACK_NAME --template-body file://setup.yaml --capabilities CAPABILITY_IAM --region REGION
Pour plus d'informations sur les paramètres de
create-stack
commande, consultez le guide de référence des AWS CLI commandes et le guide de AWS CloudFormation l'utilisateur.Pour afficher les ressources créées, ouvrez AWS CloudFormation dans la console AWS de gestion, choisissez la pile, puis sélectionnez l'onglet Ressources.
Lorsque la pile est créée, utilisez le AWS SDK for JavaScript pour remplir la table DynamoDB, comme décrit dans. Remplissage du tableau
Remplissage du tableau
Pour remplir le tableau, créez d'abord un répertoire nommélibs
, puis créez un fichier nommédynamoClient.js
, puis collez-y le contenu ci-dessous. Remplacez REGION
par votre AWS région et remplacez IDENTITY_POOL_ID par un identifiant de pool d'
identités Amazon Cognito. Cela crée l'objet client DynamoDB.
import { CognitoIdentityClient } from "@aws-sdk/client-cognito-identity"; import { fromCognitoIdentityPool } from "@aws-sdk/credential-provider-cognito-identity"; import { DynamoDBClient } from "@aws-sdk/client-dynamodb"; const REGION = "REGION"; const IDENTITY_POOL_ID = "IDENTITY_POOL_ID"; // An Amazon Cognito Identity Pool ID. // Create an Amazon DynaomDB service client object. const dynamoClient = new DynamoDBClient({ region: REGION, credentials: fromCognitoIdentityPool({ client: new CognitoIdentityClient({ region: REGION }), identityPoolId: IDENTITY_POOL_ID, }), }); export { dynamoClient };
Ce code est disponible ici GitHub
Ensuite, créez un dynamoAppHelperFiles
dossier dans le dossier de votre projet, créez-y un fichier update-table.js
et GitHubcopiez-y le
// Import required AWS SDK clients and commands for Node.js import { PutItemCommand } from "@aws-sdk/client-dynamodb"; import { dynamoClient } from "../libs/dynamoClient.js"; // Set the parameters export const params = { TableName: "Items", Item: { id: { N: "1" }, title: { S: "aTitle" }, name: { S: "aName" }, body: { S: "aBody" }, }, }; export const run = async () => { try { const data = await dynamoClient.send(new PutItemCommand(params)); console.log("success"); console.log(data); } catch (err) { console.error(err); } }; run();
Exécutez la commande suivante depuis la ligne de commande.
node update-table.js
Ce code est disponible ici GitHub
Création d'une page frontale pour l'application
Vous créez ici la page du navigateur HTML frontal pour l'application.
Créez un DynamoDBApp
répertoire, créez un fichier nommé index.html
et copiez le code à partir de maintenant GitHubscript
élément ajoute le main.js
fichier, qui contient tous les éléments requis JavaScript pour l'exemple. Vous créerez le main.js
fichier ultérieurement dans ce didacticiel. Le code restant index.html
crée la page du navigateur qui capture les données saisies par les utilisateurs.
Cet exemple de code se trouve ici GitHub
Créez le script du navigateur
Créez d'abord les objets client de service requis pour l'exemple. Créez un libs
répertoiresnsClient.js
, créez et collez-y le code ci-dessous. Remplacez REGION
et IDENTITY_POOL_ID
dans chacun d'eux.
Note
Utilisez l'ID du pool d'identités Amazon Cognito dans lequel vous avez créé. Créez les AWS ressources
import { CognitoIdentityClient } from "@aws-sdk/client-cognito-identity"; import { fromCognitoIdentityPool } from "@aws-sdk/credential-provider-cognito-identity"; import { SNSClient } from "@aws-sdk/client-sns"; const REGION = "REGION"; const IDENTITY_POOL_ID = "IDENTITY_POOL_ID"; // An Amazon Cognito Identity Pool ID. // Create an Amazon Comprehend service client object. const snsClient = new SNSClient({ region: REGION, credentials: fromCognitoIdentityPool({ client: new CognitoIdentityClient({ region: REGION }), identityPoolId: IDENTITY_POOL_ID, }), }); export { snsClient };
Ce code est disponible ici GitHub.
Pour créer le script de navigateur correspondant à cet exemple, dans un dossier nomméDynamoDBApp
, créez un module Node.js portant le nom de fichier add_data.js
et collez-y le code ci-dessous. La submitData
fonction envoie des données à une table DynamoDB et envoie un SMS à l'administrateur de l'application via Amazon SNS.
Dans la submitData
fonction, déclarez les variables pour le numéro de téléphone cible, les valeurs saisies sur l'interface de l'application et pour le nom du compartiment Amazon S3. Créez ensuite un objet de paramètres pour ajouter un élément au tableau. Si aucune des valeurs n'est vide, submitData
ajoute l'élément au tableau et envoie le message. N'oubliez pas de mettre la fonction à la disposition du navigateur, avecwindow.submitData = submitData
.
// Import required AWS SDK clients and commands for Node.js import { PutItemCommand } from "@aws-sdk/client-dynamodb"; import { PublishCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; import { dynamoClient } from "../libs/dynamoClient.js"; export const submitData = async () => { //Set the parameters // Capture the values entered in each field in the browser (by id). const id = document.getElementById("id").value; const title = document.getElementById("title").value; const name = document.getElementById("name").value; const body = document.getElementById("body").value; //Set the table name. const tableName = "Items"; //Set the parameters for the table const params = { TableName: tableName, // Define the attributes and values of the item to be added. Adding ' + "" ' converts a value to // a string. Item: { id: { N: id + "" }, title: { S: title + "" }, name: { S: name + "" }, body: { S: body + "" }, }, }; // Check that all the fields are completed. if (id != "" && title != "" && name != "" && body != "") { try { //Upload the item to the table await dynamoClient.send(new PutItemCommand(params)); alert("Data added to table."); try { // Create the message parameters object. const messageParams = { Message: "A new item with ID value was added to the DynamoDB", PhoneNumber: "PHONE_NUMBER", //PHONE_NUMBER, in the E.164 phone number structure. // For example, ak standard local formatted number, such as (415) 555-2671, is +14155552671 in E.164 // format, where '1' in the country code. }; // Send the SNS message const data = await snsClient.send(new PublishCommand(messageParams)); console.log( "Success, message published. MessageID is " + data.MessageId, ); } catch (err) { // Display error message if error is not sent console.error(err, err.stack); } } catch (err) { // Display error message if item is no added to table console.error( "An error occurred. Check the console for further information", err, ); } // Display alert if all field are not completed. } else { alert("Enter data in each field."); } }; // Expose the function to the browser window.submitData = submitData;
Cet exemple de code se trouve ici GitHub
Enfin, exécutez la commande suivante à l'invite de commande JavaScript pour regrouper le fichier correspondant à cet exemple dans un fichier nommé main.js
:
webpack add_data.js --mode development --target web --devtool false -o main.js
Note
Pour plus d'informations sur l'installation de Webpack, consultezRegroupez des applications avec Webpack.
Pour exécuter l'application, index.html
ouvrez-la dans votre navigateur.
Supprimer les ressources
Comme indiqué au début de ce didacticiel, veillez à désactiver toutes les ressources que vous créez pendant que vous suivez ce didacticiel pour vous assurer que vous n'êtes pas débité. Pour ce faire, supprimez la AWS CloudFormation pile que vous avez créée dans la Créez les AWS ressources rubrique de ce didacticiel, comme suit :
Ouvrez la page Stacks et sélectionnez la pile.
Sélectionnez Delete (Supprimer).
Pour d'autres exemples AWS interservices, consultez les exemples AWS SDK for JavaScriptinterservices.