

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

# 向中的管道添加手动批准操作 CodePipeline
<a name="approvals-action-add"></a>

您可以将批准操作添加到管道中您希望停止 CodePipeline 管道的阶段，以便其他人可以手动批准或拒绝该操作。

**注意**  
不能将审批操作添加到源阶段。源阶段只能包含源操作。

如果要在审批操作准备好接受审核时使用 Amazon SNS 发送通知，您必须先完成以下先决条件：
+ 向您的 CodePipeline 服务角色授予访问亚马逊 SNS 资源的权限。有关信息，请参阅[向服务角色授予 Amazon SNS 权限 CodePipeline](approvals-service-role-permissions.md)。
+ 向您组织中的一个或多个 IAM 身份授予更新审批操作状态的权限。有关信息，请参阅[向中的 IAM 用户授予批准权限 CodePipeline](approvals-iam-permissions.md)。

在此示例中，您将创建一个新的审批阶段，并向该阶段添加一个手动审批操作。您也可以向包含其他操作的现有阶段添加手动审批操作。

## 向 CodePipeline 管道添加手动批准操作（控制台）
<a name="approvals-action-add-console"></a>

您可以使用 CodePipeline 控制台向现有 CodePipeline管道添加批准操作。如果要在创建新管道时添加批准操作，则必须使用 AWS CLI。

1. 打开 CodePipeline 控制台，网址为[https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/)。

1. 在**名称**中，选择管道。

1. 在管道详细信息页中，选择**编辑**。

1. 如果您要在新的阶段添加审批操作，请在管道中您要添加审批请求的时间点选择 **\$1 添加阶段**，然后输入阶段名称。在**添加阶段**页面上的**阶段名称**中，输入新的阶段名称。例如，添加一个新阶段并将其命名为 `Manual_Approval`。

   如果您要在现有阶段中添加审批操作，请选择**编辑阶段**。

1. 在要在其中添加审批操作的阶段中，选择 **\$1 添加操作组**。

1. 在**编辑操作**页中，执行以下操作：

   1. 在**操作名称**中，输入用于识别操作的名称。

   1. 在**操作提供程序**中的**审批**下，选择**手动审批**。

   1. （可选）在 **SNS 主题 ARN** 中，选择用来发送审批操作通知的主题名称。

   1. （可选）在**用于审阅的 URL** 中，输入您希望审批者检查的页面或应用程序的 URL。审批者可以通过管道控制台视图中包含的链接访问此 URL。

   1. （可选）在**注释**中，输入您要与审批者共享的任何其他信息。

   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
        }
    ]
}
```