

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 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. 使用 `--role-name`選項來呼叫 [create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html) 命令，以指定 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 角色的詳細資訊，請參閱《*IAM 使用者指南*》中的[建立角色以委派許可給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

   如需將許可指派給現有角色的資訊，請參閱《 [AWS CLI 命令參考](https://docs.aws.amazon.com/cli/latest/reference/)》中的 [put-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-policy.html)。

## 步驟 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 SDK 來呼叫 [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 或管理員許可，將組態檔案新增至現場部署執行個體。此組態檔案用於宣告要用於 CodeDeploy 的 IAM 登入資料和目標 AWS 區域。該檔案必須新增至現場部署執行個體上的特定位置。檔案必須包含 IAM 暫時工作階段 ARN、其私密金鑰 ID 和私密存取金鑰，以及目標 AWS 區域。

**新增組態檔案**

1. 在內部部署執行個體的下列位置建立名為 `codedeploy.onpremises.yml`（適用於 Ubuntu Server 或 RHEL 內部部署執行個體） 或 `conf.onpremises.yml`（適用於 Windows Server 內部部署執行個體） 的檔案：
   + 對於 Ubuntu 伺服器： `/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* 是您在[步驟 2：使用 產生個別執行個體的臨時登入資料 AWS STS](#register-on-premises-instance-iam-session-arn-2)中記錄的 IAM 工作階段 ARN。
   + *credentials-file* 是在[步驟 2：使用 產生個別執行個體的臨時登入資料 AWS STS](#register-on-premises-instance-iam-session-arn-2)中記錄的臨時工作階段 ARN 登入資料檔案所在位置。
   + *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 Server 和 RHEL)**

如果您未在現場部署執行個體上執行 Ubuntu Server 或 RHEL，請略過此步驟並直接前往「安裝 CodeDeploy 代理程式」。

在 Ubuntu Server 或 RHEL 內部部署執行個體上安裝 CodeDeploy 代理程式，並在有新版本可用時讓執行個體更新 CodeDeploy 代理程式。您可以透過將執行個體上的`AWS_REGION`環境變數設定為 CodeDeploy 支援的其中一個區域的識別符來執行此操作。我們建議您將 值設定為 CodeDeploy 應用程式、部署群組和應用程式修訂所在的區域 （例如 `us-west-2`)。如需區域清單，請參閱《》中的[區域和端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)*AWS 一般參考*。

若要設定環境變數，請從終端機呼叫下列項目：

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

其中 *supported-region* 為區域識別符 (例如 `us-west-2`)。

**安裝 CodeDeploy 代理程式**
+ 對於 Ubuntu Server 內部部署執行個體，請遵循 中的指示[安裝適用於 Ubuntu Server 的 CodeDeploy 代理程式](codedeploy-agent-operations-install-ubuntu.md)，然後返回此頁面。
+ 對於 RHEL 內部部署執行個體，請遵循 中的指示[安裝適用於 Amazon Linux 或 RHEL 的 CodeDeploy 代理程式](codedeploy-agent-operations-install-linux.md)，然後返回此頁面。
+ 對於 Windows Server 內部部署執行個體，請遵循 中的指示[安裝適用於 Windows Server 的 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 登入資料的 session-name 和序號，或內部資產識別符，如果適用)。如果您將 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)**
+ 呼叫 [add-tags-to-on-premises-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：//[https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) 開啟 CodeDeploy 主控台。
**注意**  
使用您在 中設定的相同使用者登入[CodeDeploy 入門](getting-started-codedeploy.md)。

1. 在導覽窗格中，展開**部署**，然後選擇**內部部署執行個體**。

1. 請從現場部署執行個體的清單中，選擇您想要標記的現場部署執行個體名稱。

1. 在標籤清單中，選擇或輸入的標籤金鑰或標籤值。在您輸入標籤金鑰及標籤值後，將顯示另一個資料列。您最多可重複此標籤 10 次。若要移除標籤，請選擇 **Remove** (移除)。

1. 新增標籤後，選擇 **Update Tags (更新標籤)**。

## 步驟 7：將應用程式修訂部署至內部部署執行個體
<a name="register-on-premises-instance-iam-session-arn-7"></a>

您現在已準備好將應用程式修訂部署至已註冊和加上標籤的現場部署執行個體。

您部署應用程式修訂到現場部署執行個體的方式類似於將應用程式修訂部署到 Amazon EC2 執行個體。如需說明，請參閱[使用 CodeDeploy 建立部署](deployments-create.md)。這些指示含有一個連接到先決條件的連結，包含建立應用程式、建立部署群組以及準備應用程式修改版。如果您需要簡單的範例應用程式修訂來部署，您可以建立一個，如[教學課程：使用 CodeDeploy 將應用程式部署至內部部署執行個體 (Windows Server、Ubuntu Server 或 Red Hat Enterprise Linux)](tutorials-on-premises-instance.md) 中的[步驟 2：建立範例應用程式修訂](tutorials-on-premises-instance-2-create-sample-revision.md)所述。

**重要**  
如果您在建立以內部部署執行個體為目標的部署群組時重複使用 CodeDeploy 服務角色，則必須`Tag:get*`將 包含在服務角色政策陳述式的 `Action`部分。如需詳細資訊，請參閱[步驟 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)。