

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

# 演练：从工作站注册实例
<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 实例，因此您无需支付任何额外费用。