使用 Amazon EC2 中的安全组 - Amazon SDK for JavaScript
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon SDK for JavaScript v2 已终止支持。建议您迁移到 Amazon SDK for JavaScript v3。有关更多详情和如何迁移的信息,请参阅本公告

使用 Amazon EC2 中的安全组

JavaScript code example that applies to Node.js execution

此 Node.js 代码示例演示:

  • 如何检索有关安全组的信息。

  • 如何创建安全组以访问 Amazon EC2 实例。

  • 如何删除现有安全组。

情景

Amazon EC2 安全组起着虚拟防火墙的作用,可控制一个或多个实例的流量。为每个安全组添加规则来规定流入或流出其关联实例的流量。您可以随时修改安全组的规则;新规则会自动应用于与该安全组关联的所有实例。

在本示例中,您使用一系列 Node.js 模块执行涉及到安全组的多个 Amazon EC2 操作。这些 Node.js 模块使用 SDK for JavaScript,通过 Amazon EC2 客户端类的以下方法来管理实例:

有关 Amazon EC2 安全组的更多信息,请参阅《Amazon EC2 用户指南》中的适用于 Linux 实例的 Amazon EC2 安全组,或《Amazon EC2 用户指南》中的适用于 Windows 实例的 Amazon EC2 安全组

先决条件任务

要设置和运行此示例,请先完成以下任务:

描述您的安全组

创建文件名为 ec2_describesecuritygroups.js 的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 Amazon EC2,请创建 AWS.EC2 服务对象。创建 JSON 对象作为参数传递,其中包括您要描述的安全组的组 ID。然后调用 Amazon EC2 服务对象的 describeSecurityGroups 方法。

// 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)); } });

要运行示例,请在命令行中键入以下内容。

node ec2_describesecuritygroups.js

此示例代码可在 GitHub 上的此处找到。

创建安全组和规则

创建文件名为 ec2_createsecuritygroup.js 的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 Amazon EC2,请创建 AWS.EC2 服务对象。为参数创建 JSON 对象,这些参数指定安全组的名称、描述以及 VPC 的 ID。将参数传递到 createSecurityGroup 方法。

成功创建安全组后,您可以定义规则以允许入站流量。为参数创建 JSON 对象,这些参数指定 IP 协议以及 Amazon EC2 实例接收流量的入站端口。将参数传递到 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); } }); } }); } });

要运行示例,请在命令行中键入以下内容。

node ec2_createsecuritygroup.js

此示例代码可在 GitHub 上的此处找到。

正在删除安全组

创建文件名为 ec2_deletesecuritygroup.js 的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 Amazon EC2,请创建 AWS.EC2 服务对象。创建 JSON 参数,指定您要删除的安全组的名称。然后调用 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"); } });

要运行示例,请在命令行中键入以下内容。

node ec2_deletesecuritygroup.js

此示例代码可在 GitHub 上的此处找到。