Lecciones

Cómo configurar el SDK de AWS para Nodejs

Escrito por Jhoan Steven Delgado | 27 de julio de 2020

En esta Lección aprenderemos a configurar el SDK de AWS para los lenguajes NodeJs. Además, realizaremos un ejemplo práctico implementando un servicio de DynamoDB.

Antes de iniciar, verifica nuestra Lección Configurando AWS CLI y IAM profile, donde también encontrarás los perrequisitos que necesitas. 

AWS SDK para Nodejs

1. Una vez instalado NodeJs, creamos un folder para nuestro proyecto llamado DynamoExample.

2. Abrimos la consola (CMD o Terminal), ingresamos en la carpeta haciendo uso del comando cd. Una vez dentro, ejecutamos el comando “npm init”.

3. Dejamos todo en default, presionamos solo enter para seguir…

4. Finalmente cuando lo solicite escribimos “yes” y presionamos enter.

5. Ejecutamos el siguiente comando para instalar el sdk de AWS desde npm: “npm install aws-sdk --save”

6. Finalmente observamos las dependencias en el archivo json

Ejemplo práctico utilizando DynamoDB

A continuación realizaremos un corto y práctico ejemplo utilizando el SDK de AWS con el servicio DynamoDB. Primero, debemos crear una base de datos ejemplo:

Abre la consola (CMD o terminal) y ejecuta el siguiente código de AWS CLI para crearla:

Código:

aws dynamodb create-table --table-name productos-dev --attribute-definitions AttributeName=marca,AttributeType=S AttributeName=referencia,AttributeType=S --key-schema AttributeName=marca,KeyType=HASH AttributeName=referencia,KeyType=RANGE --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 --profile dev

2. Una vez creada, verifica en la AWS console que se encuentre allí:

3. Abre el proyecto con visual studio code, y crea una clase llamada DynamoScanExample.js

4. Copia y pega el siguiente código:

var AWS = require("aws-sdk");

var credentials = new AWS.SharedIniFileCredentials({profile: 'dev'});
AWS.config.credentials = credentials;
AWS.config.update({region: 'us-east-1'});


// Create the DynamoDB service object
var ddb = new AWS.DynamoDB.DocumentClient();

var params = {
      TableName: 'productos-dev'

};

ddb.scan(params, onScan);
var count = 0;

function onScan(err, data) {
      if (err) {
console.error("Unable to scan the table. Error JSON:", JSON.stringify(err, null, 2));
       } else {
            console.log("Scan succeeded.");
            data.Items.forEach(function(itemdata) {
                      console.log("Item :", ++count,JSON.stringify(itemdata));
            });

     }
}

5. Ahora crea una clase llamada DynamoInsertExample.js

6. Copia y pega el siguiente código:

// Load the AWS SDK for Node.js
var AWS = require('aws-sdk');
var credentials = new AWS.SharedIniFileCredentials({profile: 'dev'});
AWS.config.credentials = credentials;
AWS.config.update({region: 'us-east-1'});

// Create DynamoDB service object
var ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

var params = {
       RequestItems: {
           "productos-dev": [
                {
                    PutRequest: {
                          Item: {
                               "marca": { "S": "TESLA" },
                                     "referencia": { "S": "Model X" },
                                     "precio": {"N": "95000"}
                          }
                      }
                  },
                  {
                    PutRequest: {
                         Item: {
                         "marca": { "S": "AUDI" },
                         "referencia": { "S": "Q7" },
                         "precio": {"N": "120000"}
                       }
                    }
                 },
                {
                  PutRequest: {
                       Item: {
                           "marca": { "S": "BMW" },
                           "referencia": { "S": "Serie 1" },
                            "precio": {"N": "50000"}
                        }
                      }
                   },
                  {
                 PutRequest: {
                      Item: {
                          "marca": { "S": "TESLA" },
                          "referencia": { "S": "Model 3" },
                          "precio": {"N": "30000"}
                        }
                   }
               }
           ]
        }
  };  

ddb.batchWriteItem(params, function(err, data) {
     if (err) {

           console.log("Error", err);
     } else {
           console.log("Success", data);
     }
});

7. Una vez hecho esto, (empezaremos por ejecutar el método de la clase DynamoInsertExample, ya que nuestra BD está vacía). Abrimos una terminal dentro de Vscode (En el caso de que no la tengamos) haciendo click en el botón Terminal y luego New Terminal.

8. Una vez tengamos la terminal abierta dentro de Vscode, escribimos y ejecutamos el siguiente comando: node DynamoInsertExample.js

9. Al ejecutar exitosamente el comando, tendremos una salida “Success” de consola como la siguiente:

10. Procedemos a verificar en la AWS console que efectivamente los nuevos datos se encuentren registrado en nuestra BD:

11. Ahora procedemos a ejecutar la clase DynamoScanExample para realizar un scan de todos los datos de la BD e imprimirlos por consola. Vamos a la terminal y escribimos el siguiente comando: node DynamoScanExample.js

12. Finalmente al ejecutar exitosamente el comando, la salida de consola debe verse como la siguiente:

13. Para aquellas personas que quieran explorar más a fondo el SDK de AWS para NodeJs, pueden ingresar a los siguientes recursos:

Aprende más en nuestra Lección sobre cómo configurara AWS SDK para Java

 Si quieres conocer más visita nuestra ruta de aprendizaje de profesional AWS