Trabajar con grupos de seguridad en Amazon EC2 - AWS SDK for JavaScript

La versión 3 (v3) del AWS SDK for JavaScript es una reescritura de la v2 con nuevas características excelentes, incluida la arquitectura modular. Para obtener más información, consulte la Guía para desarrolladores de AWS SDK for JavaScript v3.

Trabajar con grupos de seguridad en Amazon EC2

JavaScript code example that applies to Node.js execution

Este ejemplo de código de Node.js muestra:

  • Cómo recuperar información acerca de sus grupos de seguridad.

  • Cómo crear un grupo de seguridad para obtener acceso a una instancia de Amazon EC2.

  • Cómo eliminar un grupo de seguridad ya existente.

El escenario

Un grupo de seguridad de Amazon EC2 funciona como un firewall virtual que controla el tráfico de una o varias instancias. Se añaden reglas a cada grupo de seguridad para permitir el tráfico con sus instancias asociadas. Puede modificar las reglas de un grupo de seguridad en cualquier momento: las nuevas reglas se aplican automáticamente a todas las instancias que están asociadas al grupo de seguridad.

En este ejemplo, va a utilizar una serie de módulos de Node.js para realizar varias operaciones de Amazon EC2 en las que haya grupos de seguridad. Los módulos de Node.js usan el SDK para JavaScript para gestionar instancias usando los métodos siguientes de clase de cliente de Amazon EC2:

Para obtener más información sobre los grupos de seguridad de Amazon EC2, consulte Grupos de seguridad de Amazon EC2 para instancias de Linux en la Guía del usuario de instancias de Linux de Amazon EC2 o Grupos de seguridad de Amazon EC2 para instancias de Windows en la Guía del usuario de instancias de Windows de Amazon EC2.

Tareas previas necesarias

Para configurar y ejecutar este ejemplo, primero debe completar las tareas siguientes:

Descripción de los grupos de seguridad

Cree un módulo de Node.js con el nombre de archivo ec2_describesecuritygroups.js. Asegúrese de configurar el SDK tal y como se ha indicado anteriormente. Para acceder a Amazon EC2, cree un objeto de servicio de AWS.EC2. Cree un objeto JSON para transferirlo como parámetros como, por ejemplo, los ID de los grupos de seguridad que desea describir. Luego llame al método describeSecurityGroups del objeto de servicio de Amazon EC2.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create EC2 service object var ec2 = new AWS.EC2({ apiVersion: "2016-11-15" }); var params = { GroupIds: ["SECURITY_GROUP_ID"], }; // Retrieve security group descriptions ec2.describeSecurityGroups(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", JSON.stringify(data.SecurityGroups)); } });

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node ec2_describesecuritygroups.js

Este código de muestra se puede encontrar aquí en GitHub.

Creación de un grupo de seguridad y reglas

Cree un módulo de Node.js con el nombre de archivo ec2_createsecuritygroup.js. Asegúrese de configurar el SDK tal y como se ha indicado anteriormente. Para acceder a Amazon EC2, cree un objeto de servicio de AWS.EC2. Cree un objeto JSON para los parámetros que especifiquen el nombre del grupo de seguridad, una descripción y el ID de la VPC. Transfiera los parámetros al método createSecurityGroup.

Después de crear correctamente el grupo de seguridad, puede definir sus reglas para permitir el tráfico de entrada. Cree un objeto JSON para parámetros que especifiquen el protocolo IP y los puertos de entrada donde la instancia de Amazon EC2 va a recibir el tráfico. Transfiera los parámetros al método authorizeSecurityGroupIngress.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Load credentials and set region from JSON file AWS.config.update({ region: "REGION" }); // Create EC2 service object var ec2 = new AWS.EC2({ apiVersion: "2016-11-15" }); // Variable to hold a ID of a VPC var vpc = null; // Retrieve the ID of a VPC ec2.describeVpcs(function (err, data) { if (err) { console.log("Cannot retrieve a VPC", err); } else { vpc = data.Vpcs[0].VpcId; var paramsSecurityGroup = { Description: "DESCRIPTION", GroupName: "SECURITY_GROUP_NAME", VpcId: vpc, }; // Create the instance ec2.createSecurityGroup(paramsSecurityGroup, function (err, data) { if (err) { console.log("Error", err); } else { var SecurityGroupId = data.GroupId; console.log("Success", SecurityGroupId); var paramsIngress = { GroupId: "SECURITY_GROUP_ID", IpPermissions: [ { IpProtocol: "tcp", FromPort: 80, ToPort: 80, IpRanges: [{ CidrIp: "0.0.0.0/0" }], }, { IpProtocol: "tcp", FromPort: 22, ToPort: 22, IpRanges: [{ CidrIp: "0.0.0.0/0" }], }, ], }; ec2.authorizeSecurityGroupIngress(paramsIngress, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Ingress Successfully Set", data); } }); } }); } });

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node ec2_createsecuritygroup.js

Este código de muestra se puede encontrar aquí en GitHub.

Eliminación de un grupo de seguridad

Cree un módulo de Node.js con el nombre de archivo ec2_deletesecuritygroup.js. Asegúrese de configurar el SDK tal y como se ha indicado anteriormente. Para acceder a Amazon EC2, cree un objeto de servicio de AWS.EC2. Cree los parámetros JSON para especificar el nombre del grupo de seguridad que desea eliminar. A continuación, llame al método deleteSecurityGroup.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create EC2 service object var ec2 = new AWS.EC2({ apiVersion: "2016-11-15" }); var params = { GroupId: "SECURITY_GROUP_ID", }; // Delete the security group ec2.deleteSecurityGroup(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Security Group Deleted"); } });

Para ejecutar el ejemplo, escriba lo siguiente en la línea de comandos.

node ec2_deletesecuritygroup.js

Este código de muestra se puede encontrar aquí en GitHub.