编辑 OpsWorks 层的配置 - AWS OpsWorks

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

编辑 OpsWorks 层的配置

重要

AWS OpsWorks Stacks 不再接受新客户。在 2024 年 5 月 26 日之前,现有客户将能够照常使用 OpsWorks 控制台、API、CLI 和 CloudFormation 资源,届时这些工具或资源将停用。为准备此过渡,我们建议您尽快将堆栈过渡到AWS Systems Manager。有关更多信息,请参阅 AWS OpsWorks Stacks 生命周期终止常见问题解答将 AWS OpsWorks Stacks 应用程序迁移到 AWS Systems Manager Application Manager

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

编辑 OpsWorks 层
  1. 在导航窗格中,单击 Layers (层)

  2. Layers 页面上,选择一个层名称以打开详细信息页面,该页面将显示当前配置。

    注意

    选择层名称下的一个名称,这会将您直接带到详细信息页面上的关联选项卡。

  3. 单击 Edit,然后选择适当的选项卡:General SettingsRecipesNetworkEBS VolumesSecurity

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

常规设置

所有层都具有以下设置:

自动修复已启用

是否为层的实例启用了自动修复。默认设置为 Yes

自定义 JSON

针对此层中的所有实例,传递给您的 Chef 配方的 JSON 格式的数据。这个功能有多种用途,例如,您可以使用该功能将数据传递到您自己的配方中。有关更多信息,请参阅使用自定义 JSON

注意

您可以在部署、层和堆栈级别声明自定义 JSON。如果您希望一些自定义 JSON 在整个堆栈中可见,或仅对某个部署可见,那么您可能希望执行上述操作。或者,例如,您可能希望暂时使用在部署级别声明的自定义 JSON 覆盖在层级别声明的自定义 JSON。如果您在多个级别声明自定义 JSON,则在部署级别声明的自定义 JSON 将覆盖同时在层级别和堆栈级别声明的任何自定义 JSON。在层级别声明的自定义 JSON 会覆盖只在堆栈级别声明的任何自定义 JSON。

要使用 AWS OpsWorks Stacks 控制台为部署指定自定义 JSON,请在 Deploy App (部署应用程序) 页面上,选择 Advanced (高级)。在 Custom Chef JSON 框中键入自定义 JSON,然后选择 Save

要使用 AWS OpsWorks Stacks 控制台为堆栈指定自定义 JSON,请在堆栈设置页面的 Custom JSON (自定义 JSON) 框中键入自定义 JSON,然后选择 Save (保存)

有关更多信息,请参阅 使用自定义 JSON部署应用程序

实例关闭超时

指定触发停止工作生命周期事件之后、停止或终止 Amazon EC2 实例之前 AWS OpsWorks Stacks 的等待时间 (秒)。默认设置为 120 秒。该设置的目的是为实例的 Shutdown 配方提供足够的时间来完成它们的任务,然后再终止该实例。如果您的自定义 Shutdown 配方可能需要更长的时间,相应地修改设置即可。有关实例关闭的更多信息,请参阅停止实例

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

食谱

Recipes 选项卡包括以下设置。

Custom Chef recipes

您可以将自定义 Chef 配方分配给层的生命周期事件。有关更多信息,请参阅执行配方

Network

Network 选项卡包括以下设置。

Elastic Load Balancing

您可以将 Elastic Load Balancing 负载均衡器连接到任何层。AWS OpsWorksStacks 然后自动向负载均衡器注册层的联机实例,当实例变为离线状态时,取消注册这些实例。如果您已启用负载均衡器的连接耗尽功能,则可指定 AWS OpsWorks Stacks 是否支持它。有关更多信息,请参阅Elastic Load Balancing 层

Automatically Assign IP Addresses

您可以控制 AWS OpsWorks Stacks 是否自动将公有或弹性 IP 地址分配给层的实例。当您启用此选项时,将发生以下情况:

  • 对于实例存储支持的实例,AWS OpsWorks Stacks 会在每次启动实例时自动分配一个地址。

  • 对于由 Amazon EBS 支持的实例,AWS OpsWorks Stacks 会在第一次启动实例时分配一个地址。

  • 如果实例属于多个层,当您为至少一个层启用了自动分配时,AWS OpsWorks Stacks 会自动分配一个地址。

注意

如果您启用自动分配公有 IP 地址,则它仅适用于新的实例。AWS OpsWorksStacks 无法更新现有实例的公有 IP 地址。

如果您的堆栈在 VPC 中运行,则公有 IP 地址与弹性 IP 地址分别使用不同的设置。下表说明了这些交互关系:

注意

实例必须拥有与 AWS OpsWorks Stacks 服务、Linux 程序包存储库和说明书存储库通信的方法。如果您没有指定公有或弹性 IP 地址,则您的 VPC 必须包含一个允许层的实例与外部站点通信的组件,如 NAT。有关更多信息,请参阅在 VPC 中运行堆栈

如果您的堆栈未在 VPC 中运行,则 Elastic IP addresses 是您的唯一设置:

  • Yes:实例在首次启动时获得弹性 IP 地址,或者,如果无法分配弹性 IP 地址,则获得公有 IP 地址。

  • No:实例在每次启动都会获得公有 IP 地址。

EBS 卷

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

EBS 优化的实例

是否应针对Amazon Elastic Block Store (Amazon EBS) 优化层的实例。有关更多信息,请参阅 Amazon EBS 优化实例

Additional EBS Volumes

(仅限 Linux) 您可以将 Amazon EBS 卷添加到层的实例或将其从层的实例中删除。当您启动实例时,AWS OpsWorks Stacks 会自动创建卷并将其连接到实例。您可以使用 Resources 页面管理堆栈的 EBS 卷。有关更多信息,请参阅资源管理

  • 挂载点:(必填)指定 EBS 卷将挂载到的挂载点或目录。

  • # 磁盘数:(可选)如果您指定了 RAID 阵列,此为阵列中的磁盘数。

    每个 RAID 级别都有一个默认的磁盘数,但您可以从列表中选择一个更大的数字。

  • 总大小 (GiB):(必填)卷的大小(以 GiB 为单位)。

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

    下表显示了每个卷类型允许的最小和最大卷大小。

    卷类型 最小大小 (GiB) 最大大小 (GiB)
    磁介质 1 1024
    预配置 IOPS (SSD) 4 16384
    通用型 (SSD) 1 16384
    吞吐量优化型 (HDD) 500 16384
    Cold HDD 500 16384
  • 卷类型:(可选)指定是创建磁性、通用型 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。

当您向层中添加卷或从层中删除卷时,请注意以下几点:

  • 如果您添加卷,每个新实例都会获取新卷,但 AWS OpsWorks Stacks 不会更新现有实例。

  • 如果您删除某个卷,它仅适用于新实例,而现有实例将保留其卷。

指定挂载点

您可以按照您的首选意愿指定任何挂载点。但是,请注意,将保留某些挂载点以供 AWS OpsWorks Stacks 或 Amazon EC2 使用,但不供 Amazon EBS 卷使用。不要使用典型的 Linux 系统文件夹,例如 /home/etc

将保留以下挂载点以供 AWS 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 实例存储。有关如何为 AWS OpsWorks Stacks 创建自定义 AMI 的更多信息,请参阅使用自定义 AMI

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

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

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

    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
  3. 在自定义说明书的 depends 'deploy' 文件中添加一个 metadata.rb 行。

  4. 将此配方分配给层的 Setup 事件。

安全性

Security 选项卡包括以下设置。

安全组

层必须至少拥有一个关联的安全组。您可以在创建更新堆栈时指定如何关联安全组。AWS OpsWorksStacks 提供一套标准的内置安全组。

  • 默认选项是让 AWS OpsWorks Stacks 自动将适当的内置安全组与每个层关联起来。

  • 您也可以选择不自动关联内置安全组,而是在创建层时将自定义安全组与各个层关联起来。

有关安全组的更多信息,请参阅使用安全组

创建层后,您可以使用 Security Groups 将更多的安全组添加到层中,方法是从 Custom security groups 列表中选择这些安全组。当您将安全组添加到层后,AWS OpsWorks Stacks 会将其添加到所有新的实例中。(请注意,重新启动的实例存储的实例将作为新的实例启动,因此它们也拥有新的安全组。)AWS OpsWorks Stacks 不会将安全组添加到联机实例。

您可以通过单击 x 删除现有安全组,如下所示:

  • 如果您选择让 AWS OpsWorks Stacks 自动关联内置安全组,可以单击 x 删除之前添加的自定义安全组,但您无法删除内置组。

  • 如果您选择不自动关联内置安全组,您可以删除任何现有安全组 (包括原始安全组),但层至少要保留一个组。

当您从层中删除一个安全组之后,AWS OpsWorks Stacks 不会将其添加到任何新的或重新启动的实例中。AWS OpsWorksStacks 不会从联机实例中删除安全组。

注意

如果您的堆栈在 VPC(包括默认 VPC)中运行,您可以使用 Amazon EC2 控制台、API 或 CLI 为联机实例添加或删除安全组。但是,在 AWS OpsWorks Stacks 控制台中是看不到此安全组的。如果您希望移除此安全组,您还必须使用 Amazon EC2。有关更多信息,请参阅安全组

请注意以下几点:

  • 您无法通过添加限制性更强的安全组来限制内置安全组的端口访问设置。当有多个安全组时,Amazon EC2 会使用最宽松的设置。

  • 您不应该修改内置安全组的配置。当您创建堆栈时,AWS OpsWorks Stacks 会覆盖内置安全组的配置,因此,您所做的任何更改都将在您下次创建堆栈时丢失。

如果您发现自己需要为一个或多个层使用限制性更强的安全组设置,请执行以下步骤:

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

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

  2. 编辑堆栈配置,并将 Use OpsWorks security groups 设置切换为 No

    AWS OpsWorks Stacks 自动从每个层中删除内置安全组。

有关安全组的更多信息,请参阅 Amazon EC2 安全组

EC2 Instance Profile

您可以为层的实例更改 EC2 配置文件。有关更多信息,请参阅为在 EC2 实例上运行的应用程序指定权限

CloudWatch Logs

您可以使用 CloudWatch Logs 选项卡启用或禁用 Amazon CloudWatch Logs。CloudWatch Logs 集成可以用于基于 Linux 的 Chef 11.10 和 Chef 12 堆栈。有关如何启用 CloudWatch Log 集成和指定您希望在 CloudWatch Log 控制台中管理的日志的更多信息,请参阅 将 Amazon CloudWatch Logs 与 AWS OpsWorks 堆栈配合使用

标签

您可以使用 Tags 选项卡,对您的层应用成本分配标签。添加标签之后,您可以在 AWS Billing and Cost Management 控制台中激活它们。当您创建一个标签后,您将对标记的结构范围内的每个资源应用该标签。例如,如果您向某个层应用标签,该标签将应用于层中的每个实例、Amazon EBS 卷或 Elastic Load Balancing 负载均衡器。有关如何激活标签并使用标签来跟踪和管理 AWS OpsWorks Stacks 资源的成本的更多信息,请参阅 Billing and Cost Management用户指南中的使用成本分配标签激活用户定义的成本分配标签。有关在 AWS OpsWorks Stacks 中添加标签的更多信息,请参阅标签