

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

# CodeCommit 源操作参考
<a name="action-reference-CodeCommit"></a>

在配置的 CodeCommit 存储库和分支上进行新提交时启动管道。

如果您使用控制台创建或编辑管道，则 CodePipeline 会创建一条 EventBridge 规则，在存储库发生更改时启动管道。

**注意**  
对于 Amazon ECR、Amazon S3 或 CodeCommit 源，您还可以使用输入转换条目创建源替换，以便`revisionValue`在 EventBridge 管道事件中使用 in，其中派生自对象密钥、提交或图像 ID 的源事件变量。`revisionValue`有关更多信息，请参阅[Amazon ECR 源操作和 EventBridge 资源](create-cwe-ecr-source.md)、[连接到启用事件源的 Amazon S3 源操作](create-S3-source-events.md)或[CodeCommit 源操作和 EventBridge](triggering.md)下的流程中包含的输入转换条目的可选步骤。

在通过 CodeCommit 操作连接管道之前，您必须已经创建了 CodeCommit 存储库。

检测到代码更改后，您可以使用以下选项将代码传递给后续操作：
+ **默认**-将 CodeCommit 源操作配置为输出包含提交浅表副本的 ZIP 文件。
+ **完整克隆**：配置源操作，使之输出对仓库的 Git URL 引用，以供后续操作使用。

  目前，Git URL 引用只能由下游 CodeBuild 操作用于克隆存储库和关联的 Git 元数据。尝试将 Git URL 引用传递给非CodeBuild 操作会导致错误。

**Topics**
+ [操作类型](#action-reference-CodeCommit-type)
+ [配置参数](#action-reference-CodeCommit-config)
+ [输入构件](#action-reference-CodeCommit-input)
+ [输出构件](#action-reference-CodeCommit-output)
+ [输出变量](#action-reference-CodeCommit-variables)
+ [服务角色权限： CodeCommit 操作](#edit-role-codecommit)
+ [操作配置示例](#action-reference-CodeCommit-example)
+ [另请参阅](#action-reference-CodeCommit-links)

## 操作类型
<a name="action-reference-CodeCommit-type"></a>
+ 类别：`Source`
+ 拥有者：`AWS`
+ 提供方：`CodeCommit`
+ 版本：`1`

## 配置参数
<a name="action-reference-CodeCommit-config"></a>

**RepositoryName**  
是否必需：是  
要在其中检测源更改的存储库的名称。

**BranchName**  
是否必需：是  
要在其中检测源更改的分支的名称。

**PollForSourceChanges**  
必需：否  
`PollForSourceChanges`控制是否 CodePipeline 轮询 CodeCommit存储库以获取源代码更改。我们建议您改用 “ CloudWatch 事件” 来检测源代码的更改。有关配置 CloudWatch 事件的更多信息，请参阅[迁移轮询管道（CodeCommit 来源）(CLI)](update-change-detection.md#update-change-detection-cli-codecommit)或[迁移轮询管道（CodeCommit 来源）（CloudFormation 模板）](update-change-detection.md#update-change-detection-cfn-codecommit)。  
如果要配置 CloudWatch 事件规则，则必须将设置为`PollForSourceChanges``false`以避免重复的管道执行。
此参数的有效值：  
+ `true`: 如果已设置，则会 CodePipeline 轮询您的存储库以了解源代码更改。
**注意**  
如果省略`PollForSourceChanges`，则 CodePipeline 默认为轮询存储库是否有源更改。如果包括 `PollForSourceChanges` 并将其设置为 `true`，则此行为相同。
+ `false`: 如果已设置，则 CodePipeline 不会轮询您的存储库以了解源代码更改。如果您打算配置 CloudWatch 事件规则以检测源更改，请使用此设置。

****OutputArtifactFormat****  
必需：否  
输出构件格式。值可以是 `CODEBUILD_CLONE_REF` 或 `CODE_ZIP`。如果未指定，则默认为 `CODE_ZIP`。  
`CODEBUILD_CLONE_REF` 选项只能由 CodeBuild 下游操作使用。  
如果选择此选项，则需要向您的 CodeBuild 服务角色添加`codecommit:GitPull`权限，如所示[为 CodeCommit 源操作添加 CodeBuild GitClone 权限](troubleshooting.md#codebuild-role-codecommitclone)。您还需要为 CodePipeline服务角色添加`codecommit:GetRepository`权限，如所示[为 CodePipeline 服务角色添加权限](how-to-custom-role.md#how-to-update-role-new-services)。如需查看教程以了解如何使用**完整克隆**选项，请参阅[教程：使用带有 CodeCommit 管道源的完整克隆](tutorials-codecommit-gitclone.md)。

## 输入构件
<a name="action-reference-CodeCommit-input"></a>
+ **构件数：**`0`
+ **描述：**输入构件不适用于此操作类型。

## 输出构件
<a name="action-reference-CodeCommit-output"></a>
+ **构件数：**`1`
+ **描述：**此操作的输出构件是一个 ZIP 文件，其中包含在提交时，指定作为管道执行的源修订的已配置存储库和分支的内容。从存储库生成的构件是 CodeCommit 操作的输出对象。源代码提交 ID 显示 CodePipeline 为触发管道执行的源修订版。

## 输出变量
<a name="action-reference-CodeCommit-variables"></a>

配置后，此操作会生成变量，该变量可由管道中下游操作的操作配置引用。此操作生成的变量可视为输出变量，即使操作没有命名空间也是如此。您可以使用命名空间配置操作，以使这些变量可用于下游操作的配置。

有关更多信息，请参阅 [变量参考](reference-variables.md)。

**CommitId**  
触发管道执行的 CodeCommit 提交 ID。提交 IDs 是提交的完整 SHA。

**CommitMessage**  
与触发管道执行的提交相关联的描述消息（如果有）。

**RepositoryName**  
触发管道的提交所在 CodeCommit 存储库的名称。

**BranchName**  
进行源代码更改的 CodeCommit 存储库的分支名称。

**AuthorDate**  
授权提交的日期，采用时间戳格式。

**CommitterDate**  
进行提交的日期，采用时间戳格式。

## 服务角色权限： CodeCommit 操作
<a name="edit-role-codecommit"></a>

 CodePipeline 运行操作时， CodePipeline 服务角色策略需要以下权限，这些权限的范围适当地缩小到管道资源 ARN，以便以最低权限保持访问权限。例如，将以下内容添加到策略语句中：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codecommit:CancelUploadArchive",
                "codecommit:GetBranch",
                "codecommit:GetCommit",
                "codecommit:GetRepository",
                "codecommit:GetUploadArchiveStatus",
                "codecommit:UploadArchive"
            ],
            "Resource": [
                "arn:aws:codecommit:*:111122223333:[[codecommitRepostories]]"
            ]
        }
    ]
}
```

------



## 操作配置示例
<a name="action-reference-CodeCommit-example"></a>

### 默认输出构件格式的示例
<a name="w2aac56c49c29b3"></a>

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

```
name: Source
actionTypeId:
  category: Source
  owner: AWS
  provider: CodeCommit
  version: '1'
runOrder: 1
configuration:
  BranchName: main
  PollForSourceChanges: 'false'
  RepositoryName: MyWebsite
outputArtifacts:
  - name: Artifact_MyWebsiteStack
inputArtifacts: []
region: us-west-2
namespace: SourceVariables
```

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

```
{
    "name": "Source",
    "actionTypeId": {
        "category": "Source",
        "owner": "AWS",
        "provider": "CodeCommit",
        "version": "1"
    },
    "runOrder": 1,
    "configuration": {
        "BranchName": "main",
        "PollForSourceChanges": "false",
        "RepositoryName": "MyWebsite"
    },
    "outputArtifacts": [
        {
            "name": "Artifact_MyWebsiteStack"
        }
    ],
    "inputArtifacts": [],
    "region": "us-west-2",
    "namespace": "SourceVariables"
}
```

------

### 完整克隆输出构件格式的示例
<a name="w2aac56c49c29b5"></a>

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

```
name: Source
actionTypeId:
  category: Source
  owner: AWS
  provider: CodeCommit
  version: '1'
runOrder: 1
configuration:
  BranchName: main
  OutputArtifactFormat: CODEBUILD_CLONE_REF
  PollForSourceChanges: 'false'
  RepositoryName: MyWebsite
outputArtifacts:
  - name: SourceArtifact
inputArtifacts: []
region: us-west-2
namespace: SourceVariables
```

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

```
{
    "name": "Source",
    "actionTypeId": {
        "category": "Source",
        "owner": "AWS",
        "provider": "CodeCommit",
        "version": "1"
    },
    "runOrder": 1,
    "configuration": {
        "BranchName": "main",
        "OutputArtifactFormat": "CODEBUILD_CLONE_REF",
        "PollForSourceChanges": "false",
        "RepositoryName": "MyWebsite"
    },
    "outputArtifacts": [
        {
            "name": "SourceArtifact"
        }
    ],
    "inputArtifacts": [],
    "region": "us-west-2",
    "namespace": "SourceVariables"
}
```

------

## 另请参阅
<a name="action-reference-CodeCommit-links"></a>

下列相关资源在您使用此操作的过程中会有所帮助。
+ [教程：创建简单的管道（CodeCommit 存储库）](tutorials-simple-codecommit.md)— 本教程提供了示例应用程序规范文件以及示例 CodeDeploy 应用程序和部署组。使用本教程创建具有部署到 Amazon EC2 实例的 CodeCommit 源的管道。