本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 VPC 中运行堆栈
重要
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请通过 re AWS : Post 或通过 Pre
您可以通过在虚拟私有云 (VPC) 中创建堆栈的实例来控制用户对这些实例的访问。例如,您可能不希望用户直接访问您堆栈的应用程序服务器或数据库,而要求所有公有流量通过弹性负载均衡器传送。
在 VPC 中运行堆栈的基本步骤如下:
-
利用 Amazon VPC 控制台、API 或 AWS CloudFormation 模板创建一个正确配置的 VPC。
-
在创建堆栈时指定 VPC ID。
-
在适当的子网中启动堆栈的实例。
以下内容简要介绍了 AWS OpsWorks Stacks 中的 VPCs 工作原理。
重要
如果使用 VPC 端点功能,则请注意堆栈中的每个实例必须能够从 Amazon Simple Storage Service (Amazon S3) 中完成以下操作:
-
安装实例代理。
-
安装资产,例如 Ruby。
-
上传 Chef 运行日志。
-
检索堆栈命令。
要启用这些操作,您必须确保堆栈的实例有权访问与堆栈区域匹配的以下存储桶。否则,上述操作将失败。
对于 Chef 12 Linux 和 Chef 12.2 Windows,存储桶如下所示。
代理存储桶 | 资产存储桶 | 日志存储桶 | DNA 存储桶 |
---|---|---|---|
|
|
|
|
对于 Chef 11.10 和 Linux 的早期版本,存储桶如下所示。美国东部(弗吉尼亚州北部)外的区域端点不支持 Chef 11.4 堆栈。
代理存储桶 | 资产存储桶 | 日志存储桶 | DNA 存储桶 |
---|---|---|---|
|
|
|
|
有关更多信息,请参阅 VPC 端点。
注意
要使 AWS OpsWorks 堆栈连接到您启用的 VPC 终端节点,您还必须为 NAT 或公有 IP 配置路由,因为 AWS OpsWorks 堆栈代理仍需要访问公有终端节点。
VPC 基础知识
有关详细讨论,请参阅亚马逊 Virtual Private Cloud。 VPCs简而言之,VPC 包含一个或多个子网,每个子网都包含一个或多个实例。每个子网有一个关联的路由表,可根据其目标 IP 地址定向出站流量。
-
VPC 内部的实例默认情况下可以相互通信,而不考虑其子网。但是,更改网络访问控制列表 (ACLs)、安全组策略或使用静态 IP 地址可能会中断这种通信。
-
其实例可以与 Internet 通信的子网称为公有子网。
-
其实例仅可与 VPC 中的其他实例通信而不能直接与 Internet 通信的子网称为私有子网。
AWS OpsWorks 堆栈需要配置 VPC,以便堆栈中的每个实例(包括私有子网中的实例)都能访问以下终端节点:
-
的 “Region Support” 部分列出的 AWS OpsWorks Stacks 服务终端节点之一。AWS OpsWorks 堆栈入门
-
以下实例服务终端节点之一,由 AWS OpsWorks Stacks 代理使用。该代理在托管客户实例上运行以便与服务交换数据。
-
opsworks-instance-service.us-east-2.amazonaws.com
-
opsworks-instance-service.us-east-1.amazonaws.com
-
opsworks-instance-service.us-west-1.amazonaws.com
-
opsworks-instance-service.us-west-2.amazonaws.com
-
opsworks-instance-service.ap-south-1.amazows.com
-
opsworks-instance-service.ap-northeast-1.amazonaws.com
-
opsworks-instance-service.ap-northeast-2.amazonaws.com
-
opsworks-instance-service.ap-southeast-1.amazonaws.com
-
opsworks-instance-service.ap-southeast-2.amazonaws.com
-
opsworks-instance-service.ca-central-1.amazows.com
-
opsworks-instance-service.eu-central-1.amazonaws.com
-
opsworks-instance-service.eu-west-1.amazonaws.com
-
opsworks-instance-service.eu-west-2.amazonaws.com
-
opsworks-instance-service.eu-west-3.amazonaws.com
-
-
Amazon S3
-
您的操作系统依靠的任何软件包存储库,例如 Amazon Linux 或 Ubuntu Linux 存储库。
-
您的应用程序和自定义说明书存储库。
可以使用多种方法来配置 VPC 以提供此连接。以下是如何为 AWS OpsWorks Stacks 应用程序服务器堆栈配置 VPC 的简单示例。

此 VPC 有几个组件:
- 子网
-
VPC 有两个子网:一个公有子网和一个私有子网。
-
公有子网中包含一个负载均衡器和一个网络地址转换 (NAT) 设备,它可以与外部地址以及私有子网中的实例进行通信。
-
私有子网包含应用程序服务器,它可与公有子网中的 NAT 和负载均衡器通信,但无法与外部地址直接通信。
-
- Internet 网关
-
Internet 网关允许具有公有 IP 地址的实例 (例如负载均衡器) 与 VPC 外的地址进行通信。
- 负载均衡器
-
Elastic Load Balancing 负载均衡器接收用户的传入流量、将其分配到私有子网中的应用程序服务器,然后向用户返回响应。
- NAT
-
(NAT) 设备为应用程序服务器提供有限的 Internet 访问,通常用于从外部存储库下载软件更新等用途。所有 AWS OpsWorks 堆栈实例都必须能够与 AWS OpsWorks 堆栈和相应的 Linux 存储库通信。处理此问题的一种方法是将具有关联的弹性 IP 地址的 NAT 设备放在公有子网中。然后,您就可以通过 NAT 对来自私有子网中实例的出站流量进行路由。
注意
一个 NAT 实例可在您的私有子网的出站流量中创建一个单点故障。您可以配置具有一对 NAT 实例的 VPC 来提高可靠性,这对实例可在其中一个出现故障时由另一个接管。有关更多信息,请参阅 Amazon VPC NAT 实例的高可用性
。您也可以使用 NAT 网关。有关更多信息,请参阅《Amazon VPC 用户指南》中的 NAT。
最佳 VPC 配置取决于您的堆栈 AWS OpsWorks 堆栈。以下是一些您可能使用特定 VPC 配置时的示例。有关其他 VPC 场景的示例,请参阅使用 Amazon VPC 的场景。
- 处理公有子网中的一个实例
-
如果您有一个没有关联私有资源的单一实例堆栈 (例如不应可公开访问的 Amazon RDS 实例),您就可以创建具有一个公有子网的 VPC 并将实例放在该子网中。如果您不使用默认 VPC,则必须让实例的层为该实例分配弹性 IP 地址。有关更多信息,请参阅 OpsWorks 图层基础知识。
- 处理私有资源
-
如果您有不应公开访问的资源,则可以创建具有一个公有子网和一个私有子网的 VPC。例如,在负载平衡的自动扩展环境中,您可以将所有 Amazon EC2 实例放在私有子网中,将负载均衡器放在公有子网中。这样,就无法从 Internet 直接访问 Amazon EC2 实例;所有传入流量都必须通过负载均衡器进行路由。
私有子网将实例与 Amazon 的 EC2 直接用户访问隔离开来,但它们仍必须向 AWS 和相应的 Linux 软件包存储库发送出站请求。若要允许此类请求,您可以使用诸如具有自己的弹性 IP 地址的网络地址转换 (NAT) 设备,然后通过 NAT 对实例的出站流量进行路由。您可以将 NAT 放在与负载均衡器相同的公有子网中,如上述示例所示。
-
如果您使用的是诸如 Amazon RDS 实例等后端数据库,则可以将这些实例放在私有子网中。对于 Amazon RDS 实例,则必须在不同的可用区内指定至少两个不同子网。
-
如果需要直接访问私有子网中的实例 (例如,要使用 SSH 登录实例),可以在公有子网中放置一台堡垒主机,代理来自互联网的请求。
-
- 将您自己的网络扩展到 AWS
-
如果您要将自己的网络扩展到云中并直接从您的 VPC 访问 Internet,则可以创建 VPN 网关。有关更多信息,请参阅场景 3:具有公有和私有子网的 VPC 以及硬件 VPN 访问。
为 AWS OpsWorks 堆栈堆栈创建 VPC
本节介绍如何使用示例 AWS CloudFormation 模板为 AWS OpsWorks 堆栈创建 VPC。您可以下载 OpsWorksVPCtemplates.zip 文件中的模板。有关如何手动创建如本主题中所述 VPC 的更多信息,请参阅Scenario 2: VPC with Public and Private Subnets。有关如何配置路由表、安全组等信息,请参阅示例模板。
注意
默认情况下, AWS OpsWorks Stacks 通过串联其 CIDR 范围和可用区来显示子网名称,例如。10.0.0.1/24 - us-east-1b
为了使名称更具可读性,请为每个子网创建一个标记,密钥设置为Name
,值设置为子网名称。 AWS OpsWorks 然后,Stacks 会将子网名称附加到默认名称之后。例如,以下示例中的私有子网有一个标记,名称设置为Private
, OpsWorks 显示为10.0.0.1/24
us-east - 1b - Private
。
您只需几个步骤即可使用 AWS CloudFormation 控制台启动 VPC 模板。以下过程使用示例模板在美国东部(弗吉尼亚州北部)区域创建 VPC。有关如何使用模板在其他区域创建 VPC 的说明,请参阅过程后面的备注。
创建 VPC
-
打开 AWS CloudFormation 控制台
,选择 US East (N. Virginia) (美国东部 (弗吉尼亚北部)) 区域,然后选择 Create Stack (创建堆栈)。 -
在 Select Template (选择模板) 页面上,选择 Upload a template (上传模板)。浏览您在 OpsWorksVPCtemplates.zip
OpsWorksinVPC.template
文件中下载的文件。选择继续。您也可以通过打开 AWS CloudFormation 示例模板
,找到堆栈 VPC 模板并选择启动堆栈来启动此堆栈。 AWS OpsWorks -
在 Specify Parameters (指定参数) 页面上,接受默认值并选择 Continue (继续)。
-
在 Add Tags (添加标签) 页面上,创建一个标签,将 Key (键) 设置为
Name
,并将 Value (值) 设置为 VPC 名称。当您创建 AWS OpsWorks 堆栈时,使用此标签可以更轻松地识别您的 VPC。 -
选择 Continue (继续),然后选择 Close (关闭) 以启动堆栈。
注意:您可以使用以下任一方法在其他区域中创建 VPC。
-
转至在不同区域使用模板
,选择相应的区域,找到 AWS OpsWorks 堆栈 VPC 模板,然后选择启动堆栈。 -
将模板文件复制到您的系统中,在 AWS CloudFormation 控制台
中选择适当的区域,并使用 Create Stack (创建堆栈) 向导的 Upload a template to Amazon S3 (将模板上传到 Amazon S3) 选项从您的系统中上传模板。
示例模板包括提供创建 AWS OpsWorks 堆栈所需的 VPC、子网和负载均衡器的 IDs 输出。您可以通过选择 AWS CloudFormation 控制台窗口底部的 “输出” 选项卡来查看它们。
