

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

# 使用本地实例 CodeDeploy
<a name="instances-on-premises"></a>

本地实例是指任何不是 Amazon EC2 实例的物理设备，可以运行 CodeDeploy 代理并连接到公共 AWS 服务终端节点。

将 CodeDeploy 应用程序修订部署到本地实例涉及两个主要步骤：
+ **步骤 1**-配置每个本地实例，向其注册 CodeDeploy，然后对其进行标记。
+ **步骤 2** - 将应用程序修订部署到本地实例。
**注意**  
要尝试创建示例应用程序修订并将它部署到已正确配置并注册的本地实例，请参阅[教程：使用 CodeDeploy （Windows 服务器、Ubuntu 服务器或红帽企业 Linux）将应用程序部署到本地实例](tutorials-on-premises-instance.md)。有关本地实例及其使用方式的信息 CodeDeploy，请参阅[使用本地实例 CodeDeploy](#instances-on-premises)。

如果您不想再在部署中使用本地实例，可以从部署组中删除本地实例的标签。更可靠的方式是从实例中删除本地实例标签。您也可以显式取消注册本地实例，使其无法再在任何部署中使用。有关更多信息，请参阅 [在中管理本地实例的操作 CodeDeploy](on-premises-instances-operations.md)。

本节中的说明向您展示如何配置本地实例，然后对其进行注册和标记， CodeDeploy 以便在部署中使用该实例。本节还介绍 CodeDeploy 如何使用获取本地实例的相关信息，并在您不再计划部署本地实例后取消注册该实例。

**Topics**
+ [配置本地实例的先决条件](instances-on-premises-prerequisites.md)
+ [注册本地实例](on-premises-instances-register.md)
+ [管理本地实例操作](on-premises-instances-operations.md)

# 配置本地实例的先决条件
<a name="instances-on-premises-prerequisites"></a>

必须满足以下条件才能注册本地实例。

**重要**  
如果您使用[register-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/register-on-premises-instance.html)命令并定期刷新通过 AWS Security Token Service (AWS STS) 生成的临时证书，则还有其他先决条件。有关信息，请参阅[IAM 会话 ARN 注册前提条件](register-on-premises-instance-iam-session-arn.md#register-on-premises-instance-iam-session-arn-prerequisites)。

**设备要求**

您要准备、注册和标记为本地实例的设备 CodeDeploy 必须运行支持的操作系统。有关列表，请参阅[CodeDeploy 代理支持的操作系统](codedeploy-agent.md#codedeploy-agent-supported-operating-systems)。

如果您的操作系统不受支持，则该 CodeDeploy 代理可以作为开源版本供您使用，以适应您的需求。有关更多信息，请参阅中的[CodeDeploy 代理](https://github.com/aws/aws-codedeploy-agent)存储库 GitHub。

**出站通信**

本地实例必须能够连接到公共 AWS 服务终端节点才能与之通信 CodeDeploy。

 CodeDeploy 代理使用 HTTPS 通过端口 443 进行出站通信。

**管理控制**

在本地实例上用于配置本地实例的本地账户或网络账户必须能够以 `sudo` 或 `root` 身份（对于 Ubuntu Server）或者以管理员身份（对于 Windows Server）运行。

**IAM 权限**

您在注册本地实例时使用的 IAM 身份必须具有完成注册的权限（以及在需要时取消注册本地实例的权限）。

请确保发出调用的 IAM 身份除了拥有[第 3 步：限制 CodeDeploy 用户的权限](getting-started-policy.md)中所述的策略之外，还另外附加了以下策略：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow", 
      "Action": [
        "iam:CreateAccessKey",
        "iam:CreateUser",
        "iam:DeleteAccessKey",
        "iam:DeleteUser",
        "iam:DeleteUserPolicy",
        "iam:ListAccessKeys",
        "iam:ListUserPolicies",
        "iam:PutUserPolicy",
        "iam:GetUser"
      ],
      "Resource": "*"
    }
  ]
}
```

------

有关如何附加 IAM policy 的信息，请参阅[管理 IAM policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html)。

# 向注册本地实例 CodeDeploy
<a name="on-premises-instances-register"></a>

要注册本地实例，必须使用 IAM 身份来对您的请求进行身份验证。您可以针对您使用的 IAM 身份和注册方法从以下选项中进行选择：
+ 使用 IAM 角色 ARN 对请求进行身份验证。
  + 使用[register-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/register-on-premises-instance.html)命令并定期刷新通过 AWS Security Token Service (AWS STS) 生成的临时凭证来手动配置大多数注册选项。此选项提供了最高级别的安全性，因为身份验证是使用临时令牌进行的，该令牌会超时，必须定期刷新。建议将此选项用于任何规模的生产部署。有关信息，请参阅[使用 register-on-premises-instance命令（IAM 会话 ARN）注册本地实例](register-on-premises-instance-iam-session-arn.md)。
+ （不推荐）使用 IAM 用户 ARN 对请求进行身份验证。
  + 使用 [register](https://docs.aws.amazon.com/cli/latest/reference/deploy/register.html) 命令执行高度自动化的注册过程。此选项仅适用于安全性要求较低的非生产部署。此选项不太安全，因为它使用静态（永久）凭证进行身份验证。此选项适用于注册单个本地实例。有关信息，请参阅[使用 register 命令（IAM 用户 ARN）注册本地实例](instances-on-premises-register-instance.md)。
  + 使用 [register-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/register-on-premises-instance.html) 命令手动设置大多数注册选项。适合注册少量内部实例的情况。有关信息，请参阅[使用 register-on-premises-instance命令（IAM 用户 ARN）注册本地实例](register-on-premises-instance-iam-user-arn.md)。

**Topics**
+ [使用 register-on-premises-instance命令（IAM 会话 ARN）注册本地实例](register-on-premises-instance-iam-session-arn.md)
+ [使用 register 命令（IAM 用户 ARN）注册本地实例](instances-on-premises-register-instance.md)
+ [使用 register-on-premises-instance命令（IAM 用户 ARN）注册本地实例](register-on-premises-instance-iam-user-arn.md)

# 使用 register-on-premises-instance命令（IAM 会话 ARN）注册本地实例
<a name="register-on-premises-instance-iam-session-arn"></a>

为了最大限度地控制本地实例的身份验证和注册，您可以使用[register-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/register-on-premises-instance.html)命令并定期刷新通过 AWS Security Token Service (AWS STS) 生成的临时证书。实例的静态 IAM 角色扮演这些刷新的 AWS STS 证书的角色来执行 CodeDeploy 部署操作。

当您需要注册大量实例时，此方法非常有用。它允许您使用自动完成注册过程 CodeDeploy。您可以使用自己的身份和身份验证系统对本地实例进行身份验证，并将服务中的 IAM 会话证书分发给实例以供使用 CodeDeploy。

**注意**  
或者，您可以使用分布到所有本地实例的共享 IAM 用户调用 AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API 来检索本地实例的会话证书。此方法安全性较低，建议不要用于生产或关键任务型环境。

使用以下主题中的信息，使用生成的临时安全证书配置本地实例 AWS STS。

**Topics**
+ [IAM 会话 ARN 注册前提条件](#register-on-premises-instance-iam-session-arn-prerequisites)
+ [步骤 1：创建本地实例将担任的 IAM 角色](#register-on-premises-instance-iam-session-arn-1)
+ [步骤 2：使用为单个实例生成临时证书 AWS STS](#register-on-premises-instance-iam-session-arn-2)
+ [步骤 3：将配置文件添加到本地实例](#register-on-premises-instance-iam-session-arn-3)
+ [步骤 4：为部署准备本地实例 CodeDeploy](#register-on-premises-instance-iam-session-arn-4)
+ [步骤 5：向注册本地实例 CodeDeploy](#register-on-premises-instance-iam-session-arn-5)
+ [步骤 6：标记本地实例](#register-on-premises-instance-iam-session-arn-6)
+ [步骤 7：将应用程序修订部署到本地实例](#register-on-premises-instance-iam-session-arn-7)
+ [步骤 8：跟踪对本地实例的部署](#register-on-premises-instance-iam-session-arn-8)

## IAM 会话 ARN 注册前提条件
<a name="register-on-premises-instance-iam-session-arn-prerequisites"></a>

除了在 [配置本地实例的先决条件](instances-on-premises-prerequisites.md) 中列出的前提条件之外，还必须满足以下要求：

**IAM 权限**

必须向用于注册本地实例的 IAM 身份授予执行 CodeDeploy 操作的权限。确保 **AWSCodeDeployFullAccess** 托管策略已附加到该 IAM 身份。有关更多信息，请参阅《IAM 用户指南》**中的 [AWS 托管策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

**用于刷新临时凭证的系统**

如果您使用 IAM 会话 ARN 注册本地实例，则您必须有一个系统来定期刷新该临时凭证。如果在生成凭证时指定的期限较短，临时凭证会在一小时（或更短时间）后过期。有两种刷新凭证的方法：
+ **方法 1**：使用您的企业网络中的身份和身份验证系统以及一个 CRON 脚本，该脚本定期轮询该身份和身份验证系统，并将最新的会话凭证复制到该实例。这使您能够将身份验证和身份结构与集成，而 AWS 无需更改 CodeDeploy 代理或服务以支持您在组织中使用的身份验证类型。
+ **方法 2**：定期在实例上运行 CRON 作业以调用 AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)操作并将会话凭证写入 CodeDeploy 代理可以访问的文件。此方法仍需要使用 IAM 用户并将凭证复制到本地实例，但您可以对您的各个本地实例重复使用相同的 IAM 用户和凭证。

**注意**  
无论您使用的是方法 1 还是方法 2，都必须设置一个进程，以便在临时会话证书更新后重新启动 CodeDeploy 代理，这样新的凭证才能生效。

有关创建和使用 AWS STS 证书的信息，请参阅 [AWS Security Token Service API 参考](https://docs.aws.amazon.com/STS/latest/APIReference/)和[使用临时安全证书请求访问 AWS 资源](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)。

## 步骤 1：创建本地实例将担任的 IAM 角色
<a name="register-on-premises-instance-iam-session-arn-1"></a>

您可以使用 AWS CLI 或 IAM 控制台创建 IAM 角色，您的本地实例将使用该角色进行身份验证和交互 CodeDeploy。

您只需要创建一个 IAM 角色。您的每个本地实例都可以担任此角色，以获取为此角色提供权限的临时安全凭证。

您创建的角色需要以下权限才能访问安装 CodeDeploy 代理所需的文件：

------
#### [ JSON ]

****  

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

------

我们建议您将此策略限制为您的本地实例需要访问的那些 Amazon S3 存储桶。如果您限制此策略，请确保允许访问包含 CodeDeploy 代理的 Amazon S3 存储桶。否则，每当在本地实例上安装或更新 CodeDeploy 代理时，都可能出现错误。有关如何控制对 Amazon S3 存储桶的访问权限的更多信息，请参阅[管理您的 Amazon S3 资源的访问权限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)。

**创建 IAM 角色**

1. 调用 [create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html) 命令，同时使用 `--role-name` 选项指定 IAM 角色的名称（例如 `CodeDeployInstanceRole`），并使用 `--assume-role-policy-document` 选项提供权限。

   为此实例创建 IAM 角色时，您可以为其指定角色名称 `CodeDeployInstanceRole`，并在名为 `CodeDeployRolePolicy.json` 的文件中提供所需的权限：

   ```
   aws iam create-role --role-name CodeDeployInstanceRole --assume-role-policy-document file://CodeDeployRolePolicy.json
   ```

1. 在调用 **create-role** 命令的输出中，记录 ARN 字段的值。例如：

   ```
   arn:aws:iam::123456789012:role/CodeDeployInstanceRole
   ```

   当您使用 AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)API 为每个实例生成短期证书时，您将需要角色 ARN。

   有关创建 IAM 角色的更多信息，请参阅 I [A *M 用户指南*中的创建角色以向 AWS 服务委派权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

   有关为现有角色分配权限的信息，请参阅[AWS CLI 命令参考[put-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-policy.html)](https://docs.aws.amazon.com/cli/latest/reference/)中的。

## 步骤 2：使用为单个实例生成临时证书 AWS STS
<a name="register-on-premises-instance-iam-session-arn-2"></a>

在生成将用于注册本地实例的临时凭证之前，必须创建或选择您将为其生成临时凭证的 IAM 身份（用户或角色）。在此 IAM 身份的策略设置中，必须包含 `sts:AssumeRole` 权限。

有关向 IAM 身份授予`sts:AssumeRole`权限的信息，请参阅[创建向 AWS 服务委派权限的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)和[AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)。

有两种生成临时凭证的方法：
+ 将 [assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) 命令与 AWS CLI结合使用。例如：

  ```
  aws sts assume-role --role-arn arn:aws:iam::12345ACCOUNT:role/role-arn --role-session-name session-name
  ```

  其中：
  + *12345ACCOUNT*是贵组织的 12 位账号。
  + *role-arn*是你在中生成的要担任的角色的 ARN。[步骤 1：创建本地实例将担任的 IAM 角色](#register-on-premises-instance-iam-session-arn-1)
  + *session-name*是您要为现在正在创建的角色会话起的名称。
**注意**  
如果您使用定期轮询身份和身份验证系统并将最新的会话凭证复制到实例的 CRON 脚本（用于刷新临时证书的方法 1，如所述[IAM 会话 ARN 注册前提条件](#register-on-premises-instance-iam-session-arn-prerequisites)），则可以改用任何支持的 AWS 软件开发工具包进行调[AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)用。
+ 使用提供的工具 AWS。

  该 aws-codedeploy-session-helper工具会生成 AWS STS 凭证并将其写入您放置在实例上的文件中。此工具最适用于 [IAM 会话 ARN 注册前提条件](#register-on-premises-instance-iam-session-arn-prerequisites) 中所述的用于刷新临时凭证的方法 2。在此方法中，该 aws-codedeploy-session-helper工具放在每个实例上，并使用 IAM 用户的权限执行命令。每个实例都将相同的 IAM 用户凭证与此工具结合使用。

  有关更多信息，请参阅[aws-codedeploy-session-helper](https://github.com/awslabs/aws-codedeploy-samples/tree/master/utilities/aws-codedeploy-session-helper) GitHub 存储库。
**注意**  
在您创建 IAM 会话凭证之后，请将它们置于本地实例上的任何位置。在下一步中，您将配置 CodeDeploy 代理以访问此位置的凭证。

在继续操作之前，请确保您将用来定期刷新临时凭证的系统已经准备就绪。如果未刷新临时凭证，则部署到本地实例的操作将失败。有关更多信息，请参阅 [IAM 会话 ARN 注册前提条件](#register-on-premises-instance-iam-session-arn-prerequisites) 中的“用于刷新临时凭证的系统”。

## 步骤 3：将配置文件添加到本地实例
<a name="register-on-premises-instance-iam-session-arn-3"></a>

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

1. 使用文本编辑器将以下信息添加到新创建的 `codedeploy.onpremises.yml` 文件（Linux）或 `conf.onpremises.yml` 文件（Windows）：

   ```
   ---
   iam_session_arn: iam-session-arn
   aws_credentials_file: credentials-file
   region: supported-region
   ```

   其中：
   + *iam-session-arn*是您在中记下的 IAM 会话 ARN。[步骤 2：使用为单个实例生成临时证书 AWS STS](#register-on-premises-instance-iam-session-arn-2)
   + *credentials-file*是临时会话 ARN 的证书文件的位置，如中所述。[步骤 2：使用为单个实例生成临时证书 AWS STS](#register-on-premises-instance-iam-session-arn-2)
   + *supported-region*是 CodeDeploy支持的区域之一，如中的[区域和终端节点](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)中所列*AWS 一般参考*。

## 步骤 4：为部署准备本地实例 CodeDeploy
<a name="register-on-premises-instance-iam-session-arn-4"></a>

**安装和配置 AWS CLI **

在本地实例 AWS CLI 上安装和配置。（ AWS CLI 将用于在本地实例上下载和安装 CodeDeploy 代理。） 

1. 要在本地实例 AWS CLI 上安装，请按照*AWS Command Line Interface 用户指南*中的[开始设置 AWS CLI中的说明进行](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)操作。
**注意**  
CodeDeploy 用于处理本地实例的命令已在 1.7.19 版本中提供。 AWS CLI如果您 AWS CLI 已经安装了的版本，则可以通过调用来检查其版本**aws --version**。

1. 要在本地实例 AWS CLI 上配置，请按照*AWS Command Line Interface 用户指南*中的[配置 AWS CLI中的](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)说明进行操作。
**重要**  
在配置时 AWS CLI （例如，通过调用**aws configure**命令），请务必指定至少具有中所述权限的 IAM 用户的私有密钥 ID 和私有访问密钥[IAM 会话 ARN 注册前提条件](#register-on-premises-instance-iam-session-arn-prerequisites)。

**设置 AWS\$1REGION环境变量（仅限 Ubuntu 服务器和 RHEL）**

如果您没有在本地实例上运行 Ubuntu Server 或 RHEL，请跳过此步骤，直接转到 “安装代理”。 CodeDeploy 

在 Ubuntu 服务器或 RHEL 本地实例上安装代 CodeDeploy 理，并允许实例在新版本 CodeDeploy 可用时更新代理。为此，您可以将实例上的 `AWS_REGION` 环境变量设置为 CodeDeploy 支持的某个区域的标识符。我们建议您将该值设置为 CodeDeploy 应用程序、部署组和应用程序修订所在的区域（例如`us-west-2`）。有关区域的列表，请参阅《AWS 一般参考》**中的[区域和终端节点](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)。

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

```
export AWS_REGION=supported-region
```

哪里*supported-region*是区域标识符（例如，`us-west-2`）。

**安装代 CodeDeploy 理**
+ 对于 Ubuntu Server 本地实例，请按照[为 Ubuntu 服务器安装 CodeDeploy 代理](codedeploy-agent-operations-install-ubuntu.md)中的说明操作，然后返回本页。
+ 对于 RHEL 本地实例，请按照[安装适用于亚马逊 Linux 或 RHEL 的 CodeDeploy 代理](codedeploy-agent-operations-install-linux.md)中的说明操作，然后返回本页。
+ 对于 Windows Server 本地实例，请按照[安装适用于 Windows 服务器的 CodeDeploy 代理](codedeploy-agent-operations-install-windows.md)中的说明操作，然后返回本页。

## 步骤 5：向注册本地实例 CodeDeploy
<a name="register-on-premises-instance-iam-session-arn-5"></a>

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

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

在使用之前 AWS CLI，您需要在中创建的临时会话证书的 ARN。[步骤 3：将配置文件添加到本地实例](#register-on-premises-instance-iam-session-arn-3)例如，对于您指定为 `AssetTag12010298EX` 的实例：

```
arn:sts:iam::123456789012:assumed-role/CodeDeployInstanceRole/AssetTag12010298EX
```

调用 [register-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/register-on-premises-instance.html) 命令，在命令中指定：
+  唯一标识本地实例的名称（使用 `--instance-name` 选项）。
**重要**  
为了帮助标识本地实例，特别是用于调试用途，我们强烈建议您指定能够反映本地实例的某种唯一特性的名称（例如，在适用时可以指定 STS 凭证的会话名称以及序列号或内部资产标识符）。如果您指定 MAC 地址作为名称，请注意 MAC 地址包含 CodeDeploy 不允许使用的字符，例如冒号 (:)。有关允许字符的列表，请参阅[CodeDeploy 配额](limits.md)。
+ 您在[步骤 1：创建本地实例将担任的 IAM 角色](#register-on-premises-instance-iam-session-arn-1)中设置以对多个本地实例进行身份验证的 IAM 会话 ARN。

例如：

```
aws deploy register-on-premises-instance --instance-name name-of-instance --iam-session-arn arn:aws:sts::account-id:assumed-role/role-to-assume/session-name
```

其中：
+ *name-of-instance*是您用来标识本地实例的名称，例如`AssetTag12010298EX`。
+ *account-id*是贵组织的 12 位数账户 ID，例如`111222333444`。
+ *role-to-assume*是您为实例创建的 IAM 角色的名称，例如`CodeDeployInstanceRole`。
+ *session-name*是您在中指定的会话角色的名称[步骤 2：使用为单个实例生成临时证书 AWS STS](#register-on-premises-instance-iam-session-arn-2)。

## 步骤 6：标记本地实例
<a name="register-on-premises-instance-iam-session-arn-6"></a>

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

**标记本地实例（CLI）**
+ 调用-premis [add-tags-to-ones-instances 命令，](https://docs.aws.amazon.com/cli/latest/reference/deploy/add-tags-to-on-premises-instances.html)指定：
  + 唯一标识本地实例的名称（使用 `--instance-names` 选项）。
  + 您要使用的本地实例标签密钥的名称和标签值（使用 `--tags` 选项）。必须同时指定名称和值。 CodeDeploy 不允许仅包含值的本地实例标签。

    例如：

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

**标记本地实例（控制台）**

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/codede](https://console.aws.amazon.com/codedeploy) ploy 上打开 CodeDeploy 控制台。
**注意**  
使用您在[入门 CodeDeploy](getting-started-codedeploy.md)中设置的同一用户登录。

1. 在导航窗格中，展开**部署**，然后选择**本地实例**。

1. 在本地实例列表中，选择要标记的本地实例名称。

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

1. 在您添加标签之后，选择 **Update Tags**。

## 步骤 7：将应用程序修订部署到本地实例
<a name="register-on-premises-instance-iam-session-arn-7"></a>

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

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

**重要**  
如果您在创建以本地实例为目标的部署组时重复使用 CodeDeploy 服务角色，则必须在该服务角色的策略声明`Action`部分中包含`Tag:get*`该服务角色。有关更多信息，请参阅 [步骤 2：为创建服务角色 CodeDeploy](getting-started-create-service-role.md)。

## 步骤 8：跟踪对本地实例的部署
<a name="register-on-premises-instance-iam-session-arn-8"></a>

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

跟踪对本地实例的部署的方法与跟踪对 Amazon EC2 实例的部署的方法类似。有关说明，请参阅[查看 CodeDeploy 部署详情](deployments-view-details.md)。

# 使用 register 命令（IAM 用户 ARN）注册本地实例
<a name="instances-on-premises-register-instance"></a>

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

**重要**  
确保您制定了轮换 IAM 用户的访问密钥（永久凭证）的计划。有关更多信息，请参阅[轮换访问密钥](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey)。

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

当你使用该**register**命令时，你可以让它 CodeDeploy 执行以下操作：
+ 如果您未使用命令指定 IAM 用户，请在中 AWS Identity and Access Management 为本地实例创建 IAM 用户。
+ 将该 IAM 用户的凭证保存到本地实例配置文件中。
+ 向注册本地实例 CodeDeploy。
+ 如果您在命令中指定了标签，则向本地实例添加标签。

**注意**  
该[register-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/register-on-premises-instance.html)命令是[寄存器](https://docs.aws.amazon.com/cli/latest/reference/deploy/register.html)命令的替代命令。如果您希望主要靠自己使用 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-user-arn.md)和[使用 register-on-premises-instance命令（IAM 会话 ARN）注册本地实例](register-on-premises-instance-iam-session-arn.md)。

**Topics**
+ [步骤 1：在本地实例 AWS CLI 上安装和配置](#instances-on-premises-register-instance-1-install-cli)
+ [步骤 2：调用 register 命令](#instances-on-premises-register-instance-2-register-command)
+ [步骤 3：调用 install 命令](#instances-on-premises-register-instance-3-install-command)
+ [步骤 4：将应用程序修订部署到本地实例](#instances-on-premises-register-instance-4-deploy-revision)
+ [步骤 5：跟踪对本地实例的部署](#instances-on-premises-register-instance-5-track-deployment)

## 步骤 1：在本地实例 AWS CLI 上安装和配置
<a name="instances-on-premises-register-instance-1-install-cli"></a>

1. 在本地实例 AWS CLI 上安装。请按照《AWS Command Line Interface 用户指南》**的[使用 AWS CLI进行设置](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)中的说明操作。
**注意**  
CodeDeploy 1.7.19 及更高 AWS CLI 版本中提供了用于使用本地实例的命令。如果您 AWS CLI 已经安装了，请**aws --version**致电查看其版本。

1. 在本地实例 AWS CLI 上配置。按照《AWS Command Line Interface 用户指南》**的[配置 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) 中的说明进行操作。
**重要**  
在配置时 AWS CLI （例如，通过调用**aws configure**命令），请务必指定除中指定的权限之外还至少具有以下访问权限的 IAM 用户的密钥 ID 和私有 AWS 访问密钥[配置本地实例的先决条件](instances-on-premises-prerequisites.md)。这使得在本地实例上下载和安装 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:getTagKeys",
           "tag:getTagValues",
           "tag:GetResources"
         ],
         "Resource" : "*"
       },
       {
         "Effect" : "Allow",
         "Action" : [
           "s3:Get*",
           "s3:List*"
         ],
         "Resource" : [
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-bucket1/*"
         ]
       }     
     ]
   }
   ```
如果您在尝试访问前面显示的 Amazon S3 存储桶时看到访问被拒绝错误，请尝试省略该存储桶的资源 ARN 的 `/*` 部分，例如，`arn:aws:s3:::aws-codedeploy-sa-east-1`。

****  

   ```
   {
     "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:GetResources"
         ],
         "Resource" : "*"
       },
       {
         "Effect" : "Allow",
         "Action" : [
           "s3:Get*",
           "s3:List*"
         ],
         "Resource" : [
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-bucket2/*"
         ]
       }     
     ]
   }
   ```

## 步骤 2：调用 register 命令
<a name="instances-on-premises-register-instance-2-register-command"></a>

在这一步中，我们假设您从本地实例本身注册该本地实例。您也可以从单独的设备或实例注册本地实例，该设备或实例已按上一步所述 AWS CLI 安装和配置了本地实例。

使用调用 AWS CLI regist [er](https://docs.aws.amazon.com/cli/latest/reference/deploy/register.html) 命令，指定：
+ 用于唯一标识本地实例的名称 CodeDeploy （带`--instance-name`选项）。
**重要**  
为了帮助在以后标识本地实例，特别是用于调试用途，我们强烈建议您使用的名称能够映射到本地实例的某种唯一特性（例如，在适用时可以使用序列号或唯一内部资产标识符）。如果您为名称指定 MAC 地址，请注意 MAC 地址包含 CodeDeploy 不允许使用的字符，例如冒号 (`:`)。有关允许字符的列表，请参阅[CodeDeploy 配额](limits.md)。
+ （可选）您希望与此本地实例关联的现有 IAM 用户的 ARN（使用 `--iam-user-arn` 选项）。要获取 IAM 用户的 ARN，请调用 [get-user](https://docs.aws.amazon.com/cli/latest/reference/iam/get-user.html) 命令，或者在 IAM 控制台的**用户**部分中选择 IAM 用户名，然后在**摘要**部分找到**用户 ARN** 值。如果未指定此选项，则 CodeDeploy 将在您的 AWS 账户中代表您创建一个 IAM 用户，并将其与本地实例关联。
**重要**  
如果您指定了 `--iam-user-arn` 选项，则还必须手动创建本地实例配置文件，如[步骤 4：将配置文件添加到本地实例](register-on-premises-instance-iam-user-arn.md#register-on-premises-instance-iam-user-arn-4)中所述。  
 您只能将一个 IAM 用户与一个本地实例关联。尝试将一个 IAM 用户与多个本地实例关联会导致出错，对这些本地实例的部署将失败，或者对这些本地实例的部署会停滞在永久等待的状态。
+ （可选）一组本地实例标签（带`--tags`选项）， CodeDeploy 用于标识要部署到的 Amazon EC2 实例集。使用 `Key=tag-key,Value=tag-value` 指定各个标签（例如，`Key=Name,Value=Beta Key=Name,Value=WestRegion`）。如果未指定此选项，将不注册标签。要稍后注册标签，请调用-premises [add-tags-to-on-instances 命令](https://docs.aws.amazon.com/cli/latest/reference/deploy/add-tags-to-on-premises-instances.html)。
+ （可选）将在其中注册本地实例的 AWS 区域 CodeDeploy （带`--region`选项）。这必须是 *AWS 一般参考*的[区域和终端节点](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)中列出的受支持区域之一（例如 `us-west-2`）。如果未指定此选项，则将使用与调用 IAM 用户关联的默认 AWS 区域。

例如：

```
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。

1. 向注册本地实例 CodeDeploy。

1. 如果指定，则 CodeDeploy 将使用`--tags`选项指定的标签与注册的本地实例名称相关联。

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

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

## 步骤 3：调用 install 命令
<a name="instances-on-premises-register-instance-3-install-command"></a>

在本地实例中，使用调 AWS CLI 用[安装](https://docs.aws.amazon.com/cli/latest/reference/deploy/install.html)命令，指定：
+ 配置文件的路径（使用 `--config-file` 选项）。
+ （可选）是否替换本地实例上已存在的配置文件（使用 `--override-config` 选项）。如果未指定，则不替换现有配置文件。
+ （可选）将在其中注册本地实例的 AWS 区域 CodeDeploy （带`--region`选项）。这必须是 *AWS 一般参考*的[区域和终端节点](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)中列出的受支持区域之一（例如 `us-west-2`）。如果未指定此选项，则将使用与调用 IAM 用户关联的默认 AWS 区域。
+ （可选）安装 CodeDeploy 代理的自定义位置（带`--agent-installer`选项）。此选项对于安装 CodeDeploy 不正式支持的 CodeDeploy 代理的自定义版本（例如基于中[CodeDeploy代理](https://github.com/aws/aws-codedeploy-agent)存储库的自定义版本 GitHub）非常有用。该值必须是指向包含以下二者之一的 Amazon S3 存储桶的路径：
  +  CodeDeploy 代理安装脚本（适用于基于 Linux 或 UNIX 的操作系统，类似于中[CodeDeploy代理](https://github.com/aws/aws-codedeploy-agent/blob/master/bin/install)存储库中的 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 实例。如果是，则将显示错误消息。

1. 将本地实例配置文件从实例上的指定位置复制到 CodeDeploy 代理期望找到的位置，前提是该文件尚未位于该位置。

   对于 Ubuntu Server 和 Red Hat Enterprise Linux（RHEL），这是 `/etc/codedeploy-agent/conf`/`codedeploy.onpremises.yml`。

   对于 Windows Server，这是 `C:\ProgramData\Amazon\CodeDeploy`\$1`conf.onpremises.yml`。

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

1. 在本地实例上安装 CodeDeploy 代理，然后启动它。

## 步骤 4：将应用程序修订部署到本地实例
<a name="instances-on-premises-register-instance-4-deploy-revision"></a>

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

将应用程序修订部署到本地实例的方法类似于将应用程序修订部署到 Amazon EC2 实例。有关说明，请参阅[使用创建部署 CodeDeploy](deployments-create.md)。这些说明链接到各种先决条件，包括创建应用程序、创建部署组和准备应用程序修订。如果您希望部署简单的示例应用程序修订，可以创建[教程：使用 CodeDeploy （Windows 服务器、Ubuntu 服务器或红帽企业 Linux）将应用程序部署到本地实例](tutorials-on-premises-instance.md)的[步骤 2：创建示例应用程序修订](tutorials-on-premises-instance-2-create-sample-revision.md)中所述的修订。

**重要**  
如果您在创建以本地实例为目标的部署组时重复使用现有 CodeDeploy 服务角色，则必须在该服务角色的策略声明`Action`部分中包含`Tag:get*`该服务角色。有关更多信息，请参阅 [步骤 2：为创建服务角色 CodeDeploy](getting-started-create-service-role.md)。

## 步骤 5：跟踪对本地实例的部署
<a name="instances-on-premises-register-instance-5-track-deployment"></a>

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

跟踪对本地实例的部署的方法与跟踪对 Amazon EC2 实例的部署的方法类似。有关说明，请参阅[查看 CodeDeploy 部署详情](deployments-view-details.md)。

有关更多选项，请参阅[在中管理本地实例的操作 CodeDeploy](on-premises-instances-operations.md)。

# 使用 register-on-premises-instance命令（IAM 用户 ARN）注册本地实例
<a name="register-on-premises-instance-iam-user-arn"></a>

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

**重要**  
确保您制定了轮换 IAM 用户的访问密钥（永久凭证）的计划。有关更多信息，请参阅[轮换访问密钥](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey)。

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

**Topics**
+ [步骤 1：为本地实例创建 IAM 用户](#register-on-premises-instance-iam-user-arn-1)
+ [步骤 2：向 IAM 用户分配权限](#register-on-premises-instance-iam-user-arn-2)
+ [步骤 3：获取 IAM 用户凭证](#register-on-premises-instance-iam-user-arn-3)
+ [步骤 4：将配置文件添加到本地实例](#register-on-premises-instance-iam-user-arn-4)
+ [步骤 5：安装和配置 AWS CLI](#register-on-premises-instance-iam-user-arn-5)
+ [步骤 6：设置 AWS\$1REGION环境变量（仅限 Ubuntu 服务器和 RHEL）](#register-on-premises-instance-iam-user-arn-6)
+ [步骤 7：安装代 CodeDeploy 理](#register-on-premises-instance-iam-user-arn-7)
+ [步骤 8：向注册本地实例 CodeDeploy](#register-on-premises-instance-iam-user-arn-8)
+ [步骤 9：标记本地实例](#register-on-premises-instance-iam-user-arn-9)
+ [步骤 10：将应用程序修订部署到本地实例](#register-on-premises-instance-iam-user-arn-10)
+ [步骤 11：跟踪对本地实例的部署](#register-on-premises-instance-iam-user-arn-11)

## 步骤 1：为本地实例创建 IAM 用户
<a name="register-on-premises-instance-iam-user-arn-1"></a>

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

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

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

您可以使用 AWS CLI 或 IAM 控制台创建 IAM 用户。有关更多信息，请参阅[在您的 AWS 账户中创建 IAM 用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html)。

**重要**  
无论您是使用还是 IAM 控制台创建新的 IAM 用户，都要记下为该用户提供的用户 ARN。 AWS CLI 稍后在[步骤 4：将配置文件添加到本地实例](#register-on-premises-instance-iam-user-arn-4) 和[步骤 8：向注册本地实例 CodeDeploy](#register-on-premises-instance-iam-user-arn-8)中您将需要此信息。

## 步骤 2：向 IAM 用户分配权限
<a name="register-on-premises-instance-iam-user-arn-2"></a>

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

**注意**  
如果要仅从 GitHub 存储库部署应用程序修订版，请跳过此步骤直接转至[步骤 3：获取 IAM 用户凭证](#register-on-premises-instance-iam-user-arn-3)。（您仍需要有关您在[步骤 1：为本地实例创建 IAM 用户](#register-on-premises-instance-iam-user-arn-1)中创建的 IAM 用户的信息。后面的步骤中将会用到这些信息。）

**分配权限（CLI）**

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

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "s3:Get*",
                   "s3:List*"
               ],
               "Effect": "Allow",
               "Resource": "*"
           }
       ]
   }
   ```
**注意**  
我们建议您将此策略限制为您的本地实例需要访问的那些 Amazon S3 存储桶。如果您限制此策略，请确保同时允许访问包含 AWS 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-us-east-2/*",
           "arn:aws:s3:::aws-codedeploy-us-east-1/*",
           "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-west-3/*",
           "arn:aws:s3:::aws-codedeploy-eu-central-1/*",
           "arn:aws:s3:::aws-codedeploy-eu-central-2/*",
           "arn:aws:s3:::aws-codedeploy-eu-north-1/*",
           "arn:aws:s3:::aws-codedeploy-eu-south-1/*",
           "arn:aws:s3:::aws-codedeploy-eu-south-2/*",
           "arn:aws:s3:::aws-codedeploy-il-central-1/*",
           "arn:aws:s3:::aws-codedeploy-ap-east-1/*",
           "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*",
           "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*",
           "arn:aws:s3:::aws-codedeploy-ap-northeast-3/*",
           "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*",        
           "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*",
           "arn:aws:s3:::aws-codedeploy-ap-southeast-3/*",
           "arn:aws:s3:::aws-codedeploy-ap-southeast-4/*",
           "arn:aws:s3:::aws-codedeploy-ap-south-1/*",
           "arn:aws:s3:::aws-codedeploy-ap-south-2/*",
           "arn:aws:s3:::aws-codedeploy-me-central-1/*",
           "arn:aws:s3:::aws-codedeploy-me-south-1/*",
           "arn:aws:s3:::aws-codedeploy-sa-east-1/*"
         ]
       }
     ]
   }
   ```

1. 调用[put-user-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-user-policy.html)命令，指定 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/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中选择 **Policies**，然后选择 **Create Policy**。（如果 **Get Started** 按钮出现，选择此按钮，然后选择 **Create Policy**。）

1. 在 **Create Your Own Policy** 旁，选择 **Select**。

1. 在 **Policy Name（策略名称）**框中，键入此策略的名称（例如，**CodeDeploy-OnPrem-Permissions**）。

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

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

1. 选择**创建策略**。

1. 在导航窗格中，选择 **Users**（用户）。

1. 在用户列表中，浏览并选择在[步骤 1：为本地实例创建 IAM 用户](#register-on-premises-instance-iam-user-arn-1)中创建的 IAM 用户的名称。

1. 在 **Permissions** 选项卡上的 **Managed Policies** 中，选择 **Attach Policy**。

1. 选择名为 **CodeDeploy-OnPrem-Permissions** 的托管策略，然后选择 **Attach Policy（附加策略）**。

## 步骤 3：获取 IAM 用户凭证
<a name="register-on-premises-instance-iam-user-arn-3"></a>

获取 IAM 用户的私有密钥 ID 和秘密访问密钥。您在[步骤 4：将配置文件添加到本地实例](#register-on-premises-instance-iam-user-arn-4) 中需要使用它们。您可以使用 AWS CLI 或 IAM 控制台获取密钥 ID 和私有访问密钥。

**注意**  
如果您已具有私有密钥 ID 和秘密访问密钥，则跳过这一步，直接转到[步骤 4：将配置文件添加到本地实例](#register-on-premises-instance-iam-user-arn-4)。  
如果用户想在 AWS 外部进行交互，则需要编程访问权限 AWS 管理控制台。授予编程访问权限的方式取决于正在访问的用户类型 AWS。  
要向用户授予编程式访问权限，请选择以下选项之一。  


****  

| 哪个用户需要编程式访问权限？ | 目的 | 方式 | 
| --- | --- | --- | 
| IAM | （推荐）使用控制台凭证作为临时凭证，签署对 AWS CLI AWS SDKs、或的编程请求 AWS APIs。 |  按照您希望使用的界面的说明进行操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/register-on-premises-instance-iam-user-arn.html)  | 
|  人力身份 （在 IAM Identity Center 中管理的用户）  | 使用临时证书签署向 AWS CLI AWS SDKs、或发出的编程请求 AWS APIs。 |  按照您希望使用的界面的说明进行操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/register-on-premises-instance-iam-user-arn.html)  | 
| IAM | 使用临时证书签署向 AWS CLI AWS SDKs、或发出的编程请求 AWS APIs。 | 按照 IAM 用户指南中的将[临时证书与 AWS 资源配合使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)中的说明进行操作。 | 
| IAM | （不推荐使用）使用长期凭证签署向 AWS CLI AWS SDKs、或发出的编程请求 AWS APIs。 |  按照您希望使用的界面的说明进行操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/register-on-premises-instance-iam-user-arn.html)  | 

**获取凭证（CLI）**

1. 调用[list-access-keys](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html)命令，指定 IAM 用户的姓名（使用`--user-name`选项），然后仅查询访问密钥 IDs （使用`--query`和`--output`选项）。例如：

   ```
   aws iam list-access-keys --user-name CodeDeployUser-OnPrem --query "AccessKeyMetadata[*].AccessKeyId" --output text
   ```

1. 如果输出中没有显示任何密钥或输出中仅显示有关一个密钥的信息，请调用[create-access-key](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html)命令，指定 IAM 用户的名称（带`--user-name`选项）：

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

   在调用 **create-access-key** 命令的输出中，记录 `AccessKeyId` 和 `SecretAccessKey` 字段的值。在[步骤 4：将配置文件添加到本地实例](#register-on-premises-instance-iam-user-arn-4) 中您将需要此信息。
**重要**  
这是您仅有的一次查看此秘密访问密钥的机会。如果您忘记或丢失了此秘密访问密钥，则需要按照[步骤 3：获取 IAM 用户凭证](#register-on-premises-instance-iam-user-arn-3) 中的步骤生成新的密钥。

1. 如果已经列出了两个访问密钥，则必须通过调用[delete-access-key](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html)命令删除其中一个，指定 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：将配置文件添加到本地实例](#register-on-premises-instance-iam-user-arn-4)中所述使用此访问密钥，则您需要再次按照[步骤 4：将配置文件添加到本地实例](#register-on-premises-instance-iam-user-arn-4)中的说明操作，指定与此 IAM 用户关联的其他访问密钥 ID 和秘密访问密钥。否则，对该本地实例的任何部署可能会停滞在永久等待的状态或完全失败。

**获取凭证（控制台）**

1. 

   1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

   1. 如果用户的列表未显示，则在导航窗格中选择 **Users**。

   1. 在用户列表中，浏览并选择在[步骤 1：为本地实例创建 IAM 用户](#register-on-premises-instance-iam-user-arn-1)中创建的 IAM 用户的名称。

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

   如果列出了两个访问密钥，则必须删除其中之一。选择其中一个访问密钥旁边的 **Delete**，然后选择 **Create access key**。
**重要**  
如果您选择这些访问密钥之一旁边的**删除**，并且本地实例已经按[步骤 4：将配置文件添加到本地实例](#register-on-premises-instance-iam-user-arn-4)中所述使用此访问密钥，则您需要再次按照[步骤 4：将配置文件添加到本地实例](#register-on-premises-instance-iam-user-arn-4)中的说明操作，指定与此 IAM 用户关联的其他访问密钥 ID 和秘密访问密钥。否则，对该本地实例的部署可能会停滞在永久等待的状态或完全失败。

1. 选择 **Show ** 并记录访问密钥 ID 和秘密访问密钥。您在下一步中需要此信息。或者，您可以选择 **Download .csv file** 来保存访问密钥 ID 和秘密访问密钥的副本。
**重要**  
除非您记录或下载了凭证，否则这是您仅有的一次查看此秘密访问密钥的机会。如果您忘记或丢失了此秘密访问密钥，则需要按照[步骤 3：获取 IAM 用户凭证](#register-on-premises-instance-iam-user-arn-3) 中的步骤生成新的密钥。

1. 选择 “**关闭**” 返回到 “**用户*IAM User Name*” >** 页面。

## 步骤 4：将配置文件添加到本地实例
<a name="register-on-premises-instance-iam-user-arn-4"></a>

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

1. 使用文本编辑器将以下信息添加到新创建的 `codedeploy.onpremises.yml` 或 `conf.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
   ```

   其中：
   + *secret-key-id*是您在[步骤 1：为本地实例创建 IAM 用户](#register-on-premises-instance-iam-user-arn-1)或中记下的相应 IAM 用户的密钥 ID [步骤 3：获取 IAM 用户凭证](#register-on-premises-instance-iam-user-arn-3)。
   + *secret-access-key*是您在[步骤 1：为本地实例创建 IAM 用户](#register-on-premises-instance-iam-user-arn-1)或中记下的相应 IAM 用户的私有访问密钥[步骤 3：获取 IAM 用户凭证](#register-on-premises-instance-iam-user-arn-3)。
   + *iam-user-arn*是您在前面提到的 IAM 用户的 ARN。[步骤 1：为本地实例创建 IAM 用户](#register-on-premises-instance-iam-user-arn-1)
   + *supported-region*是您的 CodeDeploy 应用程序、部署组和应用程序修订 CodeDeploy 所在区域所支持的标识符（例如，`us-west-2`）。有关区域的列表，请参阅《AWS 一般参考》**中的[区域和终端节点](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)。

    
**重要**  
如果您在[步骤 3：获取 IAM 用户凭证](#register-on-premises-instance-iam-user-arn-3)中选择这些访问密钥之一旁边的**删除**，并且本地实例已经在使用关联的访问密钥 ID 和秘密访问密钥，则您需要按照[步骤 4：将配置文件添加到本地实例](#register-on-premises-instance-iam-user-arn-4)中的说明操作，指定与此 IAM 用户关联的其他访问密钥 ID 和秘密访问密钥。否则，对您的本地实例的任何部署可能会停滞在永久等待的状态或完全失败。

## 步骤 5：安装和配置 AWS CLI
<a name="register-on-premises-instance-iam-user-arn-5"></a>

在本地实例 AWS CLI 上安装和配置。（ AWS CLI 将在中[步骤 7：安装代 CodeDeploy 理](#register-on-premises-instance-iam-user-arn-7)用于在本地实例上下载和安装 CodeDeploy 代理。）

1. 要在本地实例 AWS CLI 上安装，请按照*AWS Command Line Interface 用户指南*中的[开始设置 AWS CLI中的说明进行](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)操作。
**注意**  
CodeDeploy 用于处理本地实例的命令已在 1.7.19 版本中提供。 AWS CLI如果您 AWS CLI 已经安装了的版本，则可以通过调用来检查其版本**aws --version**。

1. 要在本地实例 AWS CLI 上配置，请按照*AWS Command Line Interface 用户指南*中的[配置 AWS CLI中的](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)说明进行操作。
**重要**  
在配置时 AWS CLI （例如，通过调用**aws configure**命令），请务必指定除中指定的访问权限之外还至少具有以下 AWS 访问权限的 IAM 用户的私有密钥 ID 和私有访问密钥[配置本地实例的先决条件](instances-on-premises-prerequisites.md)。这样，您就可以在本地实例上下载并安装 CodeDeploy 代理：  
   

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement" : [
       {
         "Effect" : "Allow",
         "Action" : [
           "codedeploy:*"
         ],
         "Resource" : "*"
       },
       {
         "Effect" : "Allow",
         "Action" : [
           "s3:Get*",
           "s3:List*"
         ],
         "Resource" : [
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-bucket1/*"
         ]
       }     
     ]
   }
   ```

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement" : [
       {
         "Effect" : "Allow",
         "Action" : [
           "codedeploy:*"
         ],
         "Resource" : "*"
       },
       {
         "Effect" : "Allow",
         "Action" : [
           "s3:Get*",
           "s3:List*"
         ],
         "Resource" : [
           "*"
         ]
       }     
     ]
   }
   ```
这些访问权限可以分配给您在[步骤 1：为本地实例创建 IAM 用户](#register-on-premises-instance-iam-user-arn-1)中创建的 IAM 用户或者其他 IAM 用户。要将这些权限分配给 IAM 用户，请按照[步骤 1：为本地实例创建 IAM 用户](#register-on-premises-instance-iam-user-arn-1)中的说明操作，并使用这些访问权限而不是该步骤中的权限。

## 步骤 6：设置 AWS\$1REGION环境变量（仅限 Ubuntu 服务器和 RHEL）
<a name="register-on-premises-instance-iam-user-arn-6"></a>

如果您的本地实例上没有运行 Ubuntu Server 或 RHEL，则跳过此步骤，直接转到[步骤 7：安装代 CodeDeploy 理](#register-on-premises-instance-iam-user-arn-7)。

在 Ubuntu 服务器或 RHEL 本地实例上安装代 CodeDeploy 理，并允许该实例在新版本 CodeDeploy 可用时更新代理。为此，您可以将实例上的 `AWS_REGION` 环境变量设置为 CodeDeploy 支持的某个区域的标识符。我们建议您将该值设置为 CodeDeploy 应用程序、部署组和应用程序修订所在的区域（例如`us-west-2`）。有关区域的列表，请参阅《AWS 一般参考》**中的[区域和终端节点](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)。

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

```
export AWS_REGION=supported-region
```

哪里*supported-region*是区域标识符（例如，`us-west-2`）。

## 步骤 7：安装代 CodeDeploy 理
<a name="register-on-premises-instance-iam-user-arn-7"></a>

在本地实例上安装 CodeDeploy 代理：
+ 对于 Ubuntu Server 本地实例，请按照[为 Ubuntu 服务器安装 CodeDeploy 代理](codedeploy-agent-operations-install-ubuntu.md)中的说明操作，然后返回本页。
+ 对于 RHEL 本地实例，请按照[安装适用于亚马逊 Linux 或 RHEL 的 CodeDeploy 代理](codedeploy-agent-operations-install-linux.md)中的说明操作，然后返回本页。
+ 对于 Windows Server 本地实例，请按照[安装适用于 Windows 服务器的 CodeDeploy 代理](codedeploy-agent-operations-install-windows.md)中的说明操作，然后返回本页。

## 步骤 8：向注册本地实例 CodeDeploy
<a name="register-on-premises-instance-iam-user-arn-8"></a>

这一步中的说明假设您从本地实例本身上注册该本地实例。您可以从单独的设备或已 AWS CLI 安装和配置的实例注册本地实例，如中所述[步骤 5：安装和配置 AWS CLI](#register-on-premises-instance-iam-user-arn-5)。

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

1. 在使用之前 AWS CLI，您需要在中创建的 IAM 用户的用户 ARN。[步骤 1：为本地实例创建 IAM 用户](#register-on-premises-instance-iam-user-arn-1)如果您还没有用户 ARN，请调用 [get-user](https://docs.aws.amazon.com/cli/latest/reference/iam/get-user.html) 命令，在命令中指定 IAM 用户的名称（使用 `--user-name` 选项）并仅查询用户 ARN（使用 `--query` 和 `--output` 选项）：

   ```
   aws iam get-user --user-name CodeDeployUser-OnPrem --query "User.Arn" --output text
   ```

1. 调用 [register-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/register-on-premises-instance.html) 命令，在命令中指定：
   + 唯一标识本地实例的名称（使用 `--instance-name` 选项）。
**重要**  
为了帮助标识本地实例，特别是用于调试用途，我们强烈建议您指定能够反映本地实例的某种唯一特性的名称（例如，在适用时可以指定序列号或内部资产标识符）。如果指定 MAC 地址作为名称，请注意 MAC 地址包含 CodeDeploy 不允许使用的字符，例如冒号 (`:`)。有关允许字符的列表，请参阅[CodeDeploy 配额](limits.md)。
   + 您在[步骤 1：为本地实例创建 IAM 用户](#register-on-premises-instance-iam-user-arn-1)中创建的 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：标记本地实例
<a name="register-on-premises-instance-iam-user-arn-9"></a>

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

**标记本地实例（CLI）**
+ 调用-premis [add-tags-to-ones-instances 命令，](https://docs.aws.amazon.com/cli/latest/reference/deploy/add-tags-to-on-premises-instances.html)指定：

   
  + 唯一标识本地实例的名称（使用 `--instance-names` 选项）。
  + 您要使用的本地实例标签密钥的名称和标签值（使用 `--tags` 选项）。必须同时指定名称和值。 CodeDeploy 不允许仅包含值的本地实例标签。

    例如：

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

**标记本地实例（控制台）**

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/codede](https://console.aws.amazon.com/codedeploy) ploy 上打开 CodeDeploy 控制台。
**注意**  
使用您在[入门 CodeDeploy](getting-started-codedeploy.md)中设置的同一用户登录。

1. 从 CodeDeploy 菜单中选择**本地实例**。

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

1. 在标签列表中，选择或输入所需的标签键和标签值。当您输入标签键和标签值之后，将显示另一行。您可以重复此步骤，最多添加 10 个标签。要删除标签，请选择删除图标（![\[The delete icon.\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/images/delete-triggers-x.png)）。

1. 在您添加标签之后，选择 **Update Tags**。

## 步骤 10：将应用程序修订部署到本地实例
<a name="register-on-premises-instance-iam-user-arn-10"></a>

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

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

**重要**  
如果您在创建以本地实例为目标的部署组时重复使用 CodeDeploy 服务角色，则必须在该服务角色的策略声明`Action`部分中包含`Tag:get*`该服务角色。有关更多信息，请参阅 [步骤 2：为创建服务角色 CodeDeploy](getting-started-create-service-role.md)。

## 步骤 11：跟踪对本地实例的部署
<a name="register-on-premises-instance-iam-user-arn-11"></a>

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

跟踪对本地实例的部署的方法与跟踪对 Amazon EC2 实例的部署的方法类似。有关说明，请参阅[查看 CodeDeploy 部署详情](deployments-view-details.md)。

# 在中管理本地实例的操作 CodeDeploy
<a name="on-premises-instances-operations"></a>

注册本地实例后，请按照本节中的说明管理本地实例的操作 CodeDeploy，例如获取有关本地实例的更多信息、从中删除标签、卸载和取消注册本地实例。

**Topics**
+ [获取有关单个本地实例的信息](on-premises-instances-operations-view-details-single.md)
+ [获取有关多个本地实例的信息](on-premises-instances-operations-view-details-multiple.md)
+ [从本地实例中手动删除本地实例标签](on-premises-instances-operations-remove-tags.md)
+ [自动卸载 CodeDeploy 代理并从本地实例中删除配置文件](on-premises-instances-operations-uninstall-agent.md)
+ [自动注销本地实例](on-premises-instances-operations-deregister-automatically.md)
+ [手动取消注册本地实例](on-premises-instances-operations-deregister-manually.md)

# 获取有关单个本地实例的信息
<a name="on-premises-instances-operations-view-details-single"></a>

您可以按照[查看 CodeDeploy 部署详情](deployments-view-details.md)中的说明获取有关单个本地实例的信息。您可以使用 AWS CLI 或 CodeDeploy 控制台获取有关单个本地实例的更多信息。

**获取有关单个本地实例的信息（CLI）**
+ 调用 [get-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/get-on-premises-instance.html) 命令，在命令中指定唯一标识本地实例的名称（使用 `--instance-name` 选项）：

  ```
  aws deploy get-on-premises-instance --instance-name AssetTag12010298EX
  ```

**获取有关单个本地实例的信息（控制台）**

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/codede](https://console.aws.amazon.com/codedeploy) ploy 上打开 CodeDeploy 控制台。
**注意**  
使用您在[入门 CodeDeploy](getting-started-codedeploy.md)中设置的同一用户登录。

1. 在导航窗格中，展开**部署**，然后选择**本地实例**。

1. 在本地实例列表中，选择本地实例的名称以查看其详细信息。

# 获取有关多个本地实例的信息
<a name="on-premises-instances-operations-view-details-multiple"></a>

您可以按照[查看 CodeDeploy 部署详情](deployments-view-details.md)中的说明获取有关本地实例的信息。您可以使用 AWS CLI 或 CodeDeploy 控制台获取有关本地实例的更多信息。

**获取有关多个本地实例的信息（CLI）**

1. 如需本地实例名称的列表，请调用 [list-on-premises-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-on-premises-instances.html) 命令，在命令中指定：
   + 获取所有已注册本地实例还是所有已注销本地实例的相关信息（分别使用 `--registration-status` 选项和`Registered` 或 `Deregistered`）。如果忽略此项，则将同时返回已注册和已注销本地实例的名称。
   + 是否仅获取使用特定本地实例标签所标记的本地实例的相关信息（使用 `--tag-filters` 选项）。对于每个本地实例标签，请指定 `Key`、`Value` 和 `Type`（始终应为 `KEY_AND_VALUE`）。在各 `Key`、`Value` 和 `Type` 三元组之间使用空格分隔多个本地实例标签。

   例如：

   ```
   aws deploy list-on-premises-instances --registration-status Registered --tag-filters Key=Name,Value=CodeDeployDemo-OnPrem,Type=KEY_AND_VALUE Key=Name,Value=CodeDeployDemo-OnPrem-Beta,Type=KEY_AND_VALUE
   ```

1. 有关更多详细信息，请使用本地[batch-get-on-premises实例的名称调用-](https://docs.aws.amazon.com/cli/latest/reference/deploy/batch-get-on-premises-instances.html) instances 命令（带`--instance-names`选项）：

   ```
   aws deploy batch-get-on-premises-instances --instance-names AssetTag12010298EX AssetTag09920444EX
   ```

**获取有关多个本地实例的信息（控制台）**

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/codede](https://console.aws.amazon.com/codedeploy) ploy 上打开 CodeDeploy 控制台。
**注意**  
使用您在[入门 CodeDeploy](getting-started-codedeploy.md)中设置的同一用户登录。

1. 在导航窗格中，展开**部署**，然后选择**本地实例**。

   此时将显示有关本地实例的信息。

# 从本地实例中手动删除本地实例标签
<a name="on-premises-instances-operations-remove-tags"></a>

通常，当一个标签不再使用时，或者您希望从依赖该标签的任何部署组中删除本地实例时，您可以从本地实例中删除本地实例标签。您可以使用 AWS CLI 或 AWS CodeDeploy 控制台从本地实例中移除本地实例标签。

您无需在注销本地实例之前从本地实例中删除本地实例标签。

手动删除本地实例的本地实例标签不会取消注册实例。它不会从实例中卸载 CodeDeploy 代理。此操作不会删除实例中的配置文件。此操作不会删除与实例关联的 IAM 用户。

要自动注销本地实例，请参阅[自动注销本地实例](on-premises-instances-operations-deregister-automatically.md)。

要手动注销本地实例，请参阅[手动取消注册本地实例](on-premises-instances-operations-deregister-manually.md)。

要自动卸载 CodeDeploy 代理并从本地实例中删除配置文件，请参阅[自动卸载 CodeDeploy 代理并从本地实例中删除配置文件](on-premises-instances-operations-uninstall-agent.md)。

要仅从本地实例中手动卸载 CodeDeploy 代理，请参阅[管理 CodeDeploy 代理操作](codedeploy-agent-operations.md)。

要手动删除关联的 IAM 用户，请参阅[删除您的 AWS 账户中的 IAM 用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_DeletingUserFromAccount.html)。

**从本地实例删除本地实例标签（CLI）**
+ 调用-premises [remove-tags-from-on-instances，指定](https://docs.aws.amazon.com/cli/latest/reference/deploy/remove-tags-from-on-premises-instances.html)：

   
  + 唯一标识本地实例的名称（使用 `--instance-names` 选项）。
  + 您要删除的标签的名称和值（使用 `--tags` 选项）。

    例如：

    ```
    aws deploy remove-tags-from-on-premises-instances --instance-names AssetTag12010298EX --tags Key=Name,Value=CodeDeployDemo-OnPrem
    ```

**从本地实例删除本地实例标签（控制台）**

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/codede](https://console.aws.amazon.com/codedeploy) ploy 上打开 CodeDeploy 控制台。
**注意**  
使用您在[入门 CodeDeploy](getting-started-codedeploy.md)中设置的同一用户登录。

1. 在导航窗格中，展开**部署**，然后选择**本地实例**。

1. 在本地实例列表中，选择要从中删除标签的本地实例的名称。

1. 在 **Tags（标签）**中，选择要删除的每个标签旁的 **Remove（删除）**。

1. 删除标签之后，选择 **Update tags**。

# 自动卸载 CodeDeploy 代理并从本地实例中删除配置文件
<a name="on-premises-instances-operations-uninstall-agent"></a>

通常，在您不再计划部署到本地实例之后，您可以卸载 CodeDeploy 代理并从该实例中删除配置文件。

**注意**  
自动卸载 CodeDeploy 代理并从本地实例中删除配置文件不会取消本地实例的注册。此操作不会取消关联与本地实例关联的任何本地实例标签。此操作不会删除与本地实例关联的 IAM 用户。  
要自动注销本地实例，请参阅[自动注销本地实例](on-premises-instances-operations-deregister-automatically.md)。  
要手动注销本地实例，请参阅[手动取消注册本地实例](on-premises-instances-operations-deregister-manually.md)。  
要手动取消任何已关联本地实例标签的关联，请参阅[从本地实例中手动删除本地实例标签](on-premises-instances-operations-remove-tags.md)。  
要从本地实例中手动卸载 CodeDeploy 代理，请参阅[管理 CodeDeploy 代理操作](codedeploy-agent-operations.md)。  
要手动删除关联的 IAM 用户，请参阅[删除您的 AWS 账户中的 IAM 用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_DeletingUserFromAccount.html)。

在本地实例中，使用调 AWS CLI 用[卸](https://docs.aws.amazon.com/cli/latest/reference/deploy/uninstall.html)载命令。

例如：

```
aws deploy uninstall
```

**uninstall** 命令执行以下操作：

1. 停止本地实例上正在运行的 CodeDeploy 代理。

1. 从本地实例卸载 CodeDeploy 代理。

1. 从本地实例删除配置文件。（对于 Ubuntu 服务器和 RHEL，这是 `/etc/codedeploy-agent/conf`/`codedeploy.onpremises.yml`。对于 Windows 服务器，这是 `C:\ProgramData\Amazon\CodeDeploy`\$1`conf.onpremises.yml`。）

# 自动注销本地实例
<a name="on-premises-instances-operations-deregister-automatically"></a>

通常，当您不再计划部署到某个本地实例之后，您可以注销该实例。在您注销本地实例时，即使本地实例可能属于某个部署组的本地实例标签，该本地实例也不会包括在任何部署中。您可以使用取消注册本地实例。 AWS CLI 

**注意**  
您不能使用 CodeDeploy 控制台注销本地实例。此外，注销本地实例还会删除与本地实例关联的任何本地实例标签。它不会从本地实例中卸载 CodeDeploy 代理。此操作不会从本地实例中删除本地实例配置文件。  
要使用 CodeDeploy 控制台执行本节中的某些（但不是全部）活动，请参阅的 CodeDeploy 控制台部分[手动取消注册本地实例](on-premises-instances-operations-deregister-manually.md)。  
要手动取消任何已关联本地实例标签的关联，请参阅[从本地实例中手动删除本地实例标签](on-premises-instances-operations-remove-tags.md)。  
要自动卸载 CodeDeploy 代理并从本地实例中删除配置文件，请参阅[自动卸载 CodeDeploy 代理并从本地实例中删除配置文件](on-premises-instances-operations-uninstall-agent.md)。  
要仅从本地实例手动卸载 CodeDeploy 代理，请参阅[管理 CodeDeploy 代理操作](codedeploy-agent-operations.md)。

使用调 AWS CLI 用[取消注册](https://docs.aws.amazon.com/cli/latest/reference/deploy/deregister.html)命令，指定：
+ 唯一标识本地实例的名称 CodeDeploy （带`--instance-name`选项）。
+  （可选）是否删除与本地实例关联的 IAM 用户。默认行为是删除 IAM 用户。如果您不希望删除与本地实例关联的 IAM 用户，请在命令中指定 `--no-delete-iam-user` 选项。
+ （可选）注册本地实例的 AWS 区域 CodeDeploy（带`--region`选项）。这必须是《AWS 一般参考》**的[区域和终端节点](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)中列出的受支持区域之一（例如 `us-west-2`）。如果未指定此选项，则将使用与调用 IAM 用户关联的默认 AWS 区域。

注销实例并删除用户的示例：

```
aws deploy deregister --instance-name AssetTag12010298EX --region us-west-2
```

注销实例但不删除用户的示例：

```
aws deploy deregister --instance-name AssetTag12010298EX --no-delete-iam-user --region us-west-2
```

**deregister** 命令执行以下操作：

1. 向注销本地实例。 CodeDeploy

1. 如果指定，则删除与本地实例关联的 IAM 用户。

在注销本地实例后，请注意以下情况：
+  它立即停止显示在控制台中。
+  您可以立即创建另一个同名的实例。

如果此命令遇到错误，则将显示错误消息，说明您可以如何手动完成剩余步骤。否则，将显示成功消息，说明如何调用 **uninstall** 命令。

# 手动取消注册本地实例
<a name="on-premises-instances-operations-deregister-manually"></a>

通常，当您不再计划部署到某个本地实例之后，您可以注销该实例。您可以使用手动注销本地实例。 AWS CLI 

手动注销本地实例不会卸载 CodeDeploy 代理。此操作不会删除实例中的配置文件。此操作不会删除与实例关联的 IAM 用户。此操作不会删除与实例关联的任何标签。

要自动卸载 CodeDeploy 代理并从本地实例中删除配置文件，请参阅[自动卸载 CodeDeploy 代理并从本地实例中删除配置文件](on-premises-instances-operations-uninstall-agent.md)。

要仅手动卸载 CodeDeploy 代理，请参阅[管理 CodeDeploy 代理操作](codedeploy-agent-operations.md)。

要手动删除关联的 IAM 用户，请参阅[删除您的 AWS 账户中的 IAM 用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_DeletingUserFromAccount.html)。

要仅手动删除关联的本地实例标签，请参阅[从本地实例中手动删除本地实例标签](on-premises-instances-operations-remove-tags.md)。
+ 调用 [deregister-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/deregister-on-premises-instance.html) 命令，在命令中指定唯一标识本地实例的名称（使用 `--instance-name` 选项）：

  ```
  aws deploy deregister-on-premises-instance --instance-name AssetTag12010298EX
  ```

  在注销本地实例后，请注意以下情况：
  +  它立即停止显示在控制台中。
  +  您可以立即创建另一个同名的实例。