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

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

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

重要

不建议使用 IAM 用户注册实例,因为它使用静态(永久)证书进行身份验证。为了提高安全性,我们建议使用临时证书注册实例进行身份验证。有关更多信息,请参阅使用register-on-premises-instance命令 (IAM 会话 ARN) 注册本地实例

重要

确保您制定了轮换 IAM 用户的访问密钥(永久证书)的计划。有关更多信息,请参见轮换访问密钥

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

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

  • 在中创建 IAM 用户Amazon Identity and Access Management对于本地实例,如果您未使用命令指定。

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

  • 向 CodeDeploy 注册本地实例。

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

注意

这个register-on-premises-instance命令是替代的注册命令。如果您希望主要靠自己使用 CodeDeploy 配置本地实例并注册和标记该实例,请使用 register-on-premises-instance 命令。这个register-on-premises-instance命令还允许您选择使用 IAM 会话 ARN 而不是 IAM 用户 ARN 来注册实例。如果您有大量本地实例,则此方法有很大的优势。具体而言,您可以使用单个 IAM 会话 ARN 对多个实例进行身份验证,而不必为每个本地实例逐个创建 IAM 用户。有关更多信息,请参阅 使用 register-on-premises-instance 命令(IAM 用户 ARN)注册本地实例使用register-on-premises-instance命令 (IAM 会话 ARN) 注册本地实例

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

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

    注意

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

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

    重要

    在您配置时Amazon CLI(例如,通过调用aws configurecommand),请务必指定至少具有以下条件的 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打电话给注册命令,指定:

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

    重要

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

  • (可选)您想要与此本地实例关联的现有 IAM 用户的 ARN(与--iam-user-arn选项)。要获取 IAM 用户的 ARN,请致电get-user命令,或者在中选择 IAM 用户名用户IAM 控制台的部分然后找到用户 ARN中的价值摘要部分。如果未指定此选项,CodeDeploy将在您的 IAM 中代表您创建 IAM 用户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)。如果未指定此选项,将不注册标签。要稍后注册标签,请致电add-tags-to-on-前提-实例命令。

  • (可选)将在其中向 CodeDeploy 注册此本地实例的 Amazon 区域(使用 --region 选项)。这必须是中列出的支持区域之一区域和终端节点Amazon Web Services 一般参考(例如,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打电话给安装命令,指定:

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

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

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

  • (可选)从中安装 CodeDeploy 代理的自定义位置(使用 --agent-installer 选项)。此选项对于安装自定义版本的很有用CodeDeploy那个代理人CodeDeploy不正式支持(例如基于的自定义版本)CodeDeploy代理人存储库在GitHub)。该值必须是包含以下任一内容的 Amazon S3 存储桶的路径:

    • 一个CodeDeploy代理安装脚本(适用于基于 Linux 或 UNIX 的操作系统,类似于中的安装文件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 服务器和红帽企业 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 Server 或 Red Hat Enterprise Linux)步骤 2:创建示例应用程序修订中所述的修订。

重要

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

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

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

您可以使用类似于跟踪对 Amazon EC2 实例的部署的方式来跟踪本地实例的部署。有关说明,请参阅 查看CodeDeploy部署详情

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