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

使用register-on-premise-instance命令(iam用户ARN)注册本地实例

按以下说明,配置本地实例并主要靠自己通过 CodeDeploy 注册该实例并为其添加标签,同时使用静态 IAM 用户凭证进行身份验证。

步骤 1. 创建 IAM 本地实例用户

创建 IAM 本地实例将用于验证和交互的用户 CodeDeploy.

重要

您必须为每个参与的本地实例创建单独的 IAM 用户。如果您尝试重新使用个人 IAM 对于多个本地实例,您可能无法成功注册或标记这些本地实例 CodeDeploy. 对这些本地实例的部署可能会停滞在永久等待的状态或完全失败。

我们建议为 IAM 用户分配一个标识其用途的名称(如 )。CodeDeployUser-OnPrem.

您可以使用 AWS CLI 或 IAM 控制台创建 IAM 用户。有关信息,请参阅 创建 IAM 您的AWS帐户中的用户.

重要

您是否使用 AWS CLI 或 IAM 控制台创建新的 IAM 用户,记录为用户提供的用户ARN。稍后您将需要此信息 步骤 4. 将配置文件添加到本地实例步骤 8。向 注册本地实例。CodeDeploy.

步骤 2. 向 IAM 用户分配权限。

如果您的本地实例将部署应用程序修订版 Amazon S3 存储桶,您必须分配到 IAM 用户与这些存储区交互的权限。您可以使用 AWS CLI 或 IAM 要分配权限的控制台。

注意

如果您仅从 GitHub 存储库部署应用程序修订,则跳过此步骤,直接转到步骤 3 获取 IAM 用户凭据. (您仍然需要有关 IAM 您创建的用户 步骤 1. 创建 IAM 本地实例用户...将在后续步骤中使用。)

分配权限 (CLI)

  1. 在 Amazon EC2 您正在使用的实例或设备 AWS CLI. 采用类似于 CodeDeploy-OnPrem-Permissions.json 的格式命名文件,然后保存文件。

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ] }
    注意

    我们建议您将此策略限制为您的本地实例需要访问的那些 Amazon S3 存储桶。如果您限制本政策,请确保同时访问 Amazon S3 包含 AWS CodeDeploy 代理。否则,只要在关联的本地实例上安装或更新 CodeDeploy 代理,就可能出现错误。

    例如:。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws-cn:s3:::replace-with-your-s3-bucket-name/*", "arn:aws-cn:s3:::aws-codedeploy-cn-north-1/*", "arn:aws-cn:s3:::aws-codedeploy-cn-northwest-1/*" ] } ] }
  2. 呼叫 PUT用户-政策 命令,指定 IAM 用户 --user-name 选项)、策略名称(含 --policy-name 选项)以及新创建的策略文档的路径 --policy-document 选项)。例如,假设 CodeDeploy-OnPrem-Permissions.json 文件位于您调用此命令时所在的同一个目录(文件夹)中:

    重要

    务必在文件名前包含 file://。此命令中需要该项。

    aws iam put-user-policy --user-name CodeDeployUser-OnPrem --policy-name CodeDeploy-OnPrem-Permissions --policy-document file://CodeDeploy-OnPrem-Permissions.json

分配权限(控制台)

  1. 通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

  2. 在导航窗格中,选择 政策,然后选择 创建策略. (如果 开始 按钮,选择它,然后选择 创建策略.)

  3. 旁边 创建自己的政策,选择 选择.

  4. 策略名称 框中,键入此策略的名称(例如, CodeDeploy-OnPrem-Permissions)。

  5. 政策文档 方框,键入或粘贴以下权限表达式,这些表达式允许 AWS CodeDeploy 从任何 Amazon S3 在本地实例中指定的、代表 IAM 用户帐户:

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ] }
  6. 选择 创建策略.

  7. 在导航窗格中,选择 用户.

  8. 在用户列表中,浏览并选择 IAM 您创建的用户 步骤 1. 创建 IAM 本地实例用户.

  9. 权限 选项卡, 管理策略,选择 附加政策.

  10. 选择名称的策略 CodeDeploy-OnPrem-Permissions,然后选择 附加政策.

步骤 3 获取 IAM 用户凭据

获取 IAM 用户的私有密钥 ID 和秘密访问密钥。您在 中需要使用它们。步骤 4. 将配置文件添加到本地实例. 您可以使用 AWS CLI 或 IAM 控制台以获取密钥密钥ID和密钥访问密钥。

注意

如果您已具有私有密钥 ID 和秘密访问密钥,则跳过这一步,直接转到步骤 4. 将配置文件添加到本地实例.

获取凭证 (CLI)

  1. 呼叫 列表访问密钥 命令,指定 IAM 用户 --user-name 选项),并查询只需要访问密钥ID的 --query--output 选项)。例如:。

    aws iam list-access-keys --user-name CodeDeployUser-OnPrem --query "AccessKeyMetadata[*].AccessKeyId" --output text
  2. 如果输出中没有显示密钥或者输出中只显示一个密钥的信息,请致电 创建访问密钥 命令,指定 IAM 用户 --user-name 选项):

    aws iam create-access-key --user-name CodeDeployUser-OnPrem

    在呼叫的输出中 create-access-key 命令,请注意 AccessKeyIdSecretAccessKey 字段。在 中您将需要此信息。步骤 4. 将配置文件添加到本地实例.

    重要

    这是您仅有的一次查看此秘密访问密钥的机会。如果您忘记或丢失了此秘密访问密钥,则需要按照 中的步骤生成新的密钥。步骤 3 获取 IAM 用户凭据.

  3. 如果已列出两个访问密钥,您必须通过调用 删除-访问密钥 命令,指定 IAM 用户 --user-name 选项)以及要删除的访问密钥的ID --access-key-id 选项)。然后调用 create-access-key 命令,如此步骤中前面所述。下面是一个调用 delete-access-key 命令的示例:

    aws iam delete-access-key --user-name CodeDeployUser-OnPrem --access-key-id access-key-ID
    重要

    如果您致电 delete-access-key 命令删除其中一个访问密钥,本地实例已经使用此访问密钥,如所述 步骤 4. 将配置文件添加到本地实例,您将需要遵循 步骤 4. 将配置文件添加到本地实例 再次指定与此相关的不同访问密钥ID和密钥访问密钥 IAM 用户。否则,对该本地实例的任何部署可能会停滞在永久等待的状态或完全失败。

获取凭证(控制台)

    1. 通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

    2. 如果未显示用户列表,在导航窗格中选择 用户.

    3. 在用户列表中,浏览并选择 IAM 您创建的用户 步骤 1. 创建 IAM 本地实例用户.

  1. 安全凭据 选项卡,如果没有键或只列出一个密钥,请选择 创建访问密钥.

    如果列出了两个访问密钥,则必须删除其中之一。选择 删除 其中一个访问密钥旁边,然后选择 创建访问密钥.

    重要

    如果您选择 删除 其中一个访问密钥旁边的一个访问密钥已经使用此访问密钥,如 步骤 4. 将配置文件添加到本地实例,您将需要遵循 步骤 4. 将配置文件添加到本地实例 再次指定与此相关的不同访问密钥ID和密钥访问密钥 IAM 用户。否则,对该本地实例的部署可能会停滞在永久等待的状态或完全失败。

  2. 选择 显示 并注意访问密钥ID和SECRETACCESS键。您在下一步中需要此信息。或者,您可以选择 下载.csv文件 保存访问密钥ID和秘密访问密钥的副本。

    重要

    除非您记录或下载了凭证,否则这是您仅有的一次查看此秘密访问密钥的机会。如果您忘记或丢失了此秘密访问密钥,则需要按照 中的步骤生成新的密钥。步骤 3 获取 IAM 用户凭据.

  3. 选择 关闭 返回到 用户> IAM User Name 第页。

步骤 4. 将配置文件添加到本地实例

使用 root 或管理员权限将配置文件添加到本地实例。此配置文件将用于声明 IAM 用户凭据和目标 AWS 要用于 CodeDeploy. 必须将该文件添加到本地实例上的特定位置。文件必须包含 IAM 用户的ARN、秘密密钥ID、秘密访问密钥和目标 AWS 地区。该文件必须遵循特定格式。

  1. 创建名为 codedeploy.onpremises.yml (对于 Ubuntu Server 或 RHEL 本地实例)或 conf.onpremises.yml (对于 Windows Server 本地实例),在本地实例中的以下位置:

    • 对于 Ubuntu Server: /etc/codedeploy-agent/conf

    • 对于 Windows Server: C:\ProgramData\Amazon\CodeDeploy

  2. 使用文本编辑器将以下信息添加到新创建的信息 codedeploy.onpremises.ymlconf.onpremises.yml 文件:

    --- aws_access_key_id: secret-key-id aws_secret_access_key: secret-access-key iam_user_arn: iam-user-arn region: supported-region

    其中,

    重要

    如果您选择 删除 其中一个访问密钥旁边 步骤 3 获取 IAM 用户凭据,您的本地实例已经使用关联的访问密钥ID和密钥访问密钥,您需要遵循中的说明 步骤 4. 将配置文件添加到本地实例 指定与此关联的不同访问密钥ID和密钥访问密钥 IAM 用户。否则,对您的本地实例的任何部署可能会停滞在永久等待的状态或完全失败。

步骤 5. 安装和配置 AWS CLI

安装并配置 AWS CLI 本地实例。( AWS CLI 将用于 步骤 7. 安装 CodeDeploy 代理 下载并安装 CodeDeploy 本地实例中的代理。)

  1. 安装 AWS CLI 在本地实例中,遵循中的说明 设置与 AWS 命令行界面AWS 命令行界面用户指南.

    注意

    CodeDeploy1.7.19 版 中提供了用于处理本地实例的 命令。AWS CLI. 如果您的版本为 AWS CLI 已安装,您可以通过调用来检查其版本 aws --version.

  2. 配置 AWS CLI 在本地实例中,遵循中的说明 配置 AWS 命令行界面AWS 命令行界面用户指南.

    重要

    配置 AWS CLI (例如,通过调用 aws configure 命令),请确保指定密钥ID和密钥访问密钥 IAM 至少以下的用户 AWS 除了在 配置本地实例的前提条件. 这使您能够在本地实例上下载和安装 CodeDeploy 代理:

    { "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:*" ], "Resource" : "*" }, { "Effect" : "Allow", "Action" : [ "s3:Get*", "s3:List*" ], "Resource" : [ "arn:aws-cn:-cn:s3:::aws-codedeploy-cn-north-1/*", "arn:aws-cn:-cn:s3:::aws-codedeploy-cn-northwest-1/*" ] } ] }

    这些访问权限可以分配到 IAM 您创建的用户 步骤 1. 创建 IAM 本地实例用户 或者不同的 IAM 用户。将这些权限分配给 IAM 用户,请遵循 步骤 1. 创建 IAM 本地实例用户,使用这些访问权限,而不是在该步骤中的访问权限。

步骤 6. 设置AWS_REGION环境变量(Ubuntu Server 和 RHEL Only)

如果您未运行 Ubuntu Server 或 RHEL 在您的本地实例中,跳过此步骤并直接转到 步骤 7. 安装 CodeDeploy 代理 .

安装 CodeDeploy 代理商 Ubuntu Server 或 RHEL 本地实例并启用实例以更新 CodeDeploy 新版本可用的代理人。您可以通过设置 AWS_REGION 实例上的环境变量到受支持的其中一个区域的标识符 CodeDeploy. 我们建议您将区域的值设置为您的 CodeDeploy 应用程序、部署组和应用程序修订所在的区域(例如,)。us-west-2). 有关地区列表,请参阅 区域和端点AWS General Reference.

要设置环境变量,请从终端调用以下命令:

export AWS_REGION=supported-region

其中,supported-region 是区域标识符(例如, us-west-2)。

步骤 7. 安装 CodeDeploy 代理

在本地实例上安装 CodeDeploy 代理:

步骤 8。向 注册本地实例。CodeDeploy

这一步中的说明假设您从本地实例本身上注册该本地实例。您可以从一个单独的设备或实例注册本地实例, AWS CLI 已安装和配置,如所述 步骤 5. 安装和配置 AWS CLI.

使用 AWS CLI 如需注册本地实例,请与 CodeDeploy 这样可以在部署中使用。

  1. 在您使用 AWS CLI,您需要用户ARN的 IAM 您创建的用户 步骤 1. 创建 IAM 本地实例用户. 如果您还没有用户ARN,请致电 获取用户 命令,指定 IAM 用户 --user-name 选项)并查询用户ARN(与 --query--output 选项):

    aws iam get-user --user-name CodeDeployUser-OnPrem --query "User.Arn" --output text
  2. 调用 register-on-premises-instance 命令,在命令中指定:

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

      重要

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

    • 用户ARN的 IAM 您创建的用户 步骤 1. 创建 IAM 本地实例用户 (与 --iam-user-arn 选项)。

      例如:。

      aws deploy register-on-premises-instance --instance-name AssetTag12010298EX --iam-user-arn arn:aws-cn:iam::80398EXAMPLE:user/CodeDeployUser-OnPrem

步骤 9 标记本地实例

您可以使用 AWS CLI 或 CodeDeploy 用于标记本地实例的控制台。(CodeDeploy 使用本地实例标签来确定部署期间的部署目标。)

标记本地实例 (CLI)

  • 调用 add-tags-to-on-premises-instances 命令,在命令中指定:

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

    • 您要使用的本地实例标签密钥的名称和标签值 (使用 --tags 选项)。您必须同时指定名称和值。CodeDeploy 不允许本地实例标签只具有值。

      例如:。

      aws deploy add-tags-to-on-premises-instances --instance-names AssetTag12010298EX --tags Key=Name,Value=CodeDeployDemo-OnPrem

标记本地实例(控制台)

  1. Sign in to the AWS 管理控制台 and open the CodeDeploy console at https://console.amazonaws.cn/codedeploy.

    注意

    使用您在 开始使用 CodeDeploy中使用的相同账户或 IAM 用户信息登录。

  2. 从 CodeDeploy 菜单,选择 本地实例.

  3. 在本地实例列表中,选择您要标记的本地实例旁边的箭头。

  4. 在标签列表中,选择或输入所需的标签键和标签值。当您输入标签键和标签值之后,将显示另一行。您可以重复此步骤,最多添加 10 个标签。要删除标签,请选择删除图标 ()。 ).

  5. 添加标签后,选择 更新标签.

步骤 10 部署本地实例的应用程序修订

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

将应用程序修订部署到本地实例的方法类似于将应用程序修订部署到 Amazon EC2 实例。有关说明,请参阅使用 CodeDeploy 创建部署. 这些说明包含指向先决条件的链接,其中包括创建应用程序、创建部署组和准备应用程序修订。如果您需要一个简单的样本应用程序修订版以部署,您可以创建一个中所述的 步骤 2. 创建应用程序修订版本教程 将应用程序部署到本地实例,并且 CodeDeploy (Windows Server, Ubuntu Server,或 Red Hat Enterprise Linux).

重要

如果您重复使用 CodeDeploy 服务角色作为创建本地实例的部署组的一部分,您必须包括 Tag:get*Action 服务角色的政策声明的部分。有关更多信息,请参阅 步骤 3:为 CodeDeploy 创建服务角色.

步骤 11 跟踪部署到本地实例

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

跟踪对本地实例的部署的方法与跟踪对 Amazon EC2 实例的部署的方法类似。有关说明,请参阅视图 CodeDeploy部署详情 .