

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

# 將手動核准動作新增至 CodePipeline 中的管道
<a name="approvals-action-add"></a>

您可以在希望管道停止的時間點，將核准動作新增至 CodePipeline 管道中的階段，以便有人手動核准或拒絕動作。

**注意**  
核准動作無法新增至「來源」階段。來源階段僅能包含來源動作。

如果您想要在核准動作準備好進行檢閱時，使用 Amazon SNS 傳送通知，您必須先完成下列先決條件：
+ 授予 CodePipeline 服務角色存取 Amazon SNS 資源的許可。如需相關資訊，請參閱[將 Amazon SNS 許可授予 CodePipeline 服務角色](approvals-service-role-permissions.md)。
+ 將許可授予組織中的一或多個 IAM 身分，以更新核准動作的狀態。如需相關資訊，請參閱[將核准許可授予 CodePipeline 中的 IAM 使用者](approvals-iam-permissions.md)。

在此範例中，您會建立新的核准階段，並將手動核准動作新增至階段。您也可以將手動核准動作新增至包含其他動作的現有階段。

## 將手動核准動作新增至 CodePipeline 管道 （主控台）
<a name="approvals-action-add-console"></a>

您可以使用 CodePipeline 主控台，將核准動作新增至現有的 CodePipeline 管道。如果您想要在建立新管道時新增核准動作，則必須使用 AWS CLI。

1. 前往 [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/) 開啟 CodePipeline 主控台。

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

1. 在管道詳細資訊頁面上，選擇 **Edit (編輯)**。

1. 若您希望將核准動作新增至新的階段，請在管道中您希望新增核准請求的位置選擇 **\$1 Add stage (\$1 新增階段)**，然後輸入階段的名稱。在 **Add stage (新增階段)** 頁面的 **Stage name (階段名稱)** 中，輸入新的階段名稱。例如，新增階段並命名為 `Manual_Approval`。

   若您希望將核准動作新增至現有的階段，請選擇 **Edit stage (編輯階段)**。

1. 在您要新增核准動作的階段中，選擇 **\$1 Add action group (\$1 新增動作群組)**。

1. 在 **Edit action (編輯動作)** 頁面上，執行下列作業：

   1. 在 **Action name (動作名稱)** 中，輸入識別該動作的名稱。

   1. 在 **Action provider (動作供應商)** 的 **Approval (核准)** 下，選擇 **Manual approval (手動核准)**。

   1. (選擇性) 在 **SNS topic ARN (SNS 主題 ARN)** 中，選擇您用來傳送核准動作通知的主題名稱。

   1. (選擇性) 在 **URL for review (檢閱的 URL)** 中，輸入您希望核准者檢查的頁面或應用程式 URL。核准者可透過管道主控台檢視中包含的連結存取此 URL。

   1. (選擇性) 在 **Comments (註解)** 中，輸入任何您希望與檢閱者共享的其他資訊。

   1. 選擇**儲存**。

## 將手動核准動作新增至 CodePipeline 管道 (CLI)
<a name="approvals-action-add-cli"></a>

您可以使用 CLI 將核准動作新增至現有的管道 (或是在您建立管道時)。您可以透過在您建立或編輯的階段中包含核准類型為手動核准的核准動作，來執行此操作。

如需建立及編輯管道的詳細資訊，請參閱[建立管道、階段和動作](pipelines-create.md)和[在 CodePipeline 中編輯管道](pipelines-edit.md)。

若要將階段新增至僅包含核准動作的管道，建議您在建立或更新管道時，包含與下列範例相似的內容。

**注意**  
`configuration` 區段為選擇性區塊。此僅為一部分，而非整個結構或檔案。如需詳細資訊，請參閱[CodePipeline 管道結構參考](reference-pipeline-structure.md)。

```
{
    "name": "MyApprovalStage",
    "actions": [
        {
            "name": "MyApprovalAction",
            "actionTypeId": {
                "category": "Approval",
                "owner": "AWS",
                "version": "1",
                "provider": "Manual"
            },
            "inputArtifacts": [],
            "outputArtifacts": [],
            "configuration": {
                "NotificationArn": "arn:aws:sns:us-east-2:80398EXAMPLE:MyApprovalTopic",
                "ExternalEntityLink": "http://example.com",
                "CustomData": "The latest changes include feedback from Bob."},
            "runOrder": 1
        }
    ]
}
```

若核准動作位於具有其他動作的階段，則包含階段的 JSON 檔案區段可能看起來會與下列內容相似。

**注意**  
`configuration` 區段為選擇性區塊。此僅為一部分，而非整個結構或檔案。如需詳細資訊，請參閱[CodePipeline 管道結構參考](reference-pipeline-structure.md)。

```
,
{
    "name": "Production",
    "actions": [
        {
            "inputArtifacts": [],
            "name": "MyApprovalAction",
            "actionTypeId": {
                "category": "Approval",
                "owner": "AWS",
                "version": "1",
                "provider": "Manual"
            },
            "outputArtifacts": [],
            "configuration": {
                "NotificationArn": "arn:aws:sns:us-east-2:80398EXAMPLE:MyApprovalTopic",
                "ExternalEntityLink": "http://example.com",
                "CustomData": "The latest changes include feedback from Bob."
            },
            "runOrder": 1
        },
        {
            "inputArtifacts": [
                {
                    "name": "MyApp"
                }
            ],
            "name": "MyDeploymentAction",
            "actionTypeId": {
                "category": "Deploy",
                "owner": "AWS",
                "version": "1",
                "provider": "CodeDeploy"
            },
            "outputArtifacts": [],
            "configuration": {
                "ApplicationName": "MyDemoApplication",
                "DeploymentGroupName": "MyProductionFleet"
            },
            "runOrder": 2
        }
    ]
}
```