演练:从工作站注册实例 - AWS 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

注意

仅 Linux 堆栈支持此功能。

注册过程支持多几种方案。本节将向您介绍一个场景的 end-to-end 示例:如何使用您的工作站注册 Amazon EC2 实例。其他注册场景使用类似的过程。有关更多信息,请参阅 注册 Amazon EC2 和本地实例

注意

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

步骤 1:创建堆栈和实例

首先,您需要一个堆栈,以及一个将在该堆栈中注册的 Amazon EC2 实例。

创建堆栈和实例
  1. 使用 AWS OpsWorks Stacks 控制台创建一个新堆栈(名为 EC2Register)。您可以接受其他堆栈设置的默认值。

  2. Amazon EC2 控制台启动一个新实例。请注意以下几点。

    • 该实例必须与堆栈位于同一区域和 VPC。

      如果您使用的是 VPC,则为本演练选择一个公有子网。

    • 如果您需要创建 SSH 密钥,则将私有密钥文件保存到工作站,并记录名称和文件位置。

      如果您使用现有密钥,则记录名称和私有密钥文件位置。稍后将需要这些值。

    • 该实例必须基于某个受支持的 Linux 操作系统。例如,如果您的堆栈位于美国西部(俄勒冈州),则可使用 ami-35501205 启动该区域内的 Ubuntu 14.04 LTS 实例。

    否则,请接受默认值。

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

步骤 2:安装和配置 AWS CLI

注册可通过 AWS CLI aws opsworks register 命令执行。注册您的第一个实例之前,您必须运行 1.16.180 版的 AWS CLI 或更高版本。安装详细信息取决于您工作站的操作系统。有关安装 AWS CLI 的更多信息,请参阅安装 AWS 命令行界面。要检查您正在运行的 AWS CLI 版本,请在 shell 会话中输入 aws --version

注意

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

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

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

警告

IAM 用户拥有长期证书,这会带来安全风险。为了帮助降低这种风险,我们建议您仅向这些用户提供他们执行任务所需的权限,并在不再需要这些用户时将其删除。

创建用户
  1. IAM 控制台的导航窗格中选择用户,然后选择添加用户

  2. 添加名为 EC2Register 的用户。

  3. 请选择 Next(下一步)

  4. 设置权限页面上,选择 直接附加策略

  5. 权限策略筛选条件框中输入 OpsWorks 以显示 AWS OpsWorks 策略,选择以下策略之一,然后选择下一步:审核。此策略授予用户运行 register 时所需的权限。

    • 选择 AWSOpsWorksRegisterCLI_EC2 以允许注册使用实例配置文件的 EC2 实例的用户权限。

    • 选择 AWSOpsWorksRegisterCLI_OnPremises 以允许注册本地实例的用户权限。

  6. 请选择 Next(下一步)

  7. 审核页面上,选择创建用户

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

  9. 选择安全凭证选项卡,然后选择创建访问密钥

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

  11. 请选择 Next(下一步)

  12. (可选)输入标识访问密钥的标签。

  13. 请选择 Next(下一步)

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

您需要向 register 提供 IAM 用户的凭证。本演练通过在工作站的 credentials 文件中安装 EC2Register 凭证来处理该任务。有关管理 AWS CLI 凭证的其他方法的信息,请参阅配置和凭证文件

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

  2. 使用以下格式将 EC2Register 用户的配置文件添加到 credentials 文件。

    [ec2register] aws_access_key_id = access_key_id aws_secret_access_key = secret_access_key

    access_key_idsecret_access_key 替换为您之前下载的 EC2Register 密钥。

步骤 3:向 EC2Register 堆栈注册实例

您现在可以注册实例。

注册实例
  1. 在 AWS OpsWorks Stacks 中,返回到 EC2Register 堆栈,选择导航窗格中的 Instances (实例),然后选择 Register an instance (注册实例)

  2. 选择 EC2 Instances (EC2 实例),选择 Next: Select Instances (下一步: 选择实例),然后从列表中选择您的实例。

  3. 选择下一步: 安装 AWS CLI下一步: 注册实例。AWS OpsWorksStacks 会自动使用可用信息(如堆栈 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
    注意

    如果堆栈位于与 us-east-1 区域端点关联的传统区域中,您必须将区域设置为 AWS OpsWorks Stacks 服务的端点区域,而不是堆栈的区域。AWS OpsWorksStacks 会根据堆栈 ID 确定堆栈的区域。

  4. 命令模板包含多个用户特定的参数值,这些值通过方括号指示且必须用合适的值替换。将命令模板复制到文本编辑器,并按如下方式进行编辑。

    重要

    在已注册实例的整个生命周期中,都需要注册过程中创建的 IAM 用户。删除该用户会导致 AWS OpsWorks Stacks 代理无法与服务通信。为了帮助防止在用户被意外删除时无法正常管理已注册实例,请将 --use-instance-profile 参数添加到您的 register 命令,以便使用实例的内置实例配置文件。添加 --use-instance-profile 参数还可以防止每 90 天轮换 AWS 账户访问密钥时出现错误(建议的最佳实践),因为它可以防止 AWS OpsWorks 代理和所需 IAM 用户可用的访问密钥之间出现不匹配。

    • 密钥文件替换为您创建该实例时保存的 Amazon 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
  5. 在您的工作站上打开一个终端窗口,粘贴来自编辑器的 register 命令,然后运行该命令。

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

  6. 完成后,停止实例,然后使用 AWS OpsWorks Stacks 控制台或命令将其删除。这将终止 Amazon EC2 实例,这样就不会再产生任何进一步费用。