

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

# 動作宣告
<a name="action-requirements"></a>

管道的動作層級具有基本結構，其中包含下列參數和語法。如需詳細資訊，請參閱 *CodePipeline API 指南*中的 [ActionDeclaration](https://docs.aws.amazon.com/codepipeline/latest/APIReference/API_ActionDeclaration.html) 物件。

下列範例顯示 JSON 和 YAML 中管道結構的動作層級。

------
#### [ YAML ]

```
 
. . . 

  stages:
    - name: Source
      actions:
        - name: Source
          actionTypeId:
            category: Source
            owner: AWS
            provider: S3
            version: '1'
          runOrder: 1
          configuration:
            PollForSourceChanges: 'false'
            S3Bucket: amzn-s3-demo-bucket
            S3ObjectKey: codedeploy_linux.zip
          outputArtifacts:
            - name: SourceArtifact
          inputArtifacts: []
          region: us-west-2
          namespace: SourceVariables
    - name: Build
      actions:
        - name: Build
          actionTypeId:
            category: Build
            owner: AWS
            provider: CodeBuild
            version: '1'
          runOrder: 1
          configuration:
            EnvironmentVariables: >-
              [{"name":"ETag","value":"#{SourceVariables.ETag}","type":"PLAINTEXT"}]
            ProjectName: my-project
          outputArtifacts:
            - name: BuildArtifact
          inputArtifacts:
            - name: SourceArtifact
          region: us-west-2
          namespace: BuildVariables
          runOrder: 1
          configuration:
            CustomData: >-
              Here are the exported variables from the build action: S3 ETAG:
              #{BuildVariables.ETag}
          outputArtifacts: []
          inputArtifacts: []
          region: us-west-2
```

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

```
 
. . . 

        "stages": [
            {
                "name": "Source",
                "actions": [
                    {
                        "name": "Source",
                        "actionTypeId": {
                            "category": "Source",
                            "owner": "AWS",
                            "provider": "S3",
                            "version": "1"
                        },
                        "runOrder": 1,
                        "configuration": {
                            "PollForSourceChanges": "false",
                            "S3Bucket": "amzn-s3-demo-bucket",
                            "S3ObjectKey": "aws-codepipeline-s3-aws-codedeploy_linux.zip"
                        },
                        "outputArtifacts": [
                            {
                                "name": "SourceArtifact"
                            }
                        ],
                        "inputArtifacts": [],
                        "region": "us-west-2",
                        "namespace": "SourceVariables"
                    }
                ]
            },
            {
                "name": "Build",
                "actions": [
                    {
                        "name": "Build",
                        "actionTypeId": {
                            "category": "Build",
                            "owner": "AWS",
                            "provider": "CodeBuild",
                            "version": "1"
                        },
                        "runOrder": 1,
                        "configuration": {
                            "EnvironmentVariables": "[{\"name\":\"ETag\",\"value\":\"#{SourceVariables.ETag}\",\"type\":\"PLAINTEXT\"}]",
                            "ProjectName": "my-build-project"
                        },
                        "outputArtifacts": [
                            {
                                "name": "BuildArtifact"
                            }
                        ],
                        "inputArtifacts": [
                            {
                                "name": "SourceArtifact"
                            }
                        ],
                        "region": "us-west-2",
                        "namespace": "BuildVariables"
                    }
                ]
      
. . .
```

------

如需適用於供應商類型的範例 `configuration` 詳細資訊，請參閱 [每個提供者類型的有效組態參數](structure-configuration-examples.md)。

動作結構具有下列要求：
+ 階段內的所有動作名稱必須是唯一的。
+ 每個管道都需要一個來源動作。
+ 不使用連線的來源動作可以設定為變更偵測或關閉變更偵測。請參閱[變更偵測方法](change-detection-methods.md)。
+ 這對所有動作皆適用，無論是否處於相同階段或者處於下列階段中，但是輸入成品無需嚴格排列在提供了輸出成品的動作之後。平行動作可以宣告不同的輸出成品套件，由下列的不同動作輪流消耗使用。
+ 當您使用 Amazon S3 儲存貯體做為部署位置時，您也可以指定物件金鑰。物件金鑰可以是檔案名稱 (物件) 或字首 (資料夾路徑) 和檔案名稱的組合。您可以使用變數指定您想要管道使用的位置名稱。Amazon S3 部署動作支援在 Amazon S3 物件金鑰中使用下列變數。  
**在 Amazon S3 中使用變數**    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/codepipeline/latest/userguide/action-requirements.html)

## `name`
<a name="action.name"></a>

該動作的名稱。

## `region`
<a name="action.region"></a>

對於提供者為 的動作 AWS 服務，資源 AWS 區域 的 。

跨區域動作使用 `Region` 欄位來指定要建立動作 AWS 區域 的 。為此動作建立 AWS 的資源必須在 `region` 欄位中提供的相同區域中建立。您無法針對以下動作類型建立跨區域動作：
+ 來源動作
+ 依第三方供應商的動作
+ 依自訂供應商的動作

## `roleArn`
<a name="w2aac54c31c17"></a>

要執行已宣告動作之 IAM 服務角色的 ARN。這是透過管道層級指定的 roleArn 所假設。

## `namespace`
<a name="action.namespace"></a>

動作可以使用變數來設定。您可以使用 `namespace` 欄位來設定執行變數的命名空間和變數資訊。如需執行變數和動作輸出變數的參考資訊，請參閱[變數參考](reference-variables.md)。

**注意**  
對於 Amazon ECR、Amazon S3 或 CodeCommit 來源，您也可以使用輸入轉換項目建立來源覆寫，以針對管道事件在 EventBridge `revisionValue`中使用 ，其中 `revisionValue` 衍生自物件金鑰、遞交或映像 ID 的來源事件變數。如需詳細資訊，請參閱 [Amazon ECR 來源動作和 EventBridge 資源](create-cwe-ecr-source.md)、 [連線至已啟用事件來源的 Amazon S3 來源動作](create-S3-source-events.md)或 下程序中包含的輸入轉換項目選用步驟[CodeCommit 來源動作和 EventBridge](triggering.md)。

## `actionTypeId`
<a name="action.actionTypeId"></a>

動作類型 ID 會識別為下列四個欄位的組合。

### `category`
<a name="action.actionTypeId.category"></a>

管道中的動作類型或步驟，例如來源動作。每個動作類型都有一組特定的有效動作提供者。如需依動作類型區分的有效供應商清單，請參閱 [動作結構參考](action-reference.md)。

這些是 CodePipeline 的有效`actionTypeId`類別 （動作類型）：
+ `Source`
+ `Build`
+ `Approval`
+ `Deploy`
+ `Test`
+ `Invoke`
+ `Compute`

### `owner`
<a name="action.actionTypeId.owner"></a>

對於所有目前支援的動作類型，唯一有效的擁有者字串為 `AWS`、 `ThirdParty`或 `Custom`。如需特定動作的有效擁有者字串，請參閱 [動作結構參考](action-reference.md)。

如需詳細資訊，請參閱 [CodePipeline API 參考](https://docs.aws.amazon.com/codepipeline/latest/APIReference)。

### `version`
<a name="action.actionTypeId.version"></a>

動作的版本。

### `provider`
<a name="action.actionTypeId.provider"></a>

動作提供者，例如 CodeBuild。
+ 動作類別的有效提供者類型根據類別而定。例如，對於來源動作類別，有效的提供者類型為 `S3`、`CodeCommit`、 `CodeStarSourceConnection`或 `Amazon ECR`。此範例顯示來源動作的結構，具有 `S3`​ 供應商：

  ```
  "actionTypeId": {
    "category": "Source",
    "owner": "AWS",
    "version": "1",
    "provider": "S3"},
  ```

## `InputArtifacts`
<a name="action.inputArtifacts"></a>

如果動作類別支援，此欄位會包含輸入成品結構。動作的輸入成品必須與先前動作中宣告的輸出成品完全相符。例如，若前述動作包含下列宣告：

```
"outputArtifacts": [
    {
    "MyApp"
    }
],
```

 且沒有其他輸出成品，那麼下列動作的輸入成品必須為：

```
"inputArtifacts": [
    {
    "MyApp"
    }
],
```

例如，來源動作不能有輸入成品，因為它是管道中的第一個動作。不過，來源動作一律會有由下列動作處理的輸出成品。來源動作的輸出成品是來源儲存庫的應用程式檔案，壓縮並透過成品儲存貯體提供，由下列動作處理，例如使用建置命令對應用程式檔案執行動作的 CodeBuild 動作。

作為無法具有輸出成品的動作範例，部署動作沒有輸出成品，因為這些動作通常是管道中的最後一個動作。

### `name`
<a name="action.inputArtifacts.name"></a>

動作輸入成品的成品名稱。

## `outputArtifacts`
<a name="action.outputArtifacts"></a>

管道中的輸出成品名稱皆必須獨一無二。例如，管道可包含一個含有名為 `"MyApp"` 的輸出成品之動作，而另一個動作則有名為 `"MyBuiltApp"` 的輸出​成品。不過，管道不可包含兩個動作，而兩個動作都有名為 `"MyApp"` 的輸出成品。​

 如果動作類別支援，此欄位會包含輸出成品結構。動作的輸出成品必須與上述動作中宣告的輸出成品完全相符。例如，若前述動作包含下列宣告：

```
"outputArtifacts": [
    {
    "MyApp"
    }
],
```

 且沒有其他輸出成品，那麼下列動作的輸入成品必須為：

```
"inputArtifacts": [
    {
    "MyApp"
    }
],
```

例如，來源動作不能有輸入成品，因為它是管道中的第一個動作。不過，來源動作一律會有由下列動作處理的輸出成品。來源動作的輸出成品是來源儲存庫的應用程式檔案，壓縮並透過成品儲存貯體提供，由下列動作處理，例如使用建置命令對應用程式檔案執行動作的 CodeBuild 動作。

作為無法具有輸出成品的動作範例，部署動作沒有輸出成品，因為這些動作通常是管道中的最後一個動作。

### `name`
<a name="action.outputArtifacts.name"></a>

動作輸出成品的成品名稱。

## `configuration` （依動作提供者）
<a name="action.configuration"></a>

動作組態包含適合提供者類型的詳細資訊和參數。在下面的區段中，動作組態參數範例是 S3 來源動作特有的。

動作組態和輸入/輸出成品限制可能因動作提供者而有所不同。如需動作提供者的動作組態範例清單，請參閱 中的 [動作結構參考](action-reference.md)和 資料表[每個提供者類型的有效組態參數](structure-configuration-examples.md)。資料表提供每個提供者類型的動作參考連結，其中詳細列出每個動作的組態參數。如需每個動作提供者具有輸入和輸出成品限制的資料表，請參閱 [每個動作類型的有效輸入和輸出成品](reference-action-artifacts.md)。

下列考量適用於使用 動作：
+ 來源動作沒有輸入成品，而部署動作也沒有輸出成品。
+ 對於不使用連線的來源動作提供者，例如 S3，您必須使用 `PollForSourceChanges` 參數來指定您是否希望管道在偵測到變更時自動啟動。請參閱 [`PollForSourceChanges` 參數的有效設定](PollForSourceChanges-defaults.md)。
+ 若要設定自動變更偵測以啟動管道，或停用變更偵測，請參閱 [來源動作和變更偵測方法](change-detection-methods.md)。
+ 若要設定具有篩選的觸發條件，請使用來源動作進行連線，然後參閱 [使用觸發和篩選來自動化啟動管道](pipelines-triggers.md)。
+ 如需每個動作的輸出變數，請參閱 [變數參考](reference-variables.md)。
**注意**  
對於 Amazon ECR、Amazon S3 或 CodeCommit 來源，您也可以使用輸入轉換項目建立來源覆寫，以針對管道事件在 EventBridge `revisionValue`中使用 ，其中 `revisionValue` 衍生自物件金鑰、遞交或映像 ID 的來源事件變數。如需詳細資訊，請參閱 [Amazon ECR 來源動作和 EventBridge 資源](create-cwe-ecr-source.md)、 [連線至已啟用事件來源的 Amazon S3 來源動作](create-S3-source-events.md)或 下程序中包含的輸入轉換項目選用步驟[CodeCommit 來源動作和 EventBridge](triggering.md)。
**重要**  
處於非作用中狀態超過 30 天的管道會停用管道的輪詢。如需詳細資訊，請參閱管道結構參考中的[pollingDisabledAt](pipeline-requirements.md#metadata.pollingDisabledAt)。如需將管道從輪詢遷移至事件型變更偵測的步驟，請參閱[變更偵測方法](change-detection-methods.md)。

**注意**  
CodeCommit 和 S3 來源動作需要設定的變更偵測資源 (EventBridge 規則），或使用 選項輪詢儲存庫以取得來源變更。對於具有 Bitbucket、GitHub 或 GitHub Enterprise Server 來源動作的管道，您不需要設定 Webhook 或預設輪詢。連線動作會為您管理變更偵測。

## `runOrder`
<a name="action.runOrder"></a>

正整數，指出階段內動作的執行順序。階段中的平行動作會顯示為具有相同整數。例如，執行順序為 2 的兩個動作會在階段中的第一個動作執行後平行執行。

動作的預設 `runOrder` 值為 1。值必須是正整數 (自然數)。您不可使用分數、小數、負數或零。若要指定動作的編號順序，請使用第一個動作的最小編號以及順序中各個其他動作的較大編號。若要指定平行動作，請為您想要平行執行的各項動作使用相同整數。在主控台中，您可以在要執行動作的階段選擇**新增動作群組**來指定動作的序列序列，也可以選擇**新增動作**來指定平行序列。*動作群組*是指相同層級上一或多個動作的執行順序。

例如，若您想要三項動作在階段中連續執行，需給予第一項動作 `runOrder` 值 1，第二個動作的 `runOrder` value 值為 2、第三個動作的 `runOrder` 值則為 3。但是，若您想要平行執行第二或第三項動作，必須給予第一項動作 `runOrder`​ 值 1，而第二與第三項動作的 `runOrder`​ 值則為 2。

**注意**  
序列動作的編號不需為嚴格連續順序。例如，若您有連續三個動作並決定要移除第二項動作，無需重新為第三項動作的 `runOrder`​ 值編號。因為該動作的 `runOrder` 值 (3) 高於第一項動作的 `runOrder` 值 (1)，會在該階段中的第一項動作之後根據序號執行。