使用 register 命令(IAM 用户 ARN)注册本地实例。 - Amazon CodeDeploy
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用 register 命令(IAM 用户 ARN)注册本地实例。

本部分介绍如何以最少的工作量使用 CodeDeploy 注册和标记该实例。当您处理一个或少量的本地实例时,register 命令非常有用。您可以使用register命令仅当您使用 IAM 用户 ARN 对实例进行身份验证时。您无法使用register命令与 IAM 会话 ARN 进行身份验证。

当您使用register命令,您可以让 CodeDeploy 执行以下操作:

  • 在中创建 IAM 用户Amazon Identity and Access Management(如果您未随该命令指定本地实例)。

  • 将 IAM 用户的凭证保存到本地实例配置文件中。

  • 向 CodeDeploy 注册本地实例。

  • 如果您在命令中指定了标签,则向本地实例添加标签。

注意

这些区域有:注册本地实例命令是register命令。您可以使用register-on-premises-instance命令主要靠自己通过 CodeDeploy 注册和标记该实例,请注册和标记该实例。这些区域有:register-on-premises-instance命令还提供了使用 IAM 会话 ARN 注册实例的选项,而不是使用 IAM 用户 ARN 注册实例。如果您有大量本地实例,则此方法有很大的优势。具体来说,您可以使用一个 IAM 会话 ARN 对多个实例进行身份验证,而不必为每个本地实例都单独创建一个 IAM 用户。有关更多信息,请参阅 使用 register ter-on-premises-instance 命令 (IAM 用户 ARN) 注册本地实例使用 register ter-on-premises-instance 命令 (IAM 会话 ARN) 注册本地实例

第 1 步:安装和配置Amazon CLI在本地实例上

  1. 在本地实例上安装 Amazon CLI。按照中的说明进行操作开始设置Amazon CLI中的Amazon Command Line Interface用户指南

    注意

    用于处理本地实例的 CodeDeploy 命令可以在Amazon CLI版本 1.7.19 和更高版本中提供。如果您已安装了 Amazon CLI,请调用 aws --version 来检查其版本。

  2. 在本地实例上配置 Amazon CLI。按照中的说明进行操作配置Amazon CLIAmazon Command Line Interface用户指南

    重要

    在配置Amazon CLI(例如,通过调用aws configure命令),请确保指定至少具有以下条件的 IAM 用户的私有密钥 ID 和秘密访问密钥。Amazon访问权限除了中指定的权限之外配置本地实例的先决条件。这使得在本地实例上下载和安装 CodeDeploy 代理成为可能。访问权限应与以下示例类似:

    { "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:*", "iam:CreateAccessKey", "iam:CreateUser", "iam:DeleteAccessKey", "iam:DeleteUser", "iam:DeleteUserPolicy", "iam:ListAccessKeys", "iam:ListUserPolicies", "iam:PutUserPolicy", "iam:GetUser", "tag:GetTags", "tag:GetResources" ], "Resource" : "*" }, { "Effect" : "Allow", "Action" : [ "s3:Get*", "s3:List*" ], "Resource" : [ "arn:aws:-cn:s3:::aws-codedeploy-cn-north-1/*", "arn:aws:-cn:s3:::aws-codedeploy-cn-northwest-1/*" ] } ] }

第 2 步:调用注册命令

在这一步中,我们假设您从本地实例本身注册该本地实例。您还可以从安装和配置了 Amazon CLI 的单独设备或实例上注册本地实例,如先前的步骤中所述。

使用Amazon CLI调用,register命令,在命令中指定:

  • 向 CodeDeploy 唯一标识本地实例的名称 (使用--instance-name选项)。

    重要

    为了帮助在以后标识本地实例,特别是用于调试用途,我们强烈建议您使用的名称能够映射到本地实例的某种唯一特性 (例如,在适用时可以使用序列号或唯一内部资产标识符)。如果您为名称指定 MAC 地址,请注意 MAC 地址包含 CodeDeploy 不允许使用的字符,例如冒号 (:)。有关允许字符的列表,请参阅CodeDeploy 限制

  • (可选)您希望与此本地实例关联的现有 IAM 用户的 ARN(使用--iam-user-arn选项)。要获取 IAM 用户的 ARN,请调用get-user命令,或者在用户部分,然后找到用户 ARN值处于摘要部分。如果未指定此选项,则 CodeDeploy 将代表您在Amazon帐户并将其关联到本地实例。

    重要

    如果您指定了 --iam-user-arn 选项,则还必须手动创建本地实例配置文件,如第 4 步:将配置文件添加到本地实例中所述。

    您只能将一个 IAM 用户与一个本地实例关联。尝试将一个 IAM 用户与多个本地实例关联会导致出错,对这些本地实例的部署将失败,或者对这些本地实例的部署会停滞在永久等待的状态。

  • (可选)一组本地实例标签 (使用--tags选项),CodeDeploy 将使用这些方法来标识要部署到的 Amazon EC2 实例组。使用 Key=tag-key,Value=tag-value 指定各个标签(例如,Key=Name,Value=Beta Key=Name,Value=WestRegion)。如果未指定此选项,将不注册标签。要在以后注册标签,请调用将标签添加到本地实例命令。

  • 可选,Amazon区域中将在其中向 CodeDeploy 注册本地实例(使用--region选项)。此区域必须为区域和终端节点Amazon一般参考(例如,us-west-2)。如果未指定此选项,则默认Amazon区域将使用与发出调用的 IAM 用户关联的区域。

例如:

aws deploy register --instance-name AssetTag12010298EX --iam-user-arn arn:aws:iam::444455556666:user/CodeDeployUser-OnPrem --tags Key=Name,Value=CodeDeployDemo-OnPrem --region us-west-2

register 命令执行以下操作:

  1. 如果未指定现有 IAM 用户,则创建一个 IAM 用户,向该用户附加必需的权限,然后生成对应的私有密钥和私有访问密钥。本地实例将使用此 IAM 用户及其权限和凭证对 CodeDeploy 进行身份验证和交互。

  2. 向 CodeDeploy 注册本地实例。

  3. 如果指定,则在代 CodeDeploy 中关联使用--tags选项与注册的本地实例名称一起使用。

  4. 如果创建了 IAM 用户,则还会在register命令被调用。

如果此命令遇到错误,则将显示错误消息,说明您可以如何手动完成剩余步骤。否则,将显示成功消息,说明如何调用 install 命令,如接下来的步骤中所列。

第 3 步:调用安装命令

从本地实例,使用Amazon CLI调用,install命令,在命令中指定:

  • 配置文件的路径 (使用 --config-file 选项)。

  • (可选) 是否替换本地实例上已存在的配置文件 (使用 --override-config 选项)。如果未指定,则不替换现有配置文件。

  • 可选,Amazon区域中将在其中向 CodeDeploy 注册本地实例(使用--region选项)。此操作必须为中列出的受支持的区域之一。区域和终端节点Amazon一般参考(例如,us-west-2)。如果未指定此选项,则默认Amazon区域将使用与发出调用的 IAM 用户关联的区域。

  • (可选)从中安装 CodeDeploy 代理的自定义位置(使用--agent-installer选项)。此选项对于安装 CodeDeploy 不官方支持的自定义 CodeDeploy 代理版本非常有用(例如基于CodeDeploy CodeDeploy存储 GitHub。该值必须是指向包含以下二者之一的 Amazon S3 存储桶的路径:

    • 代理 CodeDeploy 装脚本(对于基于 Linux 或 Unix 的操作系统,类似于CodeDeploy CodeDeploy存储 GitHub。

    • CodeDeploy 代理安装程序包 (.msi) 文件(对于基于 Windows 的操作系统)。

    如果未指定此选项,CodeDeploy 将尽大可能尝试从自己的位置安装与本地实例上操作系统兼容的官方支持的 CodeDeploy 代理版本。

例如:

aws deploy install --override-config --config-file /tmp/codedeploy.onpremises.yml --region us-west-2 --agent-installer s3://aws-codedeploy-us-west-2/latest/codedeploy-agent.msi

install 命令执行以下操作:

  1. 检查本地实例是否为 Amazon EC2 实例。如果是,则将显示错误消息。

  2. 将本地实例配置文件从实例上的指定位置复制到 CodeDeploy 代理预期的位置(如果该位置尚没有该文件)。

    对于 Ubuntu Server 和 Red Hat Enterprise Linux (RHEL)),这是/etc/codedeploy-agent/conf/codedeploy.onpremises.yml

    对于 Windows 服务器,这是C:\ProgramData\Amazon\CodeDeploy\conf.onpremises.yml

    如果指定了 --override-config 选项,则创建或覆盖文件。

  3. 在本地实例上安装 CodeDeploy 代理,然后启动它。

第 4 步:将应用程序修订部署到本地实例

现在,您已准备好将应用程序修订部署到已注册和标记的本地实例。

将应用程序修订部署到本地实例的方法类似于将应用程序修订部署到 Amazon EC2 实例。有关说明,请参阅使用 CodeDeploy 创建部署。这些说明链接到各种先决条件,包括创建应用程序、创建部署组和准备应用程序修订。如果您希望部署简单的示例应用程序修订,可以创建教程:使用 CodeDeploy(Windows 服务器、Ubuntu 服务器或红帽企业 Linux)将应用程序部署到本地实例第 2 步:创建示例应用程序修订中所述的修订。

重要

在创建以本地实例为目标的部署组的过程中,如果您重用现有 CodeDeploy 服务角色,则必须将包含Tag:get*添加到Action部分的服务角色的策略语句。有关更多信息,请参阅第 2 步:为 CodeDeploy 创建服务角色

第 5 步:跟踪本地实例的部署

将应用程序修订部署到已注册和标记的本地实例之后,您可以跟踪部署进度。

跟踪对本地实例的部署的方法与跟踪对 Amazon EC2 实例的部署的方法类似。有关说明,请参阅查看 CodeDeploy 部署详细信息

有关更多选项,请参阅在 CodeDeploy 中管理本地实例操作