

La versión 2 de AWS SDK para JavaScript ha llegado al final del soporte. Se recomienda que migre a [AWS SDK para JavaScript v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/). Para ver detalles e información adicionales sobre cómo realizar la migración, consulte este [anuncio](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/).

# Trabajar con grupos de seguridad en Amazon EC2
<a name="ec2-example-security-groups"></a>

![JavaScript code example that applies to Node.js execution](http://docs.aws.amazon.com/es_es/sdk-for-javascript/v2/developer-guide/images/nodeicon.png)

**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
<a name="ec2-example-security-groups-scenario"></a>

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:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#describeSecurityGroups-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#describeSecurityGroups-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#authorizeSecurityGroupIngress-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#authorizeSecurityGroupIngress-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#createSecurityGroup-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#createSecurityGroup-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#describeVpcs-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#describeVpcs-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#deleteSecurityGroup-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html#deleteSecurityGroup-property)

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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html) en la *Guía del usuario de Amazon EC2* o [Grupos de seguridad de Amazon EC2 para instancias de Windows](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/using-network-security.html) en la *Guía del usuario de Amazon EC2*.

## Tareas previas necesarias
<a name="ec2-example-security-groups-prerequisites"></a>

Para configurar y ejecutar este ejemplo, primero debe completar las tareas siguientes:
+ Instale Node.js. Para obtener más información acerca de la instalación de Node.js consulte el [sitio web de Node.js](https://nodejs.org).
+ Cree un archivo de configuraciones compartidas con sus credenciales de usuario. Para obtener más información acerca de cómo crear un archivo de credenciales compartidas, consulte [Carga de credenciales en Node.js desde el archivo de credenciales compartidas](loading-node-credentials-shared.md).

## Descripción de los grupos de seguridad
<a name="ec2-example-security-groups-describing"></a>

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 ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/ec2/ec2_describesecuritygroups.js).

## Creación de un grupo de seguridad y reglas
<a name="ec2-example-security-groups-creating"></a>

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 ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/ec2/ec2_createsecuritygroup.js).

## Eliminación de un grupo de seguridad
<a name="ec2-example-security-groups-deleting"></a>

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 ejemplo se puede encontrar [aquí en GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javascript/example_code/ec2/ec2_deletesecuritygroup.js).