

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

# 使用在 OpsWorks Stacks 外部创建的计算资源
<a name="registered-instances"></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 支持 团队联系。

**注意**  
仅 Linux 堆栈支持此功能。

[实例](workinginstances.md)介绍如何使用 OpsWorks 堆栈创建和管理亚马逊弹性计算云 (Amazon EC2) 实例组。您还可以将 Linux 计算资源整合到堆栈之外创建的 OpsWorks 堆栈中：
+ 您使用亚马逊 EC2 控制台、CLI 或 API 直接创建的亚马逊 EC2 实例。
+ 您自己的硬件上运行的*本地* 实例，包括虚拟机上运行的实例。

这些计算资源变成 OpsWorks 堆栈管理的实例，你可以像管理普通 OpsWorks 堆栈实例一样管理它们：
+ **管理用户权限**：您可以使用 [OpsWorks Stacks 用户管理](opsworks-security-users.md)来指定允许哪些用户访问您的堆栈，允许他们对堆栈实例执行哪些操作，以及他们是否拥有 SSH 访问权限和 sudo 权限。
+ **自动执行任务** — 你可以让 OpsWorks Stacks 运行自定义 Chef 配方来执行任务，例如使用单个命令在堆栈的任何或所有实例上执行脚本。

  如果您将实例分配给某个[层](workinglayers.md)， OpsWorks Stacks 会在实例[生命周期](workingcookbook-events.md)的关键时刻（包括您的自定义食谱）自动在实例上运行一组指定的 Chef 食谱。请注意，您只能将注册的 Amazon EC2 实例分配给[自定义层](workinglayers-custom.md)。
+ **管理资源** — 堆栈允许您在中对资源进行分组和管理 AWS 区域， OpsWorks 控制面板显示所有区域的堆栈状态。
+ **安装软件包**：您可以使用 Chef 配方在堆栈的任何实例上安装软件包。
+ **更新操作系统** — OpsWorks Stacks 提供了一种在堆栈实例上安装操作系统安全补丁和更新的简单方法。
+ **部署应用程序** — OpsWorks Stacks 将应用程序一致地部署到堆栈的所有应用程序服务器实例。
+ **监控** — OpsWorks Stacks 创建自定义[CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatch.html)指标来监控您的所有堆栈实例。

有关定价信息，请参阅 [AWS OpsWorks 定价](https://aws.amazon.com/opsworks/stacks/pricing/)。

以下是使用注册实例的基本步骤。

1. 向堆栈注册实例。

   该实例现在是堆栈的一部分，由 OpsWorks Stacks 管理。

1. 也可将实例分配给某个层。

   此步骤可让您充分利用 OpsWorks 堆栈管理功能。您可以将注册的本地实例分配给任何层；注册的 Amazon EC2 实例只能分配给自定义层。

1. 使用 OpsWorks 堆栈管理实例。

1. 当您不再需要堆栈中的实例时，请取消注册该实例，这将从 OpsWorks 堆栈中移除该实例。

以下部分详细介绍了此过程。

**Topics**
+ [使用 OpsWorks 堆栈堆栈注册实例](registered-instances-register.md)
+ [管理注册的实例](registered-instances-manage.md)
+ [将注册的实例分配给某个层](registered-instances-assign.md)
+ [取消分配注册的实例](registered-instances-unassign.md)
+ [取消注册已注册的实例](registered-instances-deregister.md)
+ [已注册实例的生命周期](registered-instances-lifecycle.md)

# 使用 OpsWorks 堆栈堆栈注册实例
<a name="registered-instances-register"></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 支持 团队联系。

**注意**  
仅 Linux 堆栈支持此功能。

要注册 OpsWorks 堆栈之外的实例，请运行 AWS CLI **aws opsworks register**命令。您可以从要注册的实例或其他计算机上运行此命令。您可以将`AWSOpsWorksRegisterCLI_EC2`或`AWSOpsWorksRegisterCLI_OnPremises`策略应用于用户或组，以分别授予注册 EC2 或本地实例所需的权限。 AWS CLI 这些策略需要版本为 1.16.180 AWS CLI 或更高版本。

**注意**  
要防止用户或角色注册实例，请更新实例配置文件以拒绝访问 **register** 命令。

注册过程会在您要使用堆栈管理的实例上安装代理，然后使用 OpsWorks 您指定的 OpsWorks 堆栈注册该实例。注册实例后，实例是堆栈的一部分，由 OpsWorks Stacks 管理。有关更多信息，请参阅 [管理注册的实例](registered-instances-manage.md)。

**注意**  
尽管 [AWS 工具 PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-welcome.html)包含调用 `register` API 操作的 [https://docs.aws.amazon.com/powershell/latest/reference/items/Register-OPSInstance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-OPSInstance.html)cmdlet，但我们建议您改用 AWS CLI 来运行该`register`命令。

下图显示了注册 Amazon EC2 实例的两种方法。您可以使用同样的方法注册本地实例。

![\[Two diagrams showing EC2 instance registration: from workstation and from instance itself.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/on-prem-provision.png)


**注意**  
您可以使用 [OpsWorks Stacks 控制台](https://console.aws.amazon.com/opsworks/)来管理注册的实例，但必须运行 AWS CLI `register` 命令来注册该实例。此要求的原因是：注册过程必须从实例中运行，而无法通过控制台来完成。

以下部分详细介绍了该过程。

**Topics**
+ [演练：从工作站注册实例](registered-instances-register-walkthrough.md)
+ [注册 Amazon EC2 和本地实例](registered-instances-register-registering.md)

# 演练：从工作站注册实例
<a name="registered-instances-register-walkthrough"></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 支持 团队联系。

**注意**  
仅 Linux 堆栈支持此功能。

注册过程支持多几种方案。本节将向您介绍一个场景的 end-to-end示例：如何使用您的工作站注册 Amazon EC2 实例。其他注册场景使用类似的过程。有关更多信息，请参阅 [注册 Amazon EC2 和本地实例](registered-instances-register-registering.md)。

**注意**  
您通常需要注册现有的 Amazon EC2 实例。不过，您可以只为本演练创建新实例和新堆栈，然后在完成后将其删除。

**Topics**
+ [步骤 1：创建堆栈和实例](#registered-instances-register-walkthrough-prepare)
+ [步骤 2：安装和配置 AWS CLI](#registered-instances-register-walkthrough-cli)
+ [步骤 3：在注册堆栈中 EC2注册实例](#registered-instances-register-walkthrough-register)

## 步骤 1：创建堆栈和实例
<a name="registered-instances-register-walkthrough-prepare"></a>

首先，您需要在该堆栈中注册一个堆栈和一个 Amazon EC2 实例。

**创建堆栈和实例**

1. 使用 [OpsWorks Stacks 控制台](https://console.aws.amazon.com/opsworks/)[创建一个新堆栈](workingstacks-creating.md)（名为 **EC2Register**）。您可以接受其他堆栈设置的默认值。

1. 从 [Amazon EC2 控制台](https://console.aws.amazon.com/ec2/)启动新实例。请注意以下几点。
   + 该实例必须与堆栈位于同一区域和 VPC。

     如果您使用的是 VPC，则为本演练选择一个公有子网。
   + 如果您需要创建 SSH 密钥，则将私有密钥文件保存到工作站，并记录名称和文件位置。

     如果您使用现有密钥，则记录名称和私有密钥文件位置。稍后将需要这些值。
   + 该实例必须基于某个[受支持的 Linux 操作系统](workinginstances-os-linux.md)。例如，如果您的堆栈位于美国西部（俄勒冈州），则可使用 `ami-35501205` 启动该区域内的 Ubuntu 14.04 LTS 实例。

   否则，请接受默认值。

当该实例启动时，您可以继续下一部分。

## 步骤 2：安装和配置 AWS CLI
<a name="registered-instances-register-walkthrough-cli"></a>

使用 AWS CLI **aws opsworks register**命令执行注册。在注册第一个实例之前，您必须运行版本为 1.16.180 AWS CLI 或更高版本。安装详细信息取决于您工作站的操作系统。有关安装的更多信息 AWS CLI，请参阅[安装 AWS 命令行界面](https://docs.aws.amazon.com/cli/latest/userguide/installing.html)。要检查您正在运行的 AWS CLI 版本，请在 shell 会话中输入 `aws --version`。

**注意**  
要防止用户或角色注册实例，请更新实例配置文件以拒绝访问 **register** 命令。

我们强烈建议您不要跳过此步骤，即使您已经在工作站 AWS CLI 上运行了。使用最新版本的 AWS CLI 是安全最佳实践。

您必须为 `register` 提供一组具有相应权限的 AWS 凭证。为了避免直接在实例上安装凭证，推荐的方法是注册使用实例配置文件启动的实例，然后将 `--use-instance-profile` 开关添加到您的 `register` 命令中。如果要从实例配置文件获取凭证，请跳至本主题中的[步骤 3：在注册堆栈中 EC2注册实例](#registered-instances-register-walkthrough-register)。但是，如果未使用实例配置文件启动实例，可以创建 IAM 用户。以下过程创建具有相应权限的新用户，在工作站上安装该用户的凭证，然后将这些凭证传递给 `register`。

**警告**  
IAM 用户具有长期凭证，这会带来安全风险。为帮助减轻这种风险，我们建议仅向这些用户提供执行任务所需的权限，并在不再需要这些用户时将其移除。

**创建用户**

1. 在 [IAM 控制台](https://console.aws.amazon.com/iam/)的导航窗格中选择**用户**，然后选择**添加用户**。

1. 添加名为 **EC2Register** 的用户。

1. 选择**下一步**。

1. 在**设置权限**页面上，选择 **直接附加策略**。

1. 在 “**权限策略**筛选器” 框**OpsWorks**中输入以显示 OpsWorks 策略，选择以下策略之一，然后选择 “**下一步：查看**”。此策略授予用户运行 `register` 时所需的权限。
   + 选择`AWSOpsWorksRegisterCLI_EC2`允许用户注册使用 EC2 实例配置文件的实例。
   + 选择 `AWSOpsWorksRegisterCLI_OnPremises` 以允许注册本地实例的用户权限。

1. 选择**下一步**。

1. 在**审核**页面上，选择**创建用户**。

1. 现在为您的用户创建访问密钥。从导航窗格中，选择**用户**，然后选择要为其创建访问密钥的用户。

1. 选择**安全凭证**选项卡，然后选择**创建访问密钥**。

1.  选择最符合您任务的**访问密钥最佳实践和替代方法**。

1. 选择**下一步**。

1. （可选）输入标识访问密钥的标签。

1. 选择**下一步**。

1. 选择**下载 .csv 文件**，将凭证文件保存到系统中的方便位置，然后选择**完成**。

您需要向 `register` 提供 IAM 用户的凭证。本演练通过在工作站`credentials`的文件中安装 EC2注册凭据来处理任务。有关管理凭证的其他方法的信息 AWS CLI，请参阅[配置和凭据文件](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-config-files)。

**安装用户的凭证**

1. 创建或打开工作站的 `credentials` 文件。文件位于 `~/.aws/credentials` (Linux、Unix 和 OS X) 或 `C:\Users\User_Name\.aws\credentials` (Windows 系统)。

1. 使用以下格式将 Re EC2 gister 用户的配置`credentials`文件添加到文件中。

   ```
   [ec2register]
   aws_access_key_id = access_key_id
   aws_secret_access_key = secret_access_key
   ```

   *secret\$1access\$1key*用之前下载的 EC2注册密钥替换*access\$1key\$1id*和。

## 步骤 3：在注册堆栈中 EC2注册实例
<a name="registered-instances-register-walkthrough-register"></a>

您现在可以注册实例。

**注册实例**

1. 在 OpsWorks 堆栈中，返回 EC2注册堆栈，在导航窗格中选择**实例**，然后选择**注册实例**。

1. 选择**EC2 实例**，选择**下一步：选择实例**，然后从列表中选择您的实例。

1. 选择 “**下一步：安装 AWS CLI**”，然后选择 “**下一步：注册实例**”。 OpsWorks 堆栈会自动使用堆栈 ID 和实例 ID 等可用信息来创建`register`命令模板，该模板显示在 “**注册实例**” 页面上。对于本示例，您将通过 `register` 使用 SSH 密钥登录该实例并明确指定密钥文件，因此应将 **I use SSH keys to connect to my instances (我使用 SSH 密钥连接到我的实例)** 设置为 **Yes (是)**。命令模板类似于以下内容。

   ```
   aws opsworks register --infrastructure-class ec2 --region region endpoint ID
     --stack-id 247be7ea-3551-4177-9524-1ff804f453e3 --ssh-username [username]
     --ssh-private-key [key-file] i-f1245d10
   ```
**注意**  
如果堆 OpsWorks 栈位于与区域终端节点关联的经典区域内，则必须将区域设置为堆栈服务的终端节点区域，而不是堆栈的`us-east-1`区域。 OpsWorks 堆栈根据堆栈 ID 确定堆栈的区域。

1. 命令模板包含多个用户特定的参数值，这些值通过方括号指示且必须用合适的值替换。将命令模板复制到文本编辑器，并按如下方式进行编辑。
**重要**  
在已注册实例的整个生命周期中，都需要注册过程中创建的 IAM 用户。删除用户会导致 OpsWorks Stacks 代理无法与服务通信。为了帮助防止在用户被意外删除时无法正常管理已注册实例，请将 `--use-instance-profile` 参数添加到您的 `register` 命令，以便使用实例的内置实例配置文件。添加该`--use-instance-profile`参数还可以防止在每 90 天轮换 AWS 账户访问密钥时发生错误（这是推荐的最佳做法），因为它可以防止 OpsWorks 代理可用的访问密钥与所需的 IAM 用户之间的访问密钥不匹配。
   + *key file*替换为您在创建实例时保存的 Amazon key pair 私 EC2 钥文件的完全限定路径。

     如果您愿意，可以使用相对路径。
   + *username*替换为实例的用户名。

     在本示例中，对于 Ubuntu 实例，用户名称是 `ubuntu`；对于 Red Hat Enterprise Linux (RHEL) 或 Amazon Linux 实例，用户名称是 `ec2-user`。
   + 添加 `--use-instance-profile`，它使用实例配置文件运行 `register`，以防止在密钥轮换期间出错或者主体 IAM 用户被意外删除。

   您的命令应与以下内容类似。

   ```
   aws opsworks register --use-instance-profile --infrastructure-class ec2 \
     --region us-west-2  --stack-id 247be7ea-3551-4177-9524-1ff804f453e3 --ssh-username ubuntu \
     --ssh-private-key "./keys/mykeys.pem" i-f1245d10
   ```

1. 在您的工作站上打开一个终端窗口，粘贴来自编辑器的 `register` 命令，然后运行该命令。

   注册通常需要大约五分钟时间。完成后，返回 OpsWorks Stacks 控制台并选择**完成**。然后在导航窗格中选择 **Instances (实例)**。您的实例应在 **Unassigned Instances** 下列出。然后，您可以[将该实例分配给某个层](registered-instances-assign.md)或将其留在原位，具体取决于您打算如何管理该实例。

1. 完成后，[停止实例，](workinginstances-starting.md#workinginstances-starting-stop)然后使用 OpsWorks Stacks 控制台或命令[将其删除](workinginstances-starting.md#workinginstances-starting-stop)。这将终止 Amazon EC2 实例，因此您无需支付任何额外费用。

# 注册 Amazon EC2 和本地实例
<a name="registered-instances-register-registering"></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 支持 团队联系。

**注意**  
仅 Linux 堆栈支持此功能。

本节介绍如何使用 OpsWorks 堆栈注册 Amazon EC2 或本地实例。

**Topics**
+ [准备实例](registered-instances-register-registering-prepare.md)
+ [安装和配置 AWS CLI](registered-instances-register-registering-cli.md)
+ [注册实例](registered-instances-register-registering-register.md)
+ [使用 `register` 命令](registered-instances-register-registering-command.md)
+ [示例 register 命令](registered-instances-register-registering-examples.md)
+ [实例注册策略](registered-instances-register-registering-template.md)

# 准备实例
<a name="registered-instances-register-registering-prepare"></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 支持 团队联系。

**注意**  
仅 Linux 堆栈支持此功能。

注册实例之前，必须确保它与 OpsWorks Stacks 兼容。详细信息取决于您注册的是本地实例还是 Amazon EC2 实例。

## 本地实例
<a name="registered-instances-register-prepare-onprem"></a>

本地实例必须满足以下条件：
+ 该实例必须运行某个[受支持的 Linux 操作系统](workinginstances-os-linux.md)。虽然有可能在其他操作系统（例如CentOS 6）上创建或注册实例。 *x*) 由自定义或社区生成的 AMIs，官方不支持这些内容。

  您必须在该实例上安装 `libyaml` 软件包。对于 Ubuntu 实例，软件包名称为 `libyaml-0-2`。对于 CentOS 和 Red Hat Enterprise Linux 实例，软件包名称为 `libyaml`。
+ 该实例必须拥有一个受支持的实例类型 (有时称为实例大小)。受支持的实例类型可能因操作系统而异，并且取决于您的堆栈是否位于 VPC 中。有关支持的实例类型的列表，请查看当您尝试在目标堆栈中创建新实例时， OpsWorks 堆栈控制台中显示的 Si **z** e 下拉列表值。如果某个实例类型灰显，而无法在您的目标堆栈中创建，那么您无法注册该类型的实例。
+ 实例必须具有互联网访问权限才能与 OpsWorks Stacks 服务终端节点通信。`opsworks.us-east-1.amazonaws.com (HTTPS)`该实例还必须支持与 AWS 资源 (如 Amazon S3) 的出站连接。
+ 如果您计划从独立的工作站注册实例，则注册的实例必须支持从该工作站进行 SSH 登录。

  如果您从该实例运行注册命令，则不需要进行 SSH 登录。
+  AWS 访问密钥用于从 OpsWorks 代理向 OpsWorks Stacks 服务进行身份验证。如果您按照建议每 90 天轮换一次访问密钥，请手动更新 OpsWorks 代理以使用新密钥。在本地计算机或实例上，使用新的访问密钥和私有密钥编辑 `/etc/aws/opsworks/instance-agent.yml` 文件。以下命令显示了此文件中的访问密钥和私有密钥。使用旧密钥的代理可能会导致错误。

  ```
  cat /etc/aws/opsworks/instance-agent.yml | egrep "access_key|secret_key"
  :access_key_id: AKIAIOSFODNN7EXAMPLE
  :secret_access_key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
  ```

## 亚马逊 EC2实例
<a name="registered-instances-register-prepare-ec2"></a>

Amazon EC2 实例必须满足以下标准：
+ AMI 必须基于某个受支持的 Linux 操作系统。有关当前列表，请参阅 [OpsWorks 堆栈操作系统](workinginstances-os.md)。

  有关更多信息，请参阅 [使用自定义 AMIs](workinginstances-custom-ami.md)。

  如果该实例基于从受支持的标准 AMI 派生的自定义 AMI，或者该实例包含非常少的设置，则您必须在该实例上安装 `libyaml` 软件包。对于 Ubuntu 实例，软件包名称为 `libyaml-0-2`。对于 Amazon Linux 和 Red Hat Enterprise Linux 实例，软件包名称为 `libyaml`。
+ 该实例必须拥有一个受支持的实例类型 (有时称为实例大小)。受支持的实例类型可能因操作系统而异，并且取决于您的堆栈是否位于 VPC 中。有关支持的实例类型的列表，请查看当您尝试在目标堆栈中创建新实例时， OpsWorks 堆栈控制台中显示的 Si **z** e 下拉列表值。如果某实例类型灰显，而无法在您的目标堆栈中创建，那么您也无法注册该类型的实例。
+ 该实例必须处于 `running` 状态。
+ 该实例不得是 [Auto Scaling 组](https://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/WhatIsAutoScaling.html)的一部分。

  有关更多信息，请参阅[从 Auto Scaling 组中分离 EC2 实例](https://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/detach-instance-asg.html)。
+ 该实例可以是 [VPC](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Introduction.html) 的一部分，但它必须与堆栈位于同一 VPC 中，并且必须将 VPC 配置为可以正常使用 OpsWorks 堆栈。
+ 不支持[ Spot 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/how-spot-instances-work.html)，因为它们不支持[自动修复](https://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-autohealing.html)。

当您注册 Amazon EC2 实例时， OpsWorks Stacks 不会修改该实例[的安全组](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)或规则。请确保实例的安全组规则符合以下 OpsWorks Stacks 要求。

**入口规则**  
入口规则应允许以下操作。  
+ SSH 登录。
+ 来自相应层的流量。

  例如，数据库服务器通常允许来自堆栈的应用程序服务器层的入站流量。
+ 流向相应端口的流量。

  例如，应用程序服务器实例通常允许所有流向端口 80 (HTTP) 和 443 (HTTPS) 的入站流量。

**出口规则**  
出口规则应允许以下操作。  
+ 从实例上运行的应用程序流向 OpsWorks Stacks 服务的流量。
+ 来自使用 AWS API 的应用程序的流量，用于访问 AWS 资源 (如 Amazon S3)。
一种常见方法是不指定任何出口规则，这样就不会对出站流量施加限制。

# 安装和配置 AWS CLI
<a name="registered-instances-register-registering-cli"></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 支持 团队联系。

在注册第一个实例之前，您必须在运行的计算机上运行版本 1.16.180 AWS CLI 或更高版本。`register`安装详细信息取决于您工作站的操作系统。有关安装的更多信息 AWS CLI，请参阅[安装 AWS 命令行界面](https://docs.aws.amazon.com/cli/latest/userguide/installing.html)和[配置 AWS 命令行接口](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)。要检查您正在运行的 AWS CLI 版本，请在 shell 会话中输入 `aws --version`。

**注意**  
尽管 [AWS 工具 PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-welcome.html)包含调用 `register` API 操作的 [https://docs.aws.amazon.com/powershell/latest/reference/items/Register-OPSInstance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-OPSInstance.html)cmdlet，但我们建议您改用 AWS CLI 来运行该`register`命令。

您必须具有相应权限，才可运行 `register`。您可以通过使用 IAM 角色，或者通过在要注册的工作站或实例上安装具有适当权限的用户凭证来获取权限，但这种方法并不理想。然后，您可以使用这些凭证来运行 `register`，如下文所述。通过将 IAM policy 附加到用户或角色来指定权限。对于`register`，您可以使用`AWSOpsWorksRegisterCLI_EC2`或`AWSOpsWorksRegisterCLI_OnPremises`策略，分别授予注册 Amazon 实例 EC2 或本地实例的权限。

**注意**  
如果您在 Amazon EC2 实例`register`上运行，则理想情况下应使用 IAM 角色来提供证书。有关如何将 IAM 角色附加到现有实例的更多信息，请参阅 A *mazon EC2 用户指南*中的 “将 [IAM 角色附加到实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role)” 或 “[替换 IAM 角色](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#replace-iam-role)”。

有关 `AWSOpsWorksRegisterCLI_EC2` 和 `AWSOpsWorksRegisterCLI_OnPremises` 策略的示例代码段，请参阅 [实例注册策略](registered-instances-register-registering-template.md)。有关创建和管理 AWS 凭证的更多信息，请参阅 [AWS 安全凭证](https://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html)。

**Topics**
+ [使用 IAM 角色](#registered-instances-register-registering-cli-role)
+ [使用安装的凭证](#registered-instances-register-registering-cli-creds)

## 使用 IAM 角色
<a name="registered-instances-register-registering-cli-role"></a>

如果您从打算注册的 Amazon EC2 实例运行命令，则向其提供证书的首选策略`register`是使用附加了`AWSOpsWorksRegisterCLI_EC2`策略或等效权限的 IAM 角色。此方法可以避免在实例上安装您的凭证。一种方法是在 EC2 控制台中使用**附加/替换 IAM 角色**命令，如下图所示。

![\[AWS EC2 console showing Instance Settings menu with Attach/Replace IAM Role option highlighted.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/instance_register_attachrole.png)


有关如何将 IAM 角色附加到现有实例的更多信息，请参阅 A *mazon EC2 用户指南*中的 “将 [IAM 角色附加到实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role)” 或 “[替换 IAM 角色](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#replace-iam-role)”。对于使用实例配置文件启动的实例（推荐），请向您的 `register` 命令添加 `--use-instance-profile` 开关以提供凭证；不要使用 `--profile` 参数。

如果实例正在运行并且具有角色，您可以通过将 `AWSOpsWorksRegisterCLI_EC2` 策略附加到该角色来授予所需权限。该角色将提供实例的一组默认凭证。只要您尚未在实例上安装任何凭证，`register` 便会自动承担该角色并使用其权限运行。

**重要**  
我们建议您不要在实例上安装凭证。除了造成安全风险外，实例的角色还位于默认提供者链的末端， AWS CLI 用于查找默认证书。安装的凭证可能优先于该角色，因此，`register` 可能不具有所需权限。有关更多信息，请参阅 [AWS CLI入门](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#config-settings-and-precedence)。

如果运行中的实例没有角色，则您必须在实例上安装具有所需权限的凭证，如[使用安装的凭证](#registered-instances-register-registering-cli-creds)中所述。建议使用通过实例配置文件启动的实例，这样更容易、更不容易出错。

## 使用安装的凭证
<a name="registered-instances-register-registering-cli-creds"></a>

有几种方法可以在系统上安装用户凭据并将其提供给 AWS CLI 命令。下面描述了一种不再推荐的方法，但如果您要注册在没有 EC2实例配置文件的情况下启动的实例，则可以使用这种方法。您还可以使用现有 用户的凭证，只要附加的策略授予所需权限即可。有关更多信息，包括关于安装凭证的其他方法的说明，请参阅[配置和凭证文件](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-config-files)。

**使用安装的凭证**

1. [创建 IAM 用户](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-config-files)，然后将访问密钥 ID 和秘密访问密钥保存在安全位置。
**警告**  
IAM 用户具有长期凭证，这会带来安全风险。为帮助减轻这种风险，我们建议仅向这些用户提供执行任务所需的权限，并在不再需要这些用户时将其移除。

1. [将 AWSOpsWorksRegisterCLI\$1OnPremises 策略附加](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html)到用户。如果愿意，您可以附加一个授予更广泛权限的策略，只要它包含 `AWSOpsWorksRegisterCLI_OnPremises` 权限即可。

1. 在系统的 `credentials` 文件中创建该用户的配置文件。文件位于 `~/.aws/credentials` (Linux、Unix 和 OS X) 或 `C:\Users\User_Name\.aws\credentials` (Windows 系统)。该文件包含一个或多个以下格式的配置文件，每个配置文件均包含用户的访问密钥 ID 和秘密访问密钥。

   ```
   [profile_name]
   aws_access_key_id = access_key_id
   aws_secret_access_key = secret_access_key
   ```

   用您之前保存的 IAM 证书替换*access\$1key\$1id*和*secret\$1access\$1key*值。您可以指定任何喜欢的名称作为配置文件名称，但有两个限制：该名称必须唯一，并且默认配置文件必须命名为 `default`。您也可以使用现有配置文件，只要它具有所需权限即可。

1. 使用 `register` 命令的 `--profile` 参数指定配置文件名称。`register` 命令将使用授予关联凭证的权限运行。

   您也可以省略 `--profile`。在这种情况下，`register` 将使用默认凭证运行。请注意，这些不一定是默认配置文件的凭证，因此，您必须确保默认凭证具有所需权限。有关如何 AWS CLI 确定默认证书的更多信息，请参阅[配置 AWS 命令行界面](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)。

# 注册实例
<a name="registered-instances-register-registering-register"></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 支持 团队联系。

**注意**  
仅 Linux 堆栈支持此功能。

您可以通过从您的工作站或实例运行 AWS CLI `register` 命令来注册实例。处理该操作的最简单方法是使用 [OpsWorks Stacks 控制台](https://console.aws.amazon.com/opsworks/)的注册向导，这可简化构建命令字符串的流程。熟悉注册过程后，如果愿意，您可以跳过该向导并运行 `register` 命令。

下文介绍了如何使用注册向导向现有堆栈注册实例。

**注意**  
要使用新堆栈注册实例，您可以通过在 OpsWorks 堆栈控制面板上选择**注册实例**来完成此操作。这将启动一个向导 (与用于现有堆栈的向导相同，只不过多了一个用于配置新堆栈的页面)。

**使用注册向导来注册实例**

1. 在 [OpsWorks Stacks 控制台](https://console.aws.amazon.com/opsworks/)中，创建一个堆栈或者打开现有堆栈。

1. 在导航窗格中选择 **Instances**，然后选择 **register an instance**。

1. 在**选择实例类型**页面上，指定您是要注册 Amazon EC2 还是本地实例：
   + 如果您要注册 Amazon EC2 实例，请选择**下一步：选择实例**。
   + 如果要注册本地实例，则选择**下一步：安装 AWS CLI**，然后转到步骤 5。

1. 如果您正在注册 Amazon EC2 实例，请打开**选择实例**页面选择要注册的实例。 OpsWorks Stacks 收集生成命令所需的信息。在您完成后，选择**下一步：安装 AWS CLI**。

1. 您计划运行的实例`register`必须运行版本为 1.16.180 AWS CLI 或更高版本。注册向导页面提供了指向安装和配置说明的链接，用于安装或更新 AWS CLI。验证 AWS CLI 安装后，请指定是在从要注册的实例运行命令，还是从独立的工作站运行命令，然后选择 **Next: Register Instances (下一步: 注册实例)**。

1. **Register Instances** 页面将显示 `register` 命令字符串的模板，其中包含您选择的选项。例如，如果您要从单独的工作站注册 Amazon EC2 实例，则默认模板类似于以下内容。

   ```
   aws opsworks register --infrastructure-class ec2 --region us-west-2
     --stack-id 247be7ea-3551-4177-9524-1ff804f453e3 --ssh-username [username] i-f1245d10
   ```
**重要**  
在已注册实例的整个生命周期中，都需要注册过程中创建的 IAM 用户。删除用户会导致 OpsWorks Stacks 代理无法与服务通信。为了帮助防止在用户被意外删除时无法正常管理已注册实例，请将 `--use-instance-profile` 参数添加到您的 `register` 命令，以便使用实例的内置实例配置文件。添加该`--use-instance-profile`参数还可以防止在每 90 天轮换 AWS 账户访问密钥时发生错误（这是推荐的最佳做法），因为它可以防止 OpsWorks 代理可用的访问密钥与所需的 IAM 用户之间的访问密钥不匹配。

   如果您将 “**我使用 SSH 密钥**” 设置为 “**是**”， OpsWorks Stacks 会将`--ssh-private-key`参数添加到字符串中，您可以使用该参数来指定 SSH 私钥文件。
**注意**  
如果您想让 `register` 使用密码登录，则将 **I use SSH keys** 设置为 **No**。当您运行 `register` 时，会提示您输入密码。

   将此字符串复制到文本编辑器，并根据需要进行编辑。请注意以下几点。
   + 方括号中的文本表示您必须提供的信息，例如 SSH 密钥文件的位置。
   + 该模板假定您正在使用默认 AWS 凭证运行 `register`。如果不是，请向命令字符串添加一个 `--profile` 参数，并指定您要使用的凭证配置文件名称。

   对于其他场景，您可能需要进一步更改命令。有关可用 `register` 参数的说明以及构建命令字符串的其他方法，请参阅[使用 `register` 命令](registered-instances-register-registering-command.md)。您也可以通过从命令行运行 `aws opsworks help register` 来显示命令的说明文档。如需查看一些示例命令字符串，请参阅[示例 register 命令](registered-instances-register-registering-examples.md)。

1. 编辑完命令字符串后，请在您的工作站上打开一个终端窗口，或使用 SSH 登录到实例并运行该命令。整个操作通常需要大约五分钟时间，在此期间，该实例处于 **Registering** 状态。

1. 操作完成后，请选择 **Done**。该实例现在处于 **Registered** 状态，并在堆栈的 **Instances** 页面上作为未分配实例列出。

`register` 命令执行以下操作。

1. 如果 `register` 在工作站上运行，则该命令首先使用 SSH 登录到要注册的实例。

   此过程的剩余部分将在该实例上发生，并且无论您在哪里运行命令，步骤都相同。

1. 从 Amazon S3 下载 OpsWorks Stacks 代理软件包。

1. 解包并安装代理及其依赖项，例如[适用于 Ruby 的 AWS SDK](https://aws.amazon.com/documentation/sdk-for-ruby/)。

1. 创建以下内容：
   + 一个 IAM 用户，它使用 OpsWorks Stacks 服务引导代理以提供安全通信。

     该用户的权限仅允许 `opsworks:RegisterInstance` 操作，并且这些权限在 15 分钟后过期。
   + 堆栈的 IAM 组，其中包含已注册实例的用户。

1. 创建 RSA 密钥对并将公钥发送到 OpsWorks Stacks。

   此密钥对用于加密代理与 OpsWorks Stacks 之间的通信。

1. 使用 OpsWorks 堆栈注册实例。该堆栈随后运行一组初始设置配方来配置实例，其中包括以下内容。
   + 覆盖实例的主机文件。

     通过注册实例，您已将用户管理移交给 OpsWorks Stacks，Stacks 必须拥有自己的主机文件才能控制 SSH 登录权限。
   + 对于亚马逊 EC2 实例，初始设置还包括向堆栈注册任何附加的 Amazon EBS 卷或弹性 IP 地址。

     您必须确保 Amazon EBS 卷未挂载到预留的挂载点，包括 `/var/www` 以及实例各层预留的任何挂载点。有关管理堆栈资源的更多信息，请参阅[资源管理](resources.md)。有关层挂载点的更多信息，请参阅[OpsWorks 堆栈图层参考](layers.md)。

   有关初始设置配置更改的完整介绍，请参阅[初始设置配置更改](registered-instances-lifecycle.md#registered-instances-lifecycle-setup-config)。
**注意**  
初始设置不会更新已注册实例的操作系统；您必须自行处理该任务。有关更多信息，请参阅 [管理安全更新](workingsecurity-updates.md)。

# 使用 `register` 命令
<a name="registered-instances-register-registering-command"></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 支持 团队联系。

**注意**  
仅 Linux 堆栈支持此功能。

要注册实例，请确保至少运行 AWS CLI的 1.16.180 版。以下示例显示了 `register` 命令的一般语法。

```
aws opsworks register \
  [--profile profile_name] \
  [--region region_name] \
  --infrastructure-class instance_type \
  --stack-id stack ID \
  [--local] | [--ssh-private-key key_file --ssh-username username] | [--override-ssh command_string] \
  [--override-hostname hostname] \
  [--debug] \
  [--override-public-ip public IP] \
  [--override-private-ip private IP] \
..[--use-instance-profile] \
  [ [IP address] | [hostname] | [instance ID]
```

以下参数是所有 AWS CLI 命令的通用参数。

**`--profile`**  
(可选) 凭证的配置文件名称。如果省略此参数，命令将使用默认凭证运行。有关如何 AWS CLI 确定默认证书的更多信息，请参阅[配置 AWS 命令行界面](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)。

**`--region`**  
 （可选） OpsWorks Stacks 服务终端节点的区域。不要设置`--region`为堆栈的区域。 OpsWorks 堆栈会根据堆栈 ID 自动确定堆栈的区域。  
如果已设置默认区域，则可省略此参数。有关如何指定默认区域的更多信息，请参阅[配置 AWS 命令行界面](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)。

对于 Amazon EC2 和本地实例，请使用以下参数。

**`--infrastructure-class`**  
（必需）必须将此参数设置为`ec2`或`on-premises`，以指示您注册的是亚马逊实例 EC2 还是本地实例。

**`--stack-id`**  
(必需) 注册实例时将使用的堆栈的 ID。  
要查找堆栈 ID，请在 **Stack (堆栈)** 页面上选择 **Settings (设置)**。堆栈 ID 被标记为 **OpsWorks ID**，是一个看起来像`ad21bce6-7623-47f1-bf9d-af2affad8907`的 GUID。

**SSH 登录参数**  
使用以下参数指定 `register` 应如何登录到实例。    
**`--local`**  
(可选) 使用此参数注册您在其中运行该命令的实例。  
在这种情况下，`register` 不需要登录到实例。  
**`--ssh-private-key` 和 `--ssh-username`**  
 (可选) 如果您要从独立的工作站注册实例，并希望明确指定用户名称或私有密钥文件，则使用这些参数。  
+ `--ssh-username`：使用此参数指定 SSH 用户名称。

  如果省略 `--ssh-username`，`ssh` 将使用默认用户名称。
+ `--ssh-private-key`：使用此参数明确指定私有密钥文件。

  如果省略 `--ssh-private-key`，`ssh` 将尝试使用无需密码的身份验证技术进行登录，包括使用默认私有密钥。如果这些技术均不受支持，`ssh` 将查询您的密码。有关 `ssh` 如何处理身份验证的更多信息，请参阅 [Secure Shell (SSH) 身份验证协议](https://www.ietf.org/rfc/rfc4252.txt)。  
**`--override-ssh`**  
 (可选) 如果您要从独立的工作站注册实例，并希望指定自定义 [http://linux.about.com/od/commands/l/blcmdl1_ssh.htm](http://linux.about.com/od/commands/l/blcmdl1_ssh.htm) 命令字符串，则使用此参数。`register` 命令使用此命令字符串登录到注册的实例。
有关 `ssh` 的更多信息，请参阅 [SSH](http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/slogin.1)。

**`--override-hostname`**  
 （可选）为实例指定主机名，该名称仅由 OpsWorks Stacks 使用。默认值为实例的主机名。

**`--debug`**  
(可选) 如果注册过程失败，则提供调试信息。有关问题排查信息，请参阅[对实例注册进行故障排除](common-issues.md#common-issues-instance-registration)。

**`--use-instance-profile`**  
（可选，但强烈建议使用 Amazon EC2 实例）让`register`命令使用附加的实例配置文件，而不是创建 IAM 用户。如果您在 IAM 用户已被意外删除时尝试管理已注册实例，则会出现错误，而添加此参数可帮助防止此类错误。  
在已注册实例的整个生命周期中，都需要注册过程中创建的 IAM 用户。删除用户会导致 OpsWorks Stacks 代理无法与服务通信。为了帮助防止在用户被意外删除时无法正常管理已注册实例，请将 `--use-instance-profile` 参数添加到您的 `register` 命令，以便使用实例的内置实例配置文件。添加该`--use-instance-profile`参数还可以防止在每 90 天轮换 AWS 账户访问密钥时发生错误（这是推荐的最佳做法），因为它可以防止 OpsWorks 代理可用的访问密钥与所需用户之间的访问密钥不匹配。

**Target**  
(条件性) 如果您从工作站运行此命令，则命令字符串中的最终值按以下任一方式指定注册目标。  
+ 实例的公有 IP 地址。
+ 实例的主机名。
+ 对于 Amazon EC2 实例，为实例 ID。

  OpsWorks Stacks 使用实例 ID 来获取实例配置，包括实例的公有 IP 地址。默认情况下， OpsWorks Stacks 使用此地址来构造用于登录实例的`ssh`命令字符串。如果您需要连接到私有 IP 地址，则必须使用 `--override-ssh` 提供自定义命令字符串。有关示例，请参阅[从工作站注册本地实例](registered-instances-register-registering-examples.md#registered-instances-register-registering-examples-workstation-onprem)。
如果您指定主机名，则 `ssh` 依赖 DNS 服务器将该名称解析为特定实例。如果您不确定主机名是否唯一，则使用 `ssh` 验证该主机名是否解析为正确的实例。
如果您从要注册的实例运行此命令，则省略实例标识符，改为使用 `--local` 参数。

以下参数仅适用于本地实例。

**`--override-public-ip`**  
（可选） OpsWorks Stacks 将指定地址显示为实例的公有 IP 地址。它不会更改实例的公有 IP 地址。但是，如果用户使用控制台连接到实例，例如通过在 “实**例**” 页面上选择地址， OpsWorks Stacks 将使用指定的地址。 OpsWorks 堆栈会自动确定参数的默认值。

**`--override-private-ip`**  
（可选） OpsWorks Stacks 将指定地址显示为实例的私有 IP 地址。它不会更改实例的私有 IP 地址。 OpsWorks 堆栈会自动确定参数的默认值。

# 示例 register 命令
<a name="registered-instances-register-registering-examples"></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 支持 团队联系。

**注意**  
仅 Linux 堆栈支持此功能。

本部分包含一些 `register` 命令字符串的示例。

**从工作站注册 Amazon EC2 实例**  <a name="registered-instances-register-registering-examples-workstation-ec2"></a>
以下示例从工作站注册一个 Amazon EC2 实例。命令字符串使用默认凭证，并通过实例的 Amazon 实例 ID 来标识 EC2 实例。您可以通过将 `ec2` 更改为 `on-premises` 来使用本地实例的示例。  

```
aws opsworks register \
  --region us-west-2 \
  --use-instance-profile \
  --infrastructure-class ec2 \
  --stack-id ad21bce6-7623-47f1-bf9d-af2affad8907 \
  --ssh-user-name my-sshusername \
  --ssh-private-key "./keys/mykeys.pem" \
  i-2422b9c5
```

**从工作站注册本地实例**  <a name="registered-instances-register-registering-examples-workstation-onprem"></a>
以下示例从独立的工作站注册本地实例。该命令字符串使用默认凭证，并使用指定的 `ssh` 命令字符串登录到实例。如果您的实例需要密码，`register` 会提示您。您可以将 Amazon EC2 实例的示例更改`on-premises`为`ec2`。  

```
aws opsworks register \
  --region us-west-2 \
  --infrastructure-class on-premises \
  --stack-id ad21bce6-7623-47f1-bf9d-af2affad8907 \
  --override-ssh "ssh your-user@192.0.2.0"
```
您可以使用`--override-ssh`来指定任何自定义 SSH 命令字符串。 OpsWorks 然后，Stacks 使用指定的字符串登录实例，而不是构造命令字符串。有关另一个示例，请参阅[使用自定义 SSH 命令字符串注册实例](#registered-instances-register-registering-examples-custom-ssh)。

**使用自定义 SSH 命令字符串注册实例**  <a name="registered-instances-register-registering-examples-custom-ssh"></a>
以下示例从工作站注册本地实例，并使用 `--override-ssh` 参数指定 `register` 用于登录实例的自定义 SSH 命令。此示例使用 `sshpass` 通过用户名和密码登录，但您可以指定任何有效的 `ssh` 命令字符串。  

```
aws opsworks register \
  --region us-west-2 \
  --infrastructure-class on-premises \
  --stack-id 2f92ff9d-04f2-4728-879b-f4283b40783c \
  --override-ssh "sshpass -p 'mypassword' ssh your-user@192.0.2.0"
```

**通过从实例运行 `register` 来注册实例**  <a name="registered-instances-register-registering-examples-local"></a>
以下示例说明如何通过`register`从 EC2 实例本身运行来注册 Amazon 实例。该命令字符串的权限取决于默认凭证。要使用本地实例的示例，请将 `--infrastructure-class` 更改为 `on-premises`。  

```
aws opsworks register \
  --region us-west-2 \
  --infrastructure-class ec2 \
  --stack-id ad21bce6-7623-47f1-bf9d-af2affad8907 \
  --local
```

**使用私有 IP 地址注册实例**  <a name="registered-instances-register-registering-examples-private-ip"></a>
默认情况下，`register` 使用实例的公有 IP 地址登录到实例。要使用私有 IP 地址注册实例 (例如 VPC 的私有子网中的实例)，则必须使用 `--override-ssh` 指定自定义 `ssh` 命令字符串。  

```
aws opsworks register \
  --region us-west-2 \
  --infrastructure-class ec2 \
  --stack-id 2f92ff9d-04f2-4728-879b-f4283b40783c \
  --override-ssh "ssh -i mykey.pem ec2-user@10.183.201.93" \
  i-2422b9c5
```

# 实例注册策略
<a name="registered-instances-register-registering-template"></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 支持 团队联系。

`AWSOpsWorksRegisterCLI_EC2`和`AWSOpsWorksRegisterCLI_OnPremises`策略分别为注册实例 EC2 和本地实例提供了正确的权限。您可以向 IAM 用户添加`AWSOpsWorksRegisterCLI_EC2`以注册 EC2实例，但`AWSOpsWorksRegisterCLI_OnPremises`要向您的用户添加以注册本地实例。要使用这些策略，您必须运行至少版本 1.16.180 AWS CLI 或更高版本。

## `AWSOpsWorksRegisterCLI_EC2` 策略
<a name="instance-profile-policy"></a>

`AWSOpsWorksRegisterCLI_EC2`添加到您的用户以注册 EC2 实例。如果您计划仅注册 EC2实例，则应使用此配置文件。当您使用此策略时，权限由 EC2实例的实例配置文件提供。

------
#### [ JSON ]

****  

```
{
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "opsworks:AssignInstance",
            "opsworks:CreateLayer",
            "opsworks:DeregisterInstance",
            "opsworks:DescribeInstances",
            "opsworks:DescribeStackProvisioningParameters",
            "opsworks:DescribeStacks",
            "opsworks:UnassignInstance"
          ],
          "Resource": [
            "*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "ec2:DescribeInstances"
          ],
          "Resource": [
            "*"
          ]
        }
      ]
    }
```

------

## （已淘汰）`AWSOpsWorksRegisterCLI_OnPremises` 策略
<a name="register-onprem-policy"></a>

将 `AWSOpsWorksRegisterCLI_OnPremises` 添加到您的用户以注册本地实例。此策略包括 IAM 权限，例如 `AttachUserPolicy`，但这些权限起作用的资源是受限的。

------
#### [ JSON ]

****  

```
    {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "opsworks:AssignInstance",
            "opsworks:CreateLayer",
            "opsworks:DeregisterInstance",
            "opsworks:DescribeInstances",
            "opsworks:DescribeStackProvisioningParameters",
            "opsworks:DescribeStacks",
            "opsworks:UnassignInstance"
          ],
          "Resource": [
            "*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "ec2:DescribeInstances"
          ],
          "Resource": [
            "*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "iam:CreateGroup",
            "iam:AddUserToGroup"
          ],
          "Resource": [
            "arn:aws:iam::*:group/AWS/OpsWorks/OpsWorks-*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "iam:CreateUser",
            "iam:CreateAccessKey"
          ],
          "Resource": [
            "arn:aws:iam::*:user/AWS/OpsWorks/OpsWorks-*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "iam:AttachUserPolicy"
          ],
          "Resource": [
            "arn:aws:iam::*:user/AWS/OpsWorks/OpsWorks-*"
          ],
          "Condition": {
            "ArnEquals": 
              {
                "iam:PolicyARN": "arn:aws:iam::aws:policy/AWSOpsWorksInstanceRegistration"
              }
            }
        }
      ]
    }
```

------

## （已淘汰）`AWSOpsWorksRegisterCLI` 策略
<a name="registercli-policy"></a>

**重要**  
`AWSOpsWorksRegisterCLI` 策略已被淘汰，不能用于注册新实例。它仅适用于已注册的实例的向后兼容性。`AWSOpsWorksRegisterCLI` 策略包含许多 IAM 权限，包括 `CreateUser`、`PutUserPolicy` 和 `AddUserToGroup`。由于这些是管理员级权限，因此您应该仅将 `AWSOpsWorksRegisterCLI` 策略分配给受信任的管理用户。

# 管理注册的实例
<a name="registered-instances-manage"></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 支持 团队联系。

**注意**  
仅 Linux 堆栈支持此功能。

当你注册一个实例时，它就会变成一个 OpsWorks Stacks 实例，你可以用与使用 OpsWorks Stacks 创建的实例大致相同的方式来管理它。主要有两个区别：
+ 注册的实例无需分配给某个层。
+ 您可以取消注册已注册的实例，将其恢复为直接由您控制。

注册实例后，该实例将处于已注册状态。 OpsWorks Stacks 为所有注册的实例提供以下管理功能：
+ He@@ **alth chec** ks — OpsWorks Stacks 监控代理以评估实例是否继续运行。

  如果实例未通过运行状况检查， OpsWorks Stacks 会[自动修复已注册](workinginstances-autohealing.md)的 Amazon 实例，并将已注册的本地 EC2 实例的状态更改为。`connection lost`
+ **[CloudWatch 监 CloudWatch 控](monitoring-cloudwatch.md)**-已为注册实例启用监控。

  您可以监控 CPU 使用率和可用内存等指标，并可在某项指标超过指定阈值时收到通知 (可选)。
+ **用户管理** — OpsWorks Stacks 提供了一种简单的方法来指定哪些用户可以访问实例以及允许他们执行哪些操作。有关更多信息，请参阅 [管理用户权限](opsworks-security-users.md)。
+ **配方执行**：您可以使用[执行配方堆栈命令](workingstacks-commands.md)对实例执行 Chef 配方。
+ **操作系统更新**：您可以使用[更新依赖项堆栈命令](workingstacks-commands.md)更新实例的操作系统。

要充分利用 OpsWorks 堆栈管理功能，您可以将实例分配给一个层。有关更多信息，请参阅 [将注册的实例分配给某个层](registered-instances-assign.md)。

 OpsWorks Stacks 管理 Amazon EC2 和本地实例的方式有所不同。

亚马逊 EC2 实例  
+ 如果您停止已注册的亚马逊 EC2 实例， OpsWorks Stacks 会终止由实例存储支持的实例并停止 Amazon EBS 支持的实例。

  该实例仍然在堆栈中注册并分配给堆栈的层，因此，您可以在需要时重新启动该实例。您必须取消注册已注册的实例以将其从堆栈中删除，要么[明确取消注册](registered-instances-deregister.md)，要么通过[删除实例](workinginstances-delete.md) (这可自动取消注册)。
+ 如果您重启已注册的 Amazon EC2 实例，或者该实例失败并自动修复，则结果与使用 Amazon 停止并重启实例相同。 EC2请注意以下区别：
  + 实例存储支持的实例 — OpsWorks Stacks 使用相同的 AMI 启动一个新实例。

    请注意， OpsWorks Stacks 不知道您在实例注册之前对其执行的任何操作，例如安装软件包。如果您希望 OpsWorks Stacks 在启动时安装软件包或执行其他配置任务，则必须提供执行所需任务的自定义 Chef 配方，并将它们分配给相应层的安装事件。
  + Amazon EBS 支持的实例 — OpsWorks Stacks 使用相同的 AMI 启动一个新实例，然后重新连接根卷，从而将实例恢复到以前的配置。
+ 如果您注销注册的亚马逊 EC2 实例，则该实例将恢复为普通的亚马逊 EC2 实例。

本地实例  
+ OpsWorks 堆栈无法停止或启动已注册的本地实例。

  取消分配已注册的本地实例会触发关机事件。但是，该事件只运行已分配层的 Shutdown 配方。它们执行某些任务 (如关闭服务)，但不会停止该实例。
+ OpsWorks 如果已注册的本地实例失败，堆栈将无法对其进行自动修复，但该实例会被标记为连接丢失。
+ 本地实例不能使用 Elastic Load Balancing Amazon EBS 或弹性 IP 地址服务。

# 将注册的实例分配给某个层
<a name="registered-instances-assign"></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 支持 团队联系。

**注意**  
仅 Linux 堆栈支持此功能。

注册实例后，您可以将其分配给一个或多个层。将实例分配给图层而不是将其置于未分配状态的好处是，您可以为该层的[生命周期事件](workingcookbook-events.md)分配自定义配方。 OpsWorks 然后，在图层为该事件准备好配方之后，堆栈会在适当的时间自动运行它们。
+ 您可以将任何注册的实例分配给[自定义层](workinglayers-custom.md)。自定义层有一个不安装任何软件包的最小配方集，因此它们应该不会与实例的现有配置产生任何冲突。
+ 您可以将本地实例分配给 OpsWorks Stacks [内置层](workinglayers.md)。

  每个内置层都包含可自动安装一个或多个软件包的配方。例如，Java App Server 设置配方安装 Apache 和 Tomcat。该层的配方也可能执行其他操作，例如重启服务和部署应用程序。将本地实例分配给内置层之前，应确保该层的配方不会产生任何冲突（例如尝试安装与实例上的当前版本不同的应用程序服务器）。有关更多信息，请参阅[图层](workinglayers.md)和[OpsWorks 堆栈图层参考](layers.md)。

**将注册的实例分配给层**

1. 将您要使用的层添加到堆栈 (如果尚未执行此操作)。

1. 在导航窗格中单击**实例**，然后单击实例的**操作**列中的**分配**。

1. 选择相应的层，然后选择 **Save (保存)**。

当你为图层分配实例时， OpsWorks Stacks 会执行以下操作。
+ 运行该层的 Setup 配方。
+ 将任何附加的弹性 IP 地址或 Amazon EBS 卷添加到堆栈的资源中。

  然后，您可以使用 OpsWorks Stacks 来管理这些资源。有关更多信息，请参阅 [资源管理](resources.md)。

完成后，实例将处于联机状态并完全合并到堆栈中。 OpsWorks 然后，每次发生生命周期事件时，堆栈都会运行图层分配的配方。

# 取消分配注册的实例
<a name="registered-instances-unassign"></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 支持 团队联系。

**注意**  
仅 Linux 堆栈支持此功能。

您可以使用 OpsWorks 控制台、 AWS CLI或 SDK 操作将注册实例从其层中取消分配。

取消分配实例时， OpsWorks Stacks 会在该实例上运行该层的关闭配方。这些配方执行某些任务 (如关闭服务)，但不会停止该实例。如果该实例被分配给多个层，则取消分配适用于每个层；您无法从层的子集取消分配实例。但是，该实例仍然在堆栈中注册，如果您愿意，可以将其分配给另一层。

**使用控制台取消分配注册的实例**

1. 在导航窗格中，选择 **Instances (实例)**。

1. 选择要取消分配的实例。

1. 在实例的**详细信息**页面上，选择**取消分配**。  
![\[在实例的详细信息页面上取消分配注册的实例\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/unassign-instance.png)

**要取消分配已注册的实例，请使用 AWS CLI**

运行 [https://docs.aws.amazon.com/cli/latest/reference/opsworks/unassign-instance.html](https://docs.aws.amazon.com/cli/latest/reference/opsworks/unassign-instance.html) 命令从正在使用该实例的所有层中取消分配注册的实例。

```
aws opsworks unassign-instance --region region --instance-id instance-id
```

# 取消注册已注册的实例
<a name="registered-instances-deregister"></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 支持 团队联系。

您可以使用 OpsWorks 控制台、 AWS CLI或 SDK 操作注销实例。

**

**使用控制台取消注册实例**

1. 在导航窗格中，选择 **Instances (实例)**。

1. 选择要取消注册的实例。

1. 在实例的**详细信息**页面上，选择**取消注册**。  
![\[在实例的详细信息页面上取消注册实例\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/deregister-instance.png)

**要取消注册实例，请使用 AWS CLI**

运行 [https://docs.aws.amazon.com/cli/latest/reference/opsworks/deregister-instance.html](https://docs.aws.amazon.com/cli/latest/reference/opsworks/deregister-instance.html) 命令将实例从其堆栈中取消注册。

```
aws opsworks deregister-instance --region region --instance-id instance-id
```

当您注销实例时， OpsWorks Stacks 会执行以下操作：
+ 从堆栈中删除该实例。
+ 从任何已分配层中取消分配实例。
+ 关闭并卸载代理。
+ 取消注册任何连接的资源 (弹性 IP 地址和 Amazon EBS 卷)。

  此过程包括注册前附加到实例的资源，以及您在实例作为 OpsWorks 堆栈一部分时使用堆栈附加到实例的资源。取消注册后，这些资源不再是堆栈资源的一部分，但它们仍然连接至该实例。
+ 对于本地实例，停止计费。
+ 移除已 OpsWorks 添加到实例的所有标签。

该实例仍处于运行状态，但它由您直接控制，不再由 OpsWorks Stacks 管理。

**注意**  
只有 Linux 堆栈完全支持注册和取消注册计算机或实例。对于 Windows 堆栈，允许取消注册实例，但不会从实例中卸载 OpsWorks 代理。取消注册不会删除所有已更改的文件，并且不会完全恢复到某些文件的备份副本。此列表适用于 Chef 11.10 和 Chef 12 两个堆栈；这里提到了两个版本之间的差异。  
`/etc/hosts` 备份到 `/var/lib/aws/opsworks/local-mode-cache/backup/etc/`，但不还原。
`aws` 和 `opsworks` 的条目仍以密码、组和影子文件等形式存在。
`/etc/sudoers`包含对 OpsWorks 堆栈目录的引用。
以下文件可以安全保留；但长期来看，应考虑删除 `/var/lib/aws/opsworks`。  
`/var/log/aws/opsworks` 保留在 Chef 11.10 堆栈中的实例上。
`/var/lib/aws/opsworks` 保留在 Chef 11.10 和 Chef 12 堆栈上。
`/var/chef` 保留在 Chef 12 堆栈中的实例上。
其他保留的文件：  
`/etc/logrotate.d/opsworks-agent`
`/etc/cron.d/opsworks-agent-updater`
`/etc/ld.so.conf.d/opsworks-user-space.conf`
`/etc/motd.opsworks-static`
`/etc/aws/opsworks`
`/etc/sudoers.d/opsworks`
`/etc/sudoers.d/opsworks-agent`

# 已注册实例的生命周期
<a name="registered-instances-lifecycle"></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 支持 团队联系。

**注意**  
仅 Linux 堆栈支持此功能。

已注册实例的生命周期从代理安装并开始运行之后开始。此时，它会指示 OpsWorks Stacks 向堆栈注册实例。以下状态示意图概述了密钥生命周期元素。

![\[State diagram showing lifecycle of registered instances with various states and transitions.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/on-prem-state.png)


每个状态对应于一个实例状态。边缘代表以下 OpsWorks Stacks 命令之一。以下各节讨论了相关详细信息。
+ **设置**：此命令对应于设置[生命周期事件](workingcookbook-events.md)并运行实例的配置配方。
+ **配置**：此命令对应于配置生命周期事件。

  OpsWorks 当实例进入或离开在线状态时，堆栈会在堆栈中的每个实例上触发此事件。这些实例运行其 Configure 配方，这会进行任何所需的更改以适应新实例。
+ **关机**：此命令对应于关机生命周期事件，可运行该实例的关机配方。

  这些配方执行某些任务 (如关闭服务)，但不会停止该实例。
+ **取消注册**：此命令会取消注册实例，且不对应于生命周期事件。

**注意**  
为简便起见，该示意图不显示 Deregistering 和 Deleted 状态。您可以从示意图中的任何状态取消注册某实例，这会向该实例发送 Deregister 命令并将其移至 Deregistering 状态。  
如果您注销在线实例， OpsWorks Stacks 会向堆栈中的其余实例发送 Configure 命令，通知它们该实例即将离线。
确认 Deregister 命令后，该实例仍在运行，但它处于 Deleted 状态且不再是该堆栈的一部分。如果您想再次将该实例合并到堆栈中，则必须重新注册。

**Topics**
+ [注册](#registered-instances-lifecycle-registering)
+ [Running Setup](#registered-instances-lifecycle-running-setup)
+ [已注册](#registered-instances-lifecycle-registered)
+ [分配](#registered-instances-lifecycle-assigning)
+ [在线](#registered-instances-lifecycle-online)
+ [设置失败](#registered-instances-lifecycle-setup-failed)
+ [取消分配](#registered-instances-lifecycle-unassigning)
+ [初始设置配置更改](#registered-instances-lifecycle-setup-config)

## 注册
<a name="registered-instances-lifecycle-registering"></a>

代理发送注册请求后， OpsWorks Stacks 会向实例发送安装命令，使其处于 Registing 状态，从而启动实例生命周期。在实例确认 Setup 命令后，它将移至 [Running Setup](#registered-instances-lifecycle-running-setup) 状态。

## Running Setup
<a name="registered-instances-lifecycle-running-setup"></a>

Running Setup 状态运行该实例的 Setup 配方。Setup 的工作原理取决于前面的状态。

**注意**  
如果您在实例处于 “运行设置” 状态时取消其分配， OpsWorks Stacks 会发送关机命令，该命令会运行实例的关闭配方，但不会停止实例。该实例移至 [取消分配](#registered-instances-lifecycle-unassigning) 状态。

**Topics**
+ [注册](#registered-instances-lifecycle-running-setup-registering)
+ [分配](#registered-instances-lifecycle-running-setup-assigning)
+ [设置失败](#registered-instances-lifecycle-running-setup-failed)

### 注册
<a name="registered-instances-lifecycle-running-setup-registering"></a>

在注册过程中，安装程序会创建一个 OpsWorks Stacks 实例来表示堆栈中的注册实例，并在该实例上运行一组核心安装配方。

初始设置执行的一个关键更改是覆盖该实例的主机文件。通过注册实例，您将用户管理移交给 OpsWorks Stacks，后者必须拥有自己的主机文件以控制 SSH 登录权限。初始设置还会创建或修改多个文件，并且在 Ubuntu 系统中修改包源并安装一组软件包。有关更多信息，请参阅 [初始设置配置更改](#registered-instances-lifecycle-setup-config)。

在注册期间，该进程将调用 IAM `AttachUserPolicy`，它是作为先决条件创建的附加到 IAM 用户的权限的一部分。如果 `AttachUserPolicy` 不存在（很可能是因为您运行的是旧版本的 AWS CLI），则该过程将回退到调用 `PutUserPolicy`。

**注意**  
为了保持一致性， OpsWorks Stacks 会运行所有核心安装配方。然而，某些配方仅在实例已分配给至少一个层后才执行部分或全部任务，因此，它们不一定会影响初始设置。
+ 如果设置成功，该实例将移至 [已注册](#registered-instances-lifecycle-registered) 状态。
+ 如果设置失败，该实例将移至 [设置失败](#registered-instances-lifecycle-setup-failed) 状态。

### 分配
<a name="registered-instances-lifecycle-running-setup-assigning"></a>

该实例至少有一个已分配的层。 OpsWorks Stacks 运行每个图层的设置配方，包括您[分配给图层设置](workingcookbook-executing.md)事件的任何自定义配方。
+ 如果设置成功，该实例将移至 Online 状态，并且 OpsWorks Stacks 将在堆栈中的每个实例上触发 Configure 生命周期事件以向它们通知新实例。
+ 如果设置失败，该实例将移至 Setup Failed 状态。

**注意**  
此设置过程将再次运行核心配方。但是，Chef 配方是幂等的，因此它们不会重复已执行的任何任务。

### 设置失败
<a name="registered-instances-lifecycle-running-setup-failed"></a>

如果处于 [分配](#registered-instances-lifecycle-assigning) 状态的实例的设置过程失败，您可以通过使用 [Setup 堆栈命令](workingstacks-commands.md)重试，手动重新运行该实例的 Setup 配方。
+ 如果设置成功，分配的实例将移至 [在线](#registered-instances-lifecycle-online) 状态，并且 OpsWorks Stacks 将在堆栈中的每个实例上触发 Configure 生命周期事件以向它们通知新实例。
+ 如果设置尝试失败，该实例将返回到 Setup Failed 状态。

## 已注册
<a name="registered-instances-lifecycle-registered"></a>

处于 “已注册” 状态的实例是堆栈的一部分，由 OpsWorks 堆栈管理，但未分配给层。它们可以无限期地保持该状态。

如果您将实例分配给一个或多个图层， OpsWorks Stacks 会向该实例发送安装命令，然后该实例将进入[分配](#registered-instances-lifecycle-assigning)状态。

## 分配
<a name="registered-instances-lifecycle-assigning"></a>

在实例确认 Setup 命令后，它将移至 [Running Setup](#registered-instances-lifecycle-running-setup) 状态。

如果您在实例处于 “分配” 状态时取消分配该实例， OpsWorks Stacks 会终止安装过程并发送 Shutdown 命令。该实例移至 [取消分配](#registered-instances-lifecycle-unassigning) 状态。

## 在线
<a name="registered-instances-lifecycle-online"></a>

该实例现在是至少一个层的成员，并且被视为常规 OpsWorks Stacks 实例。它可以无限期地保持该状态。

如果您在实例处于联机状态时取消分配该实例， OpsWorks Stacks 会向该实例发送关机命令，并向堆栈的其余实例发送配置命令。该实例移至 [取消分配](#registered-instances-lifecycle-unassigning) 状态。

## 设置失败
<a name="registered-instances-lifecycle-setup-failed"></a>

Setup 命令失败。
+ 您可以通过运行 [Setup 堆栈命令](workingstacks-commands.md)进行重试。

  该实例恢复为 [Running Setup](#registered-instances-lifecycle-running-setup) 状态。
+ 如果您取消分配实例， OpsWorks Stacks 会向该实例发送关闭命令。

  该实例移至 [取消分配](#registered-instances-lifecycle-unassigning) 状态。

## 取消分配
<a name="registered-instances-lifecycle-unassigning"></a>

完成 Shutdown 命令后，该实例不再分配给任何层，并恢复为 [已注册](#registered-instances-lifecycle-registered) 状态。

**注意**  
如果某实例被分配给多个层，则取消分配将适用于每个层；您无法取消分配已分配层的子集。如果您想要一组不同的已分配层，则取消分配该实例，然后重新分配所需层。

## 初始设置配置更改
<a name="registered-instances-lifecycle-setup-config"></a>

初始设置会在所有已注册实例上创建或修改以下文件和目录。

**创建的文件**  

```
/etc/apt/apt.conf.d/99-no-pipelining
/etc/aws/
/etc/init.d/opsworks-agent
/etc/motd
/etc/motd.opsworks-static
/etc/sudoers.d/opsworks
/etc/sudoers.d/opsworks-agent
/etc/sysctl.d/70-opsworks-defaults.conf
/opt/aws/opsworks/
/usr/sbin/opsworks-agent-cli
/var/lib/aws/
/var/log/aws/
/vol/
```

**修改的文件**  

```
/etc/apt/apt.conf.d/99-no-pipelining
/etc/crontab
/etc/default/monit
/etc/group
/etc/gshadow
/etc/monit/monitrc
/etc/passwd
/etc/security/limits.conf (removing limits only for EC2 micro instances)
/etc/shadow
/etc/sudoers
```

初始设置还会在 Amazon EC2 微型实例上创建交换文件。

初始设置对 Ubuntu 系统进行以下更改。

软件包源  
初始设置将对软件包源进行如下更改。  
+ `deb http://archive.ubuntu.com/ubuntu/ ${code_name} main universe`

  收件人：`deb-src http://archive.ubuntu.com/ubuntu/ ${code_name} main universe`
+ `deb http://archive.ubuntu.com/ubuntu/ ${code_name}-updates main universe`

  收件人：`deb-src http://archive.ubuntu.com/ubuntu/ ${code_name}-updates main universe`
+ `deb http://archive.ubuntu.com/ubuntu ${code_name}-security main universe`

  收件人：`deb-src http://archive.ubuntu.com/ubuntu ${code_name}-security main universe`
+ `deb http://archive.ubuntu.com/ubuntu/ ${code_name}-updates multiverse`

  收件人：`deb-src http://archive.ubuntu.com/ubuntu/ ${code_name}-updates multiverse`
+ `deb http://archive.ubuntu.com/ubuntu ${code_name}-security multiverse`

  收件人：`deb-src http://archive.ubuntu.com/ubuntu ${code_name}-security multiverse`
+ `deb http://archive.ubuntu.com/ubuntu/ ${code_name} multiverse`

  收件人：`deb-src http://archive.ubuntu.com/ubuntu/ ${code_name} multiverse`
+ `deb http://security.ubuntu.com/ubuntu ${code_name}-security multiverse`

  收件人：`deb-src http://security.ubuntu.com/ubuntu ${code_name}-security multiverse`

软件包  
初始设置卸载 `landscape` 并安装以下软件包。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/registered-instances-lifecycle.html)