

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

# 使用變數
<a name="actions-variables"></a>

CodePipeline 中的某些動作會產生變數。若要使用變數：
+ 請將命名空間指派給動作，使該動作產生的變數可供下游動作組態使用。
+ 請設定下游動作來取用該動作所產生的變數。

  您可以檢視每個動作執行的詳細資料，以查看動作在執行階段產生的每個輸出變數的值。

若要查看使用變數的step-by-step範例：
+ 如需使用上游動作 (CodeCommit) 變數並產生輸出變數的 Lambda 動作教學課程，請參閱 [教學課程：搭配 Lambda 叫用動作使用變數](tutorials-lambda-variables.md)。
+ 如需從上游 CloudFormation CloudFormation 動作參考堆疊輸出變數之動作的教學課程，請參閱 [教學課程：建立使用 AWS CloudFormation 部署動作變數的管道](tutorials-cloudformation-action.md)。
+ 如需手動核准動作範例，其中包含參考解析為 CodeCommit 遞交 ID 和遞交訊息之輸出變數的訊息文字，請參閱 [範例：在手動核准中使用變數](#actions-variables-examples-approvals)。
+ 如需使用 環境變數解析為 GitHub 分支名稱的範例 CodeBuild 動作，請參閱 [範例：搭配 CodeBuild 環境變數使用 BranchName 變數](#actions-variables-examples-env-branchname)。
+ CodeBuild 動作會以變數的形式產生所有做為組建一部分匯出的環境變數。如需詳細資訊，請參閱[CodeBuild 動作輸出變數](reference-variables.md#reference-variables-list-configured-codebuild)。如需可在 CodeBuild 中使用的環境變數清單，請參閱*AWS CodeBuild 《 使用者指南*》[中的建置環境中的環境變數](https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html)。

**Topics**
+ [設定變數的動作](#actions-variables-create)
+ [檢視輸出變數](#actions-variables-view)
+ [範例：在手動核准中使用變數](#actions-variables-examples-approvals)
+ [範例：搭配 CodeBuild 環境變數使用 BranchName 變數](#actions-variables-examples-env-branchname)

## 設定變數的動作
<a name="actions-variables-create"></a>

當您將動作新增至管道時，您可以指派命名空間給此動作，並設定此動作使用先前動作的變數。

### 使用變數設定動作 (主控台)
<a name="actions-variables-create-console"></a>

此範例會建立具有 CodeCommit 來源動作和 CodeBuild 組建動作的管道。CodeBuild 動作設定為使用 CodeCommit 動作產生的變數。

如果未指定命名空間，則變數無法供動作組態中參考。當您使用主控台建立管道時，系統會自動產生每個動作的命名空間。

**建立具有變數的管道**

1. 登入 AWS 管理主控台 並開啟 CodePipeline 主控台，網址為 https：//[http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

1. 選擇 **Create pipeline (建立管道)**。輸入管道的名稱，然後選擇 **Next (下一步)**。

1. 在 **Source (來源)** 的 **Provider (提供者)** 中，選擇 **CodeCommit**。選擇來源動作的 CodeCommit 儲存庫和分支，然後選擇**下一步**。

1. 在 **Build (建置)** 的 **Provider (提供者)** 中，選擇 **CodeBuild**。選擇現有的 CodeBuild 組建專案名稱，或選擇**建立專案**。在 **Create build project (建立組建專案)** 上，建立組建專案，然後選擇 **Return to CodePipeline (返回 CodePipeline)**。

   在 **Environment variables (環境變數)** 下，選擇 **Add environment variables (新增環境變數)**。例如，使用變數語法 輸入執行 ID，`#{codepipeline.PipelineExecutionId}`並使用變數語法 輸入遞交 ID`#{SourceVariables.CommitId}`。
**注意**  
您可以在精靈的任何動作組態欄位中輸入變數語法。

1. 選擇**建立**。

1. 管道建立之後，您可以檢視精靈所建立的命名空間。在管道上，選擇您要檢視命名空間之階段的圖示。在此範例中，將會顯示來源動作自動產生的命名空間 `SourceVariables`。  
![\[範例：動作資訊畫面\]](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/images/variables-popup-namespace.png)

**編輯現有動作的命名空間**

1. 登入 AWS 管理主控台 並開啟 CodePipeline 主控台，網址為 https：//[http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

1. 選擇您要編輯的管道，然後選擇 **Edit (編輯)**。針對來源階段，選擇 **Edit stage (編輯階段)**。新增 CodeCommit 動作。

1. 在 **Edit action (編輯動作)** 上，檢視 **Variable namespace (變數命名空間)** 欄位。如果現有的動作是先前建立，或不是使用精靈來建立，您必須新增命名空間。在 **Variable namespace (變數命名空間)** 中，輸入命名空間名稱，然後選擇 **Save (儲存)**。

**檢視輸出變數**

1. 登入 AWS 管理主控台 並開啟 CodePipeline 主控台，網址為 https：//[http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

1. 建立管道並成功執行之後，您可以在 **Action execution details (動作執行詳細資訊)** 頁面上檢視變數。如需相關資訊，請參閱[檢視變數 (主控台)](#actions-variables-view-console)。

### 設定變數的動作 (CLI)
<a name="actions-variables-create-cli"></a>

當您使用 **create-pipeline** 命令建立管道，或使用 **update-pipeline** 命令編輯管道時，您可以在動作的組態中參考/使用變數。

 如果未指定命名空間，則無法在任何下游動作組態中參考該動作產生的變數。

**使用命名空間來設定動作**

1. 遵循[建立管道、階段和動作](pipelines-create.md)中的步驟，使用 CLI 建立管道。啟動輸入檔案以提供 `--cli-input-json` 參數給 **create-pipeline** 命令。在管道結構中，新增 `namespace` 參數並指定名稱，例如 `SourceVariables`。

   ```
   . . . 
   {
             "inputArtifacts": [],
             "name": "Source",
             "region": "us-west-2",
             "namespace": "SourceVariables",
             "actionTypeId": {
               "category": "Source",
               "owner": "AWS",
               "version": "1",
               "provider": "CodeCommit"
             },
             "outputArtifacts": [
   
   . . .
   ```

1. 以類似 **MyPipeline.json** 的名稱儲存檔案。

1. 在終端機 (Linux、macOS 或 Unix) 或命令提示字元 (Windows) 中，執行 [https://docs.aws.amazon.com/cli/latest/reference/codepipeline/get-pipeline-state.html](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/get-pipeline-state.html)命令並建立管道。

   呼叫您執行 [https://docs.aws.amazon.com/cli/latest/reference/codepipeline/retry-stage-execution.html](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/retry-stage-execution.html) 命令時建立的檔案。例如：

   ```
   aws codepipeline create-pipeline --cli-input-json file://MyPipeline.json
   ```

**設定下游動作來取用變數**

1. 編輯輸入檔案以提供 `--cli-input-json` 參數給 **update-pipeline** 命令。在下游動作中，將變數新增至該動作的組態。變數由名稱空間和索引鍵組成 (以句點分隔)。例如，若要為管道執行 ID 和來源遞交 ID 新增變數，請指定命名空間 `codepipeline` 給變數 `#{codepipeline.PipelineExecutionId}`。指定命名空間 `SourceVariables` 給變數 `#{SourceVariables.CommitId}`。

   ```
   {
       "name": "Build",
       "actions": [
           {
               "outputArtifacts": [
                   {
                       "name": "BuildArtifacts"
                   }
               ],
               "name": "Build",
               "configuration": {
                   "EnvironmentVariables": "[{\"name\":\"Execution_ID\",\"value\":\"#{codepipeline.PipelineExecutionId}\",\"type\":\"PLAINTEXT\"},{\"name\":\"Commit_ID\",\"value\":\"#{SourceVariables.CommitId}\",\"type\":\"PLAINTEXT\"}]",
                   "ProjectName": "env-var-test"
               },
               "inputArtifacts": [
                   {
                       "name": "SourceArtifact"
                   }
               ],
               "region": "us-west-2",
               "actionTypeId": {
                   "provider": "CodeBuild",
                   "category": "Build",
                   "version": "1",
                   "owner": "AWS"
               },
               "runOrder": 1
           }
       ]
   },
   ```

1. 以類似 **MyPipeline.json** 的名稱儲存檔案。

1. 在終端機 (Linux、macOS 或 Unix) 或命令提示字元 (Windows) 中，執行 [https://docs.aws.amazon.com/cli/latest/reference/codepipeline/get-pipeline-state.html](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/get-pipeline-state.html)命令並建立管道。

   呼叫您執行 [https://docs.aws.amazon.com/cli/latest/reference/codepipeline/retry-stage-execution.html](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/retry-stage-execution.html) 命令時建立的檔案。例如：

   ```
   aws codepipeline create-pipeline --cli-input-json file://MyPipeline.json
   ```

## 檢視輸出變數
<a name="actions-variables-view"></a>

您可以檢視動作執行詳細資訊，以檢視該動作的變數 (每個執行所特有)。

### 檢視變數 (主控台)
<a name="actions-variables-view-console"></a>

您可以使用主控台來檢視動作的變數。

****

1. 登入 AWS 管理主控台 並開啟 CodePipeline 主控台，網址為 https：//[http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

   與 AWS 您的帳戶相關聯的所有管道名稱都會顯示。

1.  在 **Name (名稱)** 中，選擇管道的名稱。

1. 選擇 **View history (檢視歷程記錄)**。

1. 管道成功執行後，您可以檢視來源動作所產生的變數。選擇 **View history (檢視歷程記錄)**。在管道執行的動作清單中選擇**來源**，以檢視 CodeCommit 動作的動作執行詳細資訊。在動作詳細資訊畫面上，檢視 **Output variables (輸出變數)** 下的變數。  
![\[範例：來源輸出變數\]](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/images/variables-output.png)

1. 管道成功執行後，您可以檢視建置動作所取用的變數。選擇 **View history (檢視歷程記錄)**。在管道執行的動作清單中，選擇**建置**以檢視 CodeBuild 動作的動作執行詳細資訊。在動作詳細資訊頁面上，檢視 **Action configuration (動作組態)** 下的變數。將會顯示自動產生的命名空間。  
![\[範例：動作組態變數\]](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/images/variables-actionconfig-codebuild.png)

   根據預設，**Action configuration (動作組態)** 會顯示變數語法。您可以選擇 **Show resolved configuration (顯示解析的組態)**，以切換清單來顯示動作執行期間產生的值。  
![\[範例：解析的動作組態變數\]](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/images/variables-actionconfig-codebuild-resolved.png)

### 檢視變數 (CLI)
<a name="actions-variables-view-cli"></a>

您可以使用 **list-action-executions** 命令來檢視動作的變數。

1. 使用下列命令：

   ```
   aws codepipeline list-action-executions
   ```

   輸出會顯示 `outputVariables` 參數，如下所示。

   ```
   "outputVariables": {
                       "BranchName": "main",
                       "CommitMessage": "Updated files for test",
                       "AuthorDate": "2019-11-08T22:24:34Z",
                       "CommitId": "d99b0083cc10EXAMPLE",
                       "CommitterDate": "2019-11-08T22:24:34Z",
                       "RepositoryName": "variables-repo"
                   },
   ```

1. 使用下列命令：

   ```
   aws codepipeline get-pipeline --name <pipeline-name>
   ```

   在 CodeBuild 動作的動作組態中，您可以檢視變數：

   ```
   {
       "name": "Build",
       "actions": [
           {
               "outputArtifacts": [
                   {
                       "name": "BuildArtifact"
                   }
               ],
               "name": "Build",
               "configuration": {
                   "EnvironmentVariables": "[{\"name\":\"Execution_ID\",\"value\":\"#{codepipeline.PipelineExecutionId}\",\"type\":\"PLAINTEXT\"},{\"name\":\"Commit_ID\",\"value\":\"#{SourceVariables.CommitId}\",\"type\":\"PLAINTEXT\"}]",
                   "ProjectName": "env-var-test"
               },
               "inputArtifacts": [
                   {
                       "name": "SourceArtifact"
                   }
               ],
               "region": "us-west-2",
               "actionTypeId": {
                   "provider": "CodeBuild",
                   "category": "Build",
                   "version": "1",
                   "owner": "AWS"
               },
               "runOrder": 1
           }
       ]
   },
   ```

## 範例：在手動核准中使用變數
<a name="actions-variables-examples-approvals"></a>

當您指定動作的命名空間，而該動作會產生輸出變數時，您可以新增手動核准，在核准訊息中顯示變數。此範例示範如何將變數語法新增至手動核准訊息。

****

1. 登入 AWS 管理主控台 並開啟 CodePipeline 主控台，網址為 https：//[http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

   與 AWS 您的帳戶相關聯的所有管道名稱都會顯示。選擇您要新增核准的管道。

1. 若要編輯管道，請選擇 **Edit (編輯)**。在來源動作之後新增手動核准。在 **Action name (動作名稱)** 中，輸入核准動作的名稱。

1. 在 **Action provider (動作提供者)** 中，選擇 **Manual approval (手動核准)**。

1. 在要**檢閱的 URL** 中，將 的變數語法`CommitId`新增至 CodeCommit URL。請確定您使用指派給來源動作的命名空間。例如，具有預設命名空間之 CodeCommit 動作的變數語法`SourceVariables`為 `#{SourceVariables.CommitId}`。

   在**註解**的 中`CommitMessage`，輸入遞交訊息：

   ```
   Please approve this change. Commit message: #{SourceVariables.CommitMessage}
   ```

1. 管道成功執行後，您可以檢視核准訊息中的變數值。

## 範例：搭配 CodeBuild 環境變數使用 BranchName 變數
<a name="actions-variables-examples-env-branchname"></a>

當您將 CodeBuild 動作新增至管道時，您可以使用 CodeBuild 環境變數來參考上游來源動作的`BranchName`輸出變數。透過 CodePipeline 中 動作的輸出變數，您可以建立自己的 CodeBuild 環境變數，以便在建置命令中使用。

此範例說明如何將輸出變數語法從 GitHub 來源動作新增至 CodeBuild 環境變數。此範例中的輸出變數語法代表 的 GitHub 來源動作輸出變數`BranchName`。動作成功執行後，變數會解析以顯示 GitHub 分支名稱。

1. 登入 AWS 管理主控台 並開啟 CodePipeline 主控台，網址為 https：//[http://console.aws.amazon.com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home)。

   與 AWS 您的帳戶相關聯的所有管道名稱都會顯示。選擇您要新增核准的管道。

1. 若要編輯管道，請選擇 **Edit (編輯)**。在包含 CodeBuild 動作的階段上，選擇**編輯階段**。

1. 選擇 圖示以編輯 CodeBuild 動作。

1. 在**編輯動作**頁面**的環境變數**下，輸入下列內容：
   + 在**名稱**中，輸入環境變數的名稱。
   + 在**值**中，輸入管道輸出變數的變數語法，其中包含指派給來源動作的命名空間。例如，具有預設命名空間的 GitHub 動作的輸出變數語法`SourceVariables`為 `#{SourceVariables.BranchName}`。
   + 在**類型**中，選擇**純文字**。

1. 管道成功執行後，您可以查看解析的輸出變數是環境變數中的值。選擇下列其中一項：
   + **CodePipeline 主控台：**選擇管道，然後選擇**歷史記錄**。選擇最新的管道執行。
     + 在**時間軸**下，選擇**來源**的選擇器。這是產生 GitHub 輸出變數的來源動作。選擇**檢視執行詳細資訊**。在**輸出變數**下，檢視此動作產生的輸出變數清單。
     + 在**時間軸**下，選擇**建置**選擇器。這是為組建專案指定 CodeBuild 環境變數的組建動作。選擇**檢視執行詳細資訊**。在**動作組態**下，檢視 CodeBuild 環境變數。選擇**顯示已解析的組態**。您的環境變數值是從 GitHub 來源動作解析的`BranchName`輸出變數。在此範例中，解析的值為 `main`。

       如需詳細資訊，請參閱[檢視變數 (主控台)](#actions-variables-view-console)。
   + **CodeBuild 主控台：**選擇您的建置專案，然後選擇建置執行的連結。在**環境變數**下，您解析的輸出變數是 CodeBuild 環境變數的值。在此範例中，環境變數**名稱**為 ，`BranchName`而**值**是從 GitHub 來源動作解析的`BranchName`輸出變數。在此範例中，解析的值為 `main`。  
![\[顯示主控台中已解析變數的螢幕擷取畫面\]](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/images/variable-codebuild-resolved.png)