在 Amazon EC2 中使用安全组 - AWS SDK for JavaScript

帮助我们改进AWS SDK for JavaScript版本 3 (V3) 文档,方法是使用反馈链接,或者在上创建议题或拉取请求GitHub.

这些区域有:AWS SDK for JavaScriptV3 API 参考指南详细描述了所有的 API 操作AWS SDK for JavaScript版本 3 (V3)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Amazon EC2 中使用安全组

JavaScript code example that applies to Node.js execution

此 Node.js 代码示例演示:

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

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

  • 如何删除现有安全组。

场景

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

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

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

先决条件任

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

重要

这些示例使用 ECMASCRIPT6 (ES6)。这需要 Node.js 版本 13.x 或更高版本。要下载并安装最新版本的 Node.js,请参阅Node.js 下载。.

但是,如果你更喜欢使用 CommonJS 语法,请参阅JavaScript ES6/常用JS 语法

描述安全组

创建libs创建文件名为的 Node.js 模块ec2Client.js. 将下面的代码复制并粘贴到其中,这将创建 Amazon EC2 客户端对象。Replace领域使用您的AWS区域。

const { EC2Client } = require( "@aws-sdk/client-ec2"); // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create anAmazon EC2 service client object. const ec2Client = new EC2Client({ region: REGION }); module.exports = { ec2Client };

可以找到以下示例代码:GitHub 上的.

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

注意

ReplaceSECURITY_GROUP_ID其中包含您要描述的安全组的组 ID。

// Import required AWS SDK clients and commands for Node.js import { DescribeSecurityGroupsCommand } from "@aws-sdk/client-ec2"; import { ec2Client } from "./libs/ec2Client"; // Set the parameters const params = { GroupIds: ["SECURITY_GROUP_ID"] }; //SECURITY_GROUP_ID const run = async () => { try { const data = await ec2Client.send( new DescribeSecurityGroupsCommand(params) ); console.log("Success", JSON.stringify(data.SecurityGroups)); return data; } catch (err) { console.log("Error", err); } }; run();

要运行示例,请在命令提示符下输入以下内容。

node ec2_describesecuritygroups.js

可以找到以下示例代码:GitHub 上的.

创建安全组和规则

创建libs创建文件名为的 Node.js 模块ec2Client.js. 将下面的代码复制并粘贴到其中,这将创建 Amazon EC2 客户端对象。Replace领域使用您的AWS区域。

const { EC2Client } = require( "@aws-sdk/client-ec2"); // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create anAmazon EC2 service client object. const ec2Client = new EC2Client({ region: REGION }); module.exports = { ec2Client };

可以找到以下示例代码:GitHub 上的.

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

成功创建安全组后,您可以定义规则以允许入站流量。为参数创建 JSON 对象,这些参数指定 IP 协议以及 Amazon EC2 实例接收流量的入站端口。将参数传递到 AuthorizeSecurityGroupIngressCommand 方法。

注意

ReplaceKEY_PAIR_NAME用 key pair 的名称,描述随着安全组的描述,SECURITY_GROUP_NAME使用安全组的名称,以及SECURITY_GROUP_ID安全组 ID。

// Import required AWS SDK clients and commands for Node.js import { DescribeVpcsCommand, CreateSecurityGroupCommand, AuthorizeSecurityGroupIngressCommand, } from "@aws-sdk/client-ec2"; import { ec2Client } from "./libs/ec2Client"; // Set the parameters const params = { KeyName: "KEY_PAIR_NAME" }; //KEY_PAIR_NAME // Variable to hold a ID of a VPC const vpc = null; const run = async () => { try { const data = await ec2Client.send(new DescribeVpcsCommand(params)); return data; const vpc = data.Vpcs[0].VpcId; const paramsSecurityGroup = { Description: "DESCRIPTION", //DESCRIPTION GroupName: "SECURITY_GROUP_NAME", // SECURITY_GROUP_NAME VpcId: vpc, }; } catch (err) { console.log("Error", err); } try { const data = await ec2Client.send(new CreateSecurityGroupCommand(params)); const SecurityGroupId = data.GroupId; console.log("Success", SecurityGroupId); return data; } catch (err) { console.log("Error", err); } try { const paramsIngress = { GroupId: "SECURITY_GROUP_ID", //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" }], }, ], }; const data = await ec2Client.send( new AuthorizeSecurityGroupIngressCommand(paramsIngress) ); console.log("Ingress Successfully Set", data); return data; } catch (err) { console.log("Cannot retrieve a VPC", err); } }; run();

要运行示例,请在命令提示符下输入以下内容。

node ec2_createsecuritygroup.js

可以找到以下示例代码:GitHub 上的.

删除安全组

创建文件名为 ec2_deletesecuritygroup.js 的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 Amazon EC2,请创建EC2客户端服务对象。创建 JSON 参数,指定您要删除的安全组的名称。然后调用 DeleteSecurityGroupCommand 方法。

注意

ReplaceSECURITY_GROUP_ID安全组 ID。

// Import required AWS SDK clients and commands for Node.js import { DeleteSecurityGroupCommand } from "@aws-sdk/client-ec2"; import { ec2Client } from "./libs/ec2Client"; // Set the parameters const params = { GroupId: "SECURITY_GROUP_ID" }; //SECURITY_GROUP_ID const run = async () => { try { const data = await ec2Client.send(new DeleteSecurityGroupCommand(params)); console.log("Security Group Deleted"); return data; } catch (err) { console.log("Error", err); } }; run();

要运行示例,请在命令提示符下输入以下内容。

node ec2_deletesecuritygroup.js

可以找到以下示例代码:GitHub 上的.