

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

# 管理 CodePipeline 服务角色
<a name="how-to-custom-role"></a>

服务角色配置了一个或多个策略，用于控制对管道所用 AWS 资源的访问权限。您可能需要为该角色附加更多策略，编辑附加到该角色的策略，或者在中为其他服务角色配置策略 AWS。在配置对管道的跨账户访问时，您可能还需要将策略附加到角色。

**重要**  
修改策略语句或向角色附加其他策略可能会导致您的管道无法运行。在您以任何方式修改 的服务角色之前，请务必了解其影响。对服务角色进行任何更改后，确保测试管道。

**注意**  
在控制台中，使用名称 `oneClick_AWS-CodePipeline-Service_ID-Number` 创建 2018 年 9 月之前创建的服务角色。  
2018 年 9 月之后创建的服务角色使用服务角色名称格式 `AWSCodePipelineServiceRole-Region-Pipeline_Name`。例如，对于 `eu-west-2` 区域中名为 `MyFirstPipeline` 的管道，控制台会将角色和策略命名为 `AWSCodePipelineServiceRole-eu-west-2-MyFirstPipeline`。

## CodePipeline 服务角色策略
<a name="how-to-custom-role-policy"></a>

 CodePipeline 服务角色策略声明包含管理管道的最低权限。您可以编辑服务角色语句以删除或添加对不使用的资源的访问权限。有关每个操作所需的最低权限 CodePipeline 使用情况，请参阅相应的操作参考。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowS3BucketAccess",
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketVersioning",
        "s3:GetBucketAcl",
        "s3:GetBucketLocation"
      ],
      "Resource": [
        "arn:aws:s3:::[[pipeArtifactBucketNames]]"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "{{accountId}}"
        }
      }
    },
    {
      "Sid": "AllowS3ObjectAccess",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl",
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:PutObjectTagging",
        "s3:GetObjectTagging",
        "s3:GetObjectVersionTagging"
      ],
      "Resource": [
        "arn:aws:s3:::[[pipeArtifactBucketNames]]/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "{{accountId}}"
        }
      }
    }
  ]
}
```

------

**注意**  
在该策略中，当您的源存储桶中的 S3 对象中包含标签时，需要以下权限：  

```
s3:PutObjectTagging
s3:GetObjectTagging
s3:GetObjectVersionTagging
```

## 移除 CodePipeline 服务角色的权限
<a name="remove-permissions-from-policy"></a>

您可以编辑服务角色语句以删除对不使用的资源的访问权限。例如，如果您的所有管道均不包括 Elastic Beanstalk，您可以编辑策略语句以移除授权访问 Elastic Beanstalk 资源的部分。

同样，如果您的所有管道都不包含 CodeDeploy，则可以编辑策略声明以删除授予 CodeDeploy 资源访问权限的部分：

```
    {
    "Action": [
        "codedeploy:CreateDeployment",
        "codedeploy:GetApplicationRevision",
        "codedeploy:GetDeployment",
        "codedeploy:GetDeploymentConfig",
        "codedeploy:RegisterApplicationRevision"
    ],
    "Resource": "*",
    "Effect": "Allow"
},
```

## 为 CodePipeline 服务角色添加权限
<a name="how-to-update-role-new-services"></a>

您必须使用尚未包含在默认服务角色策略语句中的 AWS 服务 的权限更新服务角色策略语句，然后才能在管道中使用它。

如果您用于管道的服务角色是在向添加支持之前创建的，则这一点尤其重要 AWS 服务。

下表显示了添加对其他 AWS 服务的支持的时间。


****  

| AWS 服务 | CodePipeline 支持日期 | 
| --- | --- | 
| CodePipeline 添加了调用操作支持。请参阅[CodePipeline 调用操作的服务角色策略权限](action-reference-PipelineInvoke.md#action-reference-PipelineInvoke-permissions-action)。 | 2025 年 3 月 14 日 | 
|  添加了 EC2 操作支持。请参阅[EC2 部署操作的服务角色策略权限](action-reference-EC2Deploy.md#action-reference-EC2Deploy-permissions-action)。 | 2025 年 2 月 21 日 | 
|  添加了 EKS 操作支持。请参阅[服务角色策略权限](action-reference-EKS.md#action-reference-EKS-service-role)。 | 2025 年 2 月 20 日 | 
|  添加了 Amazon Elastic Container Registry ECRBuildAndPublish 操作支持。请参阅[服务角色权限：`ECRBuildAndPublish` 操作](action-reference-ECRBuildAndPublish.md#edit-role-ECRBuildAndPublish)。 | 2024 年 11 月 22 日 | 
| 添加了 Amazon Inspector InspectorScan 操作支持。请参阅[服务角色权限：`InspectorScan` 操作](action-reference-InspectorScan.md#edit-role-InspectorScan)。 | 2024 年 11 月 22 日 | 
| 添加了 Commands 操作支持。请参阅[服务角色权限：Commands 操作](action-reference-Commands.md#edit-role-Commands)。 | 2024 年 10 月 3 日 | 
| CloudFormation 添加了动作支持。请参阅[服务角色权限：`CloudFormationStackSet` 操作](action-reference-StackSets.md#edit-role-cfn-stackset)和[服务角色权限：`CloudFormationStackInstances` 操作](action-reference-StackSets.md#edit-role-cfn-stackinstances)。 | 2020 年 12 月 30 日 | 
| CodeCommit 添加了对完整克隆输出构件格式操作的支持。请参阅[服务角色权限： CodeCommit 操作](action-reference-CodeCommit.md#edit-role-codecommit)。 | 2020 年 11 月 11 日 | 
| AWS CodeBuild 添加了批量生成操作支持。请参阅[服务角色权限： CodeCommit 操作](action-reference-CodeCommit.md#edit-role-codecommit)。 | 2020 年 7 月 30 日 | 
| AWS AppConfig 添加了动作支持。请参阅[服务角色权限：`AppConfig` 操作](action-reference-AppConfig.md#edit-role-appconfig)。 | 2020 年 6 月 22 日 | 
| AWS Step Functions 添加了动作支持。请参阅[服务角色权限：`StepFunctions` 操作](action-reference-StepFunctions.md#edit-role-stepfunctions)。 | 2020 年 5 月 27 日 | 
| AWS CodeStar 添加了连接操作支持。请参阅[服务角色权限： CodeConnections 操作](action-reference-CodestarConnectionSource.md#edit-role-connections)。 | 2019 年 12 月 18 日 | 
| 添加了 S3 部署操作支持。请参阅[服务角色权限：S3 部署操作](action-reference-S3Deploy.md#edit-role-s3deploy)。 | 2019 年 1 月 16 日 | 
| 添加了 CodeDeployToECS 操作支持。请参阅[服务角色权限：`CodeDeployToECS` 操作](action-reference-ECSbluegreen.md#edit-role-codedeploy-ecs)。 | 2018 年 11 月 27 日 | 
| 添加了 Amazon ECR 操作支持。请参阅[服务角色权限：Amazon ECR 操作](action-reference-ECR.md#edit-role-ecr)。 | 2018 年 11 月 27 日 | 
| 添加了 Service Catalog 操作支持。请参阅[服务角色权限：Service Catalog 操作](action-reference-ServiceCatalog.md#edit-role-servicecatalog)。 | 2018 年 10 月 16 日 | 
| AWS Device Farm 添加了动作支持。请参阅[服务角色权限： AWS Device Farm 操作](action-reference-DeviceFarm.md#edit-role-devicefarm)。 | 2018 年 7 月 19 日 | 
| 添加了 Amazon ECS 操作支持。请参阅[服务角色权限：Amazon ECS 标准操作](action-reference-ECS.md#edit-role-ecs)。 | 2017 年 12 月 12 日/2017 年 7 月 21 日更新了选择加入标记授权的选项 | 
| CodeCommit 添加了动作支持。请参阅[服务角色权限： CodeCommit 操作](action-reference-CodeCommit.md#edit-role-codecommit)。 | 2016 年 4 月 18 日 | 
| AWS OpsWorks 添加了动作支持。请参阅[服务角色权限： AWS OpsWorks 操作](action-reference-OpsWorks.md#edit-role-opsworks)。 | 2016 年 6 月 2 日 | 
| CloudFormation 添加了动作支持。请参阅[服务角色权限： CloudFormation 操作](action-reference-CloudFormation.md#edit-role-cloudformation)。 | 2016 年 11 月 3 日 | 
| AWS CodeBuild 添加了动作支持。请参阅[服务角色权限： CodeBuild 操作](action-reference-CodeBuild.md#edit-role-codebuild)。 | 2016 年 12 月 1 日 | 
| 添加了 Elastic Beanstalk 操作支持。请参阅[服务角色权限：`ElasticBeanstalk` 部署操作](action-reference-Beanstalk.md#edit-role-beanstalk)。 | 首次服务发布 | 
| CodeDeploy 添加了动作支持。请参阅[服务角色权限： AWS CodeDeploy 操作](action-reference-CodeDeploy.md#edit-role-codedeploy)。 | 首次服务发布 | 
| 添加了 S3 源操作支持。请参阅[服务角色权限：S3 源操作](action-reference-S3.md#edit-role-s3source)。 | 首次服务发布 | 

请按照以下步骤添加受支持服务的权限：

 

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在 IAM 角色控制台的导航窗格中，选择**角色**，然后从角色列表中选择您的 `AWS-CodePipeline-Service` 角色。

1. 在**权限**选项卡上的**内联策略**中，选择您的服务角色策略所在行中的**编辑策略**。

1. 在**策略文档**框中添加所需权限。
**注意**  
在您创建 IAM 策略时，请遵循授予最低权限这一标准安全建议，即仅授予执行任务所需的权限。某些 API 调用支持基于资源的权限并允许限制访问。例如，在这种情况下，要在调用 `DescribeTasks` 和 `ListTasks` 时限制权限，您可以将通配符（\$1）替换为资源 ARN 或包含通配符（\$1）的资源 ARN。有关创建策略以授予最低权限访问权限的更多信息，请参阅 [https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)。

1. 选择**查看策略**以确保策略不包含错误。当策略正确无误时，选择**应用策略**。