AWS CodeDeploy
User Guide (API Version 2014-10-06)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

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

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

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

  • 如果您未随该命令指定 IAM 用户,则在 AWS Identity and Access Management 中为本地实例创建一个.

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

  • 向 AWS CodeDeploy 注册本地实例。

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

注意

register-on-premises-instance 命令是 register 命令的替代命令。如果您希望主要靠自己使用 AWS 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:在本地实例上安装和配置 AWS CLI

  1. 在本地实例上安装 AWS CLI。按照 AWS 命令行界面用户指南使用 AWS 命令行界面进行设置的说明执行操作。

    注意

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

  2. 在本地实例上配置 AWS CLI。按照 AWS 命令行界面用户指南中的配置 AWS 命令行界面的说明执行操作。

    重要

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

    Copy
    { "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:s3:::aws-codedeploy-us-east-1/*", "arn:aws:s3:::aws-codedeploy-us-east-2/*", "arn:aws:s3:::aws-codedeploy-us-west-1/*", "arn:aws:s3:::aws-codedeploy-us-west-2/*", "arn:aws:s3:::aws-codedeploy-ca-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-2/*", "arn:aws:s3:::aws-codedeploy-eu-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*", "arn:aws-cn:s3:::aws-codedeploy-cn-north-1/*" ] } ] }

步骤 2:调用注册命令

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

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

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

    重要

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

  • (可选) 您希望与此本地实例关联的现有 IAM 用户的 ARN (使用 --iam-user-arn 选项)。要获取 IAM 用户的 ARN,请调用 get-user 命令,或者在 IAM 控制台的 Users 部分中选择 IAM 用户名,然后在 Summary 部分中查找 User ARN 值。如果未指定此选项,则 AWS CodeDeploy 将代表您在您的 AWS 账户中创建一个 IAM 用户,并将其与本地实例进行关联。

    重要

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

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

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

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

例如:

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

register 命令执行以下操作:

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

  2. 将本地实例注册到 AWS CodeDeploy。

  3. 如果指定,则在 AWS CodeDeploy 中将使用 --tags 选项指定的标签关联到注册的本地实例名称。

  4. 如果创建了 IAM 用户,则还会在调用 register 命令的同一个目录中创建必需的配置文件。

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

步骤 3:调用安装命令

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

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

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

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

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

    • AWS CodeDeploy 代理安装脚本 (对于基于 Linux 或 Unix 的操作系统,类似于 GitHub 中的 AWS CodeDeploy 代理存储库中的安装文件)。

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

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

例如:

Copy
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. 将本地实例配置文件从实例上的指定位置复制到 AWS CodeDeploy 代理预期的位置 (如果该位置尚没有该文件)。

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

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

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

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

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

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

将应用程序修订部署到本地实例的方法类似于将应用程序修订部署到 Amazon EC2 实例。有关说明,请参阅 创建部署。这些说明链接到各种先决条件,包括创建应用程序、创建部署组和准备应用程序修订。如果您希望部署简单的示例应用程序修订,可以创建教程:将应用程序部署到本地实例步骤 2:创建示例应用程序修订中所述的修订。

重要

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

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

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

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

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