

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

# CodeCommit 來源動作參考
<a name="action-reference-CodeCommit"></a>

在已設定的 CodeCommit 儲存庫和分支上進行新的遞交時，啟動管道。

如果您使用主控台建立或編輯管道，CodePipeline 會建立 EventBridge 規則，在儲存庫發生變更時啟動管道。

**注意**  
對於 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)。

您必須先建立 CodeCommit 儲存庫，才能透過 CodeCommit 動作連接管道。

偵測到程式碼變更之後，您有下列選擇將程式碼傳遞給後續動作：
+ **預設** – 設定 CodeCommit 來源動作以輸出 ZIP 檔案，其中包含遞交的淺層副本。
+ **完全複製** – 設定來源動作，將 Git URL 參考輸出至儲存庫以進行後續動作。

  目前，Git URL 參考只能由下游 CodeBuild 動作用來複製儲存庫和相關聯的 Git 中繼資料。嘗試將 Git URL 參考傳遞至非 CodeBuild 動作會導致錯誤。

**Topics**
+ [

## 動作類型
](#action-reference-CodeCommit-type)
+ [

## 組態參數
](#action-reference-CodeCommit-config)
+ [

## Input artifacts (輸入成品)
](#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 Events 來偵測來源變更。如需設定 CloudWatch Events 的詳細資訊，請參閱 [遷移輪詢管道 (CodeCommit 來源） (CLI)](update-change-detection.md#update-change-detection-cli-codecommit)或 [遷移輪詢管道 (CodeCommit 來源） (CloudFormation 範本）](update-change-detection.md#update-change-detection-cfn-codecommit)。  
如果您想要設定 CloudWatch Events 規則，您必須`PollForSourceChanges`將 設定為 `false`，以避免重複的管道執行。
此參數的有效值：  
+ `true`：如果設定，CodePipeline 會輪詢您的儲存庫以進行來源變更。
**注意**  
如果您省略 `PollForSourceChanges`，CodePipeline 會預設為輪詢儲存庫以進行來源變更。此行為同於包含 `PollForSourceChanges` 且設定為 `true`。
+ `false`：如果設定，CodePipeline 不會輪詢您的儲存庫以進行來源變更。如果您想要設定 CloudWatch Events 規則來偵測來源變更，請使用此設定。

****OutputArtifactFormat****  
必要：否  
輸出成品格式。值可以是 `CODEBUILD_CLONE_REF`或 `CODE_ZIP`。如果未指定，預設值為 `CODE_ZIP`。  
`CODEBUILD_CLONE_REF` 選項只能由 CodeBuild 下游動作使用。  
如果您選擇此選項，則需要將 `codecommit:GitPull` 許可新增至 CodeBuild 服務角色，如 所示[為 CodeCommit 來源動作新增 CodeBuild GitClone 許可](troubleshooting.md#codebuild-role-codecommitclone)。您也需要將 `codecommit:GetRepository` 許可新增至 CodePipeline 服務角色，如 所示[將許可新增至 CodePipeline 服務角色](how-to-custom-role.md#how-to-update-role-new-services)。如需示範如何使用**完整複製**選項的教學課程，請參閱 [教學課程：搭配 CodeCommit 管道來源使用完整複製](tutorials-codecommit-gitclone.md)。

## Input artifacts (輸入成品)
<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。遞交 ID 是遞交的完整 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 來源的管道。