

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

# 编辑图 OpsWorks 层的配置
<a name="workinglayers-basics-edit"></a>

**重要**  
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止，新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问，请通过 re [AWS : Post 或通过 Pre](https://repost.aws/) mium Su [AWS pp](https://aws.amazon.com/support) ort 与 AWS 支持 团队联系。

当您创建层后，一些属性 (如 Amazon Web Services Region) 是不可变的，但您可以随时更改大多数层配置。编辑层还可以提供对 **Add Layer** 页面上不可用的配置设置的访问权限。当您保存新配置后，这些设置便会立即生效。

**编辑图 OpsWorks 层**

1.  在导航窗格中，单击 **Layers (层)**。

1. 在 **Layers** 页面上，选择一个层名称以打开详细信息页面，该页面将显示当前配置。
**注意**  
选择层名称下的一个名称，这会将您直接带到详细信息页面上的关联选项卡。

1.  单击 **Edit**，然后选择适当的选项卡：**General Settings**、**Recipes**、**Network**、**EBS Volumes** 或 **Security**。

以下部分介绍对所有层都可用的各种选项卡上的设置。某些层拥有其他特定于层的设置，这些设置显示在页面的顶部。此外，某些设置仅适用于基于 Linux 的堆栈，如下所述。

**Topics**
+ [常规设置](#workinglayers-basics-edit-general)
+ [配方](#workinglayers-basics-edit-recipes)
+ [Network](#workinglayers-basics-edit-network)
+ [EBS 卷](#workinglayers-basics-edit-ebs)
+ [安全性](#workinglayers-basics-edit-security)
+ [CloudWatch 日志](#w2ab1c14c53c21c11c23)
+ [标签](#w2ab1c14c53c21c11c25)

## 常规设置
<a name="workinglayers-basics-edit-general"></a>

所有层都具有以下设置：

**自动修复已启用**  
是否为层的实例启用了[自动修复](workinginstances-autohealing.md)。默认设置为 **Yes**。

**自定义 JSON**  
针对此层中的所有实例，传递给您的 Chef 配方的 JSON 格式的数据。这个功能有多种用途，例如，您可以使用该功能将数据传递到您自己的配方中。有关更多信息，请参阅 [使用自定义 JSON](workingstacks-json.md)。  
您可以在部署、层和堆栈级别声明自定义 JSON。如果您希望一些自定义 JSON 在整个堆栈中可见，或仅对某个部署可见，那么您可能希望执行上述操作。或者，例如，您可能希望暂时使用在部署级别声明的自定义 JSON 覆盖在层级别声明的自定义 JSON。如果您在多个级别声明自定义 JSON，则在部署级别声明的自定义 JSON 将覆盖同时在层级别和堆栈级别声明的任何自定义 JSON。在层级别声明的自定义 JSON 会覆盖只在堆栈级别声明的任何自定义 JSON。  
要使用 OpsWorks Stacks 控制台为部署指定自定义 JSON，请在**部署应用程序**页面上选择**高级**。在 **Custom Chef JSON** 框中键入自定义 JSON，然后选择 **Save**。  
要使用堆栈控制台为堆 OpsWorks 栈指定自定义 JSON，请在堆栈设置页面的自定义 JSON 框中键入**自定义 JSON**，然后选择**保存**。  
有关更多信息，请参阅[使用自定义 JSON](workingstacks-json.md)和[部署应用程序](workingapps-deploying.md)。

**实例关闭超时**  
指定 OpsWorks 堆栈在触发[关闭生命周期事件后等待多长时间（以秒为单位），然后才会](workingcookbook-events.md)停止或终止 Amazon 实例。 EC2 默认设置为 120 秒。该设置的目的是为实例的 Shutdown 配方提供足够的时间来完成它们的任务，然后再终止该实例。如果您的自定义 Shutdown 配方可能需要更长的时间，相应地修改设置即可。有关实例关闭的更多信息，请参阅[停止实例](workinginstances-starting.md#workinginstances-starting-stop)。

此选项卡上的其余设置因层的类型而异，但与层的 **Add Layer** 页面上的设置相同。

## 配方
<a name="workinglayers-basics-edit-recipes"></a>

**Recipes** 选项卡包括以下设置。

**Custom Chef recipes**  
您可以将自定义 Chef 配方分配给层的生命周期事件。有关更多信息，请参阅 [执行配方](workingcookbook-executing.md)。

## Network
<a name="workinglayers-basics-edit-network"></a>

**Network** 选项卡包括以下设置。

**Elastic Load Balancing**  
您可以将 Elastic Load Balancing 负载均衡器连接到任何层。 OpsWorks 然后，堆栈会自动向负载均衡器注册该层的在线实例，并在它们离线时将其注销。如果您启用了负载均衡器的连接耗尽功能，则可以指定 OpsWorks Stacks 是否支持该功能。有关更多信息，请参阅 [Elastic Load Balancing 层](layers-elb.md)。

**Automatically Assign IP Addresses**  
您可以控制 OpsWorks Stacks 是自动为该层的实例分配公有 IP 地址还是弹性 IP 地址。当您启用此选项时，将发生以下情况：  
+ 例如，存储支持的实例， OpsWorks Stacks 会在每次启动实例时自动分配地址。
+ 对于由 Amazon EBS 支持的实例， OpsWorks Stacks 会在实例首次启动时自动分配地址。
+ 如果一个实例属于多个图层，如果您为至少一个图层启用了自动分配， OpsWorks Stacks 会自动分配地址，
如果您启用公有 IP 地址的自动分配，则它仅适用于新实例。 OpsWorks 堆栈无法更新现有实例的公有 IP 地址。
如果您的堆栈在 VPC 中运行，则公有 IP 地址与弹性 IP 地址分别使用不同的设置。下表说明了这些交互关系：  

![\[Table showing interactions between public IP addresses, Elastic IP addresses, and instance network configurations.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/ip-address.png)

实例必须能够与 OpsWorks Stacks 服务、Linux 软件包存储库和食谱存储库进行通信。如果您没有指定公有或弹性 IP 地址，则您的 VPC 必须包含一个允许层的实例与外部站点通信的组件，如 NAT。有关更多信息，请参阅 [在 VPC 中运行堆栈](workingstacks-vpc.md)。
如果您的堆栈未在 VPC 中运行，则 **Elastic IP addresses** 是您的唯一设置：  
+ **Yes**：实例在首次启动时获得弹性 IP 地址，或者，如果无法分配弹性 IP 地址，则获得公有 IP 地址。
+ **No**：实例在每次启动都会获得公有 IP 地址。

## EBS 卷
<a name="workinglayers-basics-edit-ebs"></a>

**EBS Volumes** 选项卡包括以下设置。

EBS 优化的实例  
是否应针对Amazon Elastic Block Store (Amazon EBS) 优化层的实例。有关更多信息，请参阅 [Amazon EBS 优化实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html)。

**Additional EBS Volumes**  
(仅限 Linux) 您可以将 [Amazon EBS 卷](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)添加到层的实例或将其从层的实例中删除。当您启动实例时， OpsWorks Stacks 会自动创建卷并将其连接到实例。您可以使用 **Resources** 页面管理堆栈的 EBS 卷。有关更多信息，请参阅 [资源管理](resources.md)。  
+ **挂载点**：（必填）指定 EBS 卷将挂载到的挂载点或目录。
+ **\$1 磁盘数**：（可选）如果您指定了 RAID 阵列，此为阵列中的磁盘数。

  每个 RAID 级别都有一个默认的磁盘数，但您可以从列表中选择一个更大的数字。
+ **总大小 (GiB)**：（必填）卷的大小（以 GiB 为单位）。

  对于 RAID 阵列，此设置将指定总阵列大小，而不是每个磁盘的大小。

  下表显示了每个卷类型允许的最小和最大卷大小。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/workinglayers-basics-edit.html)
+ **卷类型**：（可选）指定是创建磁性、通用型 SSD、吞吐量优化型 HDD、冷 HDD 还是 PIOPS 卷。

  默认值为 **Magnetic**。
+ **加密**：（可选）指定是否要加密 EBS 卷的内容。
+ **每个磁盘的 IOPS**：（对于预调配 IOPS SSD 和通用型 SSD 卷为必填）如果您指定预调配 IOPS SSD 或通用型 SSD 卷，则您还必须指定 **每个磁盘的 IOPS**。

  对于预配置 IOPS 卷，您可以在创建卷时指定 IOPS 速率。预配置的 IOPS 与请求的卷的大小比率最多为 30 (换言之，3000 IOPS 卷的大小至少为 100 GB)。通用型 (SSD) 卷有一个其大小为卷大小的三倍的基准 IOPS，最大为 10000 IOPS，它在 30 分钟内可突增至 3000 IOPS。

当您向层中添加卷或从层中删除卷时，请注意以下几点：
+ 如果您添加卷，每个新实例都会获取新卷，但 OpsWorks Stacks 不会更新现有实例。
+ 如果您删除某个卷，它仅适用于新实例，而现有实例将保留其卷。

### 指定挂载点
<a name="workinglayers-basics-edit-ebs-mount"></a>

您可以按照您的首选意愿指定任何挂载点。但是，请注意，有些挂载点保留给 OpsWorks Stacks 或 Amazon 使用 EC2 ，不应用于亚马逊 EBS 卷。不要使用典型的 Linux 系统文件夹，例如 `/home` 或 `/etc`。

以下挂载点保留给 OpsWorks Stacks 使用。
+ `/srv/www`
+ `/var/log/apache2` (Ubuntu)
+ `/var/log/httpd` (Amazon Linux)
+ `/var/log/mysql`
+ `/var/www` 

当实例启动或重启时，autofs (一种自动守护程序) 将使用临时设备挂载点 (如 `/media/ephemeral0`) 来进行绑定挂载。此操作发生在挂载 Amazon EBS 卷之前。为确保您的 Amazon EBS 卷的挂载点与 autofs 不冲突，请不要指定临时设备挂载点。可能的暂存设备挂载点取决于特定实例类型，以及它是由实例存储支持的还是由 Amazon EBS 支持的。为避免与 autofs 冲突，请执行以下操作：
+ 验证适用于特定实例类型的临时设备挂载点和您要使用的后备存储。
+ 请注意，如果您切换到 Amazon EBS 支持的实例，则适用于实例存储支持的实例的挂载点可能会与 autofs 冲突，反之亦然。

**注意**  
如果您希望更改实例存储块设备映射，您可以创建一个自定义 AMI。有关更多信息，请参阅 [Amazon EC2 实例存储](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html)。有关如何为 OpsWorks 堆栈创建自定义 AMI 的更多信息，请参阅[使用自定义 AMIs](workinginstances-custom-ami.md)。

下面的示例说明了如何使用自定义配方来确保卷的挂载点不会与 autofs 冲突。您可以根据您的特定使用案例的需要来对其进行调整。

**避免冲突的挂载点**

1. 将 Amazon EBS 卷分配到所需的层，但使用永远不会与 autofs 冲突的挂载点，如 `/mnt/workspace`。

1. 实施以下自定义配方，该配方可在 Amazon EBS 卷上创建一个应用程序目录并从 `/srv/www/` 中与之链接。有关如何实施自定义配方的更多信息，请参阅[说明书和诀窍](workingcookbook.md)和[自定义堆栈 OpsWorks](customizing.md)。

   ```
   mount_point = node['ebs']['raids']['/dev/md0']['mount_point'] rescue nil
   
   if mount_point
     node[:deploy].each do |application, deploy|
       directory "#{mount_point}/#{application}" do
         owner deploy[:user]
         group deploy[:group]
         mode 0770
         recursive true
       end
   
       link "/srv/www/#{application}" do
         to "#{mount_point}/#{application}"
       end
     end
   end
   ```

1. 在自定义说明书的 `depends 'deploy'` 文件中添加一个 `metadata.rb` 行。

1. [将此配方分配给层的 Setup 事件。](workingcookbook-executing.md)

## 安全性
<a name="workinglayers-basics-edit-security"></a>

**Security** 选项卡包括以下设置。

**安全组**  
层必须至少拥有一个关联的安全组。[创建](workingstacks-creating.md)或[更新](workingstacks-edit.md)堆栈时，您可以指定如何关联安全组。 OpsWorks Stacks 提供了一组标准的内置安全组。  
+ 默认选项是让 OpsWorks Stacks 自动将相应的内置安全组与每个层相关联。
+  您也可以选择不自动关联内置安全组，而是在创建层时将自定义安全组与各个层关联起来。
有关安全组的更多信息，请参阅[使用安全组](workingsecurity-groups.md)。  
创建层后，您可以使用 **Security Groups** 将更多的安全组添加到层中，方法是从 **Custom security groups** 列表中选择这些安全组。将安全组添加到层后， OpsWorks Stacks 会将其添加到所有新实例。（请注意，重新启动的实例存储实例将作为新实例启动，因此它们也将具有新的安全组。） OpsWorks 堆栈不会向在线实例添加安全组。  
您可以通过单击 **x** 删除现有安全组，如下所示：  
+ 如果您选择让 OpsWorks Stacks 自动关联内置安全组，则可以通过单击 **x** 来删除之前添加的自定义安全组，但无法删除内置组。
+ 如果您选择不自动关联内置安全组，您可以删除任何现有安全组 (包括原始安全组)，但层至少要保留一个组。
从层中移除安全组后， OpsWorks Stacks 不会将其添加到任何新的或重启的实例中。 OpsWorks 堆栈不会从在线实例中移除安全组。  
如果您的堆栈在 VPC 中运行，则可以使用 Amazon EC2 控制台、API 或 CLI 为在线实例添加或删除安全组。但是，此安全组在 OpsWorks Stacks 控制台中不可见。如果要删除安全组，则还必须使用 Amazon EC2。有关更多信息，请参阅[安全组](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html)。
注意以下几点：  
+ 您无法通过添加限制性更强的安全组来限制内置安全组的端口访问设置。当有多个安全组时，Amazon 会 EC2 使用最宽松的设置。
+ 您不应该修改内置安全组的配置。创建堆栈时，Stac OpsWorks ks 会覆盖内置安全组的配置，因此您所做的任何更改都将在下次创建堆栈时丢失。
如果您发现自己需要为一个或多个层使用限制性更强的安全组设置，请执行以下步骤：  

1. 创建拥有适当设置的自定义安全组，并将这些安全组添加到适当的层中。

   除了内置组，您堆栈中的每个层都必须至少拥有一个安全组，即使只有一个层需要自定义设置也是如此。

1. [编辑堆栈配置](workingstacks-edit.md)并将 “**使用 OpsWorks安全组**” 设置切换为 “**否**”。

   OpsWorks Stacks 会自动从每一层移除内置安全组。
有关安全组的更多信息，请参阅 [Amazon EC2 安全组](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)。

**EC2 实例配置文件**  
您可以更改图层实例的 EC2 配置文件。有关更多信息，请参阅 [为在 EC2 实例上运行的应用程序指定权限](opsworks-security-appsrole.md)。

## CloudWatch 日志
<a name="w2ab1c14c53c21c11c23"></a>

**CloudWatch 日志**选项卡允许您启用或禁用 Amazon CloudWatch 日志。 CloudWatch 日志集成适用于基于 Chef 11.10 和 Chef 12 Linux 的堆栈。有关启用 CloudWatch 日志集成和在日志控制台中指定要管理的 CloudWatch 日志的更多信息，请参阅[使用带 OpsWorks 堆栈的 Amazon CloudWatch 日志](monitoring-cloudwatch-logs.md)。

## 标签
<a name="w2ab1c14c53c21c11c25"></a>

您可以使用 **Tags** 选项卡，对您的层应用成本分配标签。添加标签后，可以在 AWS 账单与成本管理 控制台中激活它们。当您创建一个标签后，您将对标记的结构范围内的每个资源应用该标签。例如，如果您向某个层应用标签，该标签将应用于层中的每个实例、Amazon EBS 卷或 Elastic Load Balancing 负载均衡器。有关如何激活标签并使用它们来跟踪和管理 OpsWorks 堆栈资源成本的更多信息，请参阅《B *illing and Cost Management 用户指南》中的[使用成本分配标签](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)[和激活用户定义](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/activating-tags.html)的成*本分配标签。有关在 OpsWorks Stacks 中添加标签的更多信息，请参阅[标签](tagging.md)。