使用 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用户

重要

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

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

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

注意

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

分配权限 (CLI)
  1. 在您用来调用的 Amazon EC2 实例或设备上创建包含以下策略内容的文件 Amazon CLI。采用类似于 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:::amzn-s3-demo-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. 打开IAM控制台,网址为https://console.aws.amazon.com/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. 在用户列表中,浏览并选择您在中创建的IAM用户的名称步骤 1:为本地实例创建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 APIs和 Amazon Command Line Interface 需要访问密钥。可能的话,创建临时凭证,该凭证由一个访问密钥 ID、一个秘密访问密钥和一个指示凭证何时到期的安全令牌组成。

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

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

(不推荐使用)

使用长期证书签署对 Amazon CLI 或的编程请求 Amazon APIs(直接或使用 Amazon SDKs)。
按照《用户指南》中管理IAM用户访问密钥中的IAM说明进行操作。
获取凭证 (CLI)
  1. 调用list-access-keys命令,指定IAM用户名(使用--user-name选项),然后仅查询访问密钥IDs(使用--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. 打开IAM控制台,网址为https://console.aws.amazon.com/iam/

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

    3. 在用户列表中,浏览并选择您在中创建的IAM用户的名称步骤 1:为本地实例创建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. 选择 “关闭” 返回到 “用户” > IAM User Name页面。

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

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

  1. 在RHEL本地实例的以下位置创建一个名为codedeploy.onpremises.yml(用于 Ubuntu 服务器或本地实例)或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 服务器)RHEL

如果您没有在本地实例RHEL上运行 Ubuntu Server,请跳过此步骤直接转至。步骤 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,您需要在中创建ARN的IAM用户的用户步骤 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 配额

    • 您在中创建ARN的IAM用户的用户步骤 1:为本地实例创建IAM用户(带--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 并在 https://console.aws.amazon.com/codede ploy 上打开 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 部署详情