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

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

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

重要

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

重要

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

按照以下说明配置本地实例,并使用静态 IAM 用户证书进行身份验证,注册和标记该实例, CodeDeploy 主要由您自己完成。

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

创建一个 IAM 用户,本地实例将使用该用户进行身份验证和交互 CodeDeploy。

重要

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

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

您可以使用 Amazon CLI 或 IAM 控制台创建 IAM 用户。有关更多信息,请参阅在您的 Amazon 账户中创建 IAM 用户

重要

无论您是使用还是 IAM 控制台创建新的 IAM 用户,都要记下为该用户提供的用户 ARN。 Amazon CLI 稍后在步骤 4:将配置文件添加到本地实例步骤 8:向注册本地实例 CodeDeploy中您将需要此信息。

步骤 2:向 IAM 用户分配权限

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

注意

如果要仅从 GitHub 存储库部署应用程序修订版,请跳过此步骤直接转至步骤 3:获取 IAM 用户凭证。(您仍需要有关您在步骤 1:为本地实例创建 IAM 用户中创建的 IAM 用户的信息。后面的步骤中将会用到这些信息。)

分配权限(CLI)
  1. 在您用于调用 Amazon CLI的 Amazon EC2 实例或设备上创建包含以下策略内容的文件。采用类似于 CodeDeploy-OnPrem-Permissions.json 的格式命名文件,然后保存文件。

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

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

    例如:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "arn:aws:s3:::aws-codedeploy-cn-north-1/*", "arn:aws:s3:::aws-codedeploy-cn-northwest-1/*" ] } ] }
  2. 调用put-user-policy命令,指定 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. 访问:https://console.aws.amazon.com/iam/,打开 IAM 控制台。

  2. 在导航窗格中选择 Policies,然后选择 Create Policy。(如果 Get Started 按钮出现,选择此按钮,然后选择 Create Policy。)

  3. Create Your Own Policy 旁,选择 Select

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

  5. 策略文档框中,键入或粘贴以下权限表达式,该表达式 Amazon CodeDeploy 允许代表 IAM 用户将策略中指定的任何 Amazon S3 存储桶中的应用程序修订部署到本地实例:

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

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

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

  9. Permissions 选项卡上的 Managed Policies 中,选择 Attach Policy

  10. 选择名为 CodeDeploy-OnPrem-Permissions 的托管策略,然后选择 Attach Policy(附加策略)

步骤 3:获取 IAM 用户凭证

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

注意

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

如果用户想在 Amazon 外部进行交互,则需要编程访问权限 Amazon Web Services Management Console。 Amazon API 和 Amazon Command Line Interface 所需的访问密钥。可能的话,创建临时凭证,该凭证由一个访问密钥 ID、一个秘密访问密钥和一个指示凭证何时到期的安全令牌组成。

要向用户授予编程式访问权限,请选择以下选项之一。

哪个用户需要编程式访问权限? 目的 方式
IAM 使用短期凭证签署对 Amazon CLI 或 Amazon API 的编程请求(直接或使用 Amazon 软件开发工具包)。 按照 IAM 用户指南中的将临时证书与 Amazon 资源配合使用中的说明进行操作。
IAM

(不推荐使用)

使用长期凭证签署对 Amazon CLI 或 Amazon API 的编程请求(直接或使用 Amazon 软件开发工具包)。
按照《IAM 用户指南》管理 IAM 用户的访问密钥中的说明进行操作。
获取凭证(CLI)
  1. 调用list-access-keys命令,指定 IAM 用户的姓名(使用--user-name选项),然后仅查询访问密钥 ID(使用--query--output选项)。例如:

    aws iam list-access-keys --user-name CodeDeployUser-OnPrem --query "AccessKeyMetadata[*].AccessKeyId" --output text
  2. 如果输出中没有显示任何密钥或输出中仅显示有关一个密钥的信息,请调用create-access-key命令,指定 IAM 用户的名称(带--user-name选项):

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

    在调用 create-access-key 命令的输出中,记录 AccessKeyIdSecretAccessKey 字段的值。在步骤 4:将配置文件添加到本地实例 中您将需要此信息。

    重要

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

  3. 如果已经列出了两个访问密钥,则必须通过调用delete-access-key命令删除其中一个,指定 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:将配置文件添加到本地实例中的说明操作,指定与此 IAM 用户关联的其他访问密钥 ID 和秘密访问密钥。否则,对该本地实例的任何部署可能会停滞在永久等待的状态或完全失败。

获取凭证(控制台)
    1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

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

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

  1. Security credentials 选项卡上,如果没有列出密钥或仅列出了一个密钥,请选择 Create access key

    如果列出了两个访问密钥,则必须删除其中之一。选择其中一个访问密钥旁边的 Delete,然后选择 Create access key

    重要

    如果您选择这些访问密钥之一旁边的删除,并且本地实例已经按步骤 4:将配置文件添加到本地实例中所述使用此访问密钥,则您需要再次按照步骤 4:将配置文件添加到本地实例中的说明操作,指定与此 IAM 用户关联的其他访问密钥 ID 和秘密访问密钥。否则,对该本地实例的部署可能会停滞在永久等待的状态或完全失败。

  2. 选择 Show 并记录访问密钥 ID 和秘密访问密钥。您在下一步中需要此信息。或者,您可以选择 Download .csv file 来保存访问密钥 ID 和秘密访问密钥的副本。

    重要

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

  3. 选择 Close 返回 Users > IAM User Name 页面。

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

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

  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:将配置文件添加到本地实例中的说明操作,指定与此 IAM 用户关联的其他访问密钥 ID 和秘密访问密钥。否则,对您的本地实例的任何部署可能会停滞在永久等待的状态或完全失败。

步骤 5:安装和配置 Amazon CLI

在本地实例 Amazon CLI 上安装和配置。( Amazon CLI 将在中步骤 7:安装代 CodeDeploy 理 用于在本地实例上下载和安装 CodeDeploy 代理。)

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

    注意

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

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

    重要

    在配置时 Amazon CLI (例如,通过调用aws configure命令),请务必指定除中指定的访问权限之外还至少具有以下 Amazon 访问权限的 IAM 用户的私有密钥 ID 和私有访问密钥配置本地实例的先决条件。这样,您就可以在本地实例上下载并安装 CodeDeploy 代理:

    { "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:*" ], "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/*" ] } ] }

    这些访问权限可以分配给您在步骤 1:为本地实例创建 IAM 用户中创建的 IAM 用户或者其他 IAM 用户。要将这些权限分配给 IAM 用户,请按照步骤 1:为本地实例创建 IAM 用户中的说明操作,并使用这些访问权限而不是该步骤中的权限。

步骤 6:设置 AWS_REGION 环境变量(仅针对 Ubuntu Server 和 RHEL)

如果您的本地实例上没有运行 Ubuntu Server 或 RHEL,则跳过此步骤,直接转到步骤 7:安装代 CodeDeploy 理

在 Ubuntu 服务器或 RHEL 本地实例上安装代 CodeDeploy 理,并允许该实例在新版本 CodeDeploy 可用时更新代理。为此,您可以将实例上的AWS_REGION环境变量设置为支持的区域之一的标识符 CodeDeploy。我们建议您将该值设置为 CodeDeploy 应用程序、部署组和应用程序修订所在的区域(例如us-west-2)。有关区域的列表,请参阅《Amazon Web Services 一般参考》中的区域和终端节点

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

export AWS_REGION=supported-region

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

步骤 7:安装代 CodeDeploy 理

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

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

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

使用 Amazon CLI 向注册本地实例, CodeDeploy 以便可以在部署中使用该实例。

  1. 在使用之前 Amazon CLI,您需要在中创建的 IAM 用户的用户 ARN。步骤 1:为本地实例创建 IAM 用户如果您还没有用户 ARN,请调用 get-user 命令,在命令中指定 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 配额

    • 您在步骤 1:为本地实例创建 IAM 用户中创建的 IAM 用户的用户 ARN(使用 --iam-user-arn 选项)。

      例如:

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

步骤 9:标记本地实例

您可以使用 Amazon CLI 或 CodeDeploy 控制台来标记本地实例。(在部署期间CodeDeploy使用本地实例标签来识别部署目标。)

标记本地实例(CLI)
  • 调用-premis add-tags-to-ones-instances 命令,指定:

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

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

      例如:

      aws deploy add-tags-to-on-premises-instances --instance-names AssetTag12010298EX --tags Key=Name,Value=CodeDeployDemo-OnPrem
标记本地实例(控制台)
  1. 登录 Amazon Web Services Management Console 并打开 CodeDeploy 控制台,网址为 https://console.aws.amazon.com/codedeploy

    注意

    使用您在入门 CodeDeploy中设置的同一用户登录。

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

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

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

  5. 在您添加标签之后,选择 Update Tags

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

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

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

重要

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

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

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

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