

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# CodeCommit 소스 작업 및 EventBridge
<a name="triggering"></a>

CodePipeline에 CodeCommit 소스 작업을 추가하려면 다음 중 하나를 선택할 수 있습니다.
+ CodePipeline 콘솔 **파이프라인 생성** 마법사([사용자 지정 파이프라인 생성(콘솔)](pipelines-create.md#pipelines-create-console)) 또는 **작업 편집** 페이지를 사용하여 **CodeCommit** 공급자 옵션을 선택합니다. 콘솔은 소스가 변경될 때 파이프라인을 시작하는 EventBridge 규칙을 생성합니다.
+  AWS CLI 를 사용하여 작업에 대한 `CodeCommit` 작업 구성을 추가하고 다음과 같이 추가 리소스를 생성합니다.
  + [CodeCommit 소스 작업 참조](action-reference-CodeCommit.md)의 `CodeCommit` 예제 작업 구성을 사용하여 [파이프라인 생성(CLI)](pipelines-create.md#pipelines-create-cli)과 같이 작업을 생성합니다.
  + 변경 감지 방법은 기본적으로 소스를 폴링하여 파이프라인을 시작합니다. 정기적 확인을 비활성화하고 감지 규칙 변경을 수동으로 생성해야 합니다. [CodeCommit 소스에 대한 EventBridge 규칙 생성(콘솔)](pipelines-trigger-source-repo-changes-console.md), [CodeCommit 소스에 대한 EventBridge 규칙 생성(CLI)](pipelines-trigger-source-repo-changes-cli.md) 또는 [CodeCommit 소스에 대한 EventBridge 규칙 생성(CloudFormation 템플릿)](pipelines-trigger-source-repo-changes-cfn.md) 방법 중 한 가지를 선택하세요.

**Topics**
+ [CodeCommit 소스에 대한 EventBridge 규칙 생성(콘솔)](pipelines-trigger-source-repo-changes-console.md)
+ [CodeCommit 소스에 대한 EventBridge 규칙 생성(CLI)](pipelines-trigger-source-repo-changes-cli.md)
+ [CodeCommit 소스에 대한 EventBridge 규칙 생성(CloudFormation 템플릿)](pipelines-trigger-source-repo-changes-cfn.md)

# CodeCommit 소스에 대한 EventBridge 규칙 생성(콘솔)
<a name="pipelines-trigger-source-repo-changes-console"></a>

**중요**  
콘솔을 사용하여 파이프라인을 생성하거나 편집하면 EventBridge 규칙이 생성됩니다.

**CodePipeline 작업에 사용할 EventBridge 규칙을 생성하려면**

1. [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)에서 Amazon EventBridge 콘솔을 엽니다.

1. 탐색 창에서 **규칙**을 선택합니다. 기본 버스를 선택된 상태로 두거나 이벤트 버스를 선택하세요. **규칙 생성**을 선택합니다.

1. **이름**에 역할의 이름을 입력합니다.

1. **규칙 유형**에서 **이벤트 패턴이 있는 규칙**을 선택합니다. **다음**을 선택합니다.

1. **이벤트 소스**에서 **AWS 이벤트 또는 EventBridge 파트너 이벤트**를 선택합니다.

1. **샘플 이벤트 유형**에서 **AWS 이벤트**를 선택합니다.

1. **샘플 이벤트**에서 필터링할 키워드로 CodeCommit을 입력합니다. **CodeCommit 리포지토리 상태 변경**을 선택합니다.

1. **생성 방법**에서 **사용자 정의 패턴(JSON 편집기)**을 선택합니다.

   아래 제공된 이벤트 패턴을 붙여넣습니다. 다음은 이름이 `main`인 브랜치가 있는 `MyTestRepo` 리포지토리에 대한 **이벤트** 창의 샘플 CodeCommit 이벤트 패턴입니다.

   ```
   {
     "source": [
       "aws.codecommit"
     ],
     "detail-type": [
       "CodeCommit Repository State Change"
     ],
     "resources": [
       "arn:aws:codecommit:us-west-2:80398EXAMPLE:MyTestRepo"
     ],
     "detail": {
       "referenceType": [
         "branch"
       ],
       "referenceName": [
         "main"
       ]
     }
   }
   ```

1. **대상** 영역에서 **CodePipeline**을 선택합니다.

1. 이 규칙에 의해 시작되는 파이프라인의 파이프라인 ARN을 입력합니다.
**참고**  
**get-pipeline** 명령을 실행한 후 메타데이터 출력에서 파이프라인 ARN을 찾을 수 있습니다. 파이프라인 ARN은 다음 형식으로 구성됩니다.  
arn:aws:codepipeline:*region*:*account*:*pipeline-name*  
파이프라인 ARN 샘플:  
`arn:aws:codepipeline:us-east-2:80398EXAMPLE:MyFirstPipeline`

1. EventBridge에 EventBridge 규칙과 연결된 대상을 호출할 권한을 부여하는 IAM 서비스 역할을 생성하거나 지정하려면(이 경우에는 대상이 CodePipeline): 
   + **이 특정 리소스에 대한 새 역할 생성**을 선택하여 EventBridge에 파이프라인 실행을 시작할 권한을 제공하는 서비스 역할을 생성합니다.
   + **기존 역할 사용**을 선택하여 EventBridge에 파이프라인 실행을 시작할 권한을 제공하는 서비스 역할을 입력합니다.

1. (선택 사항) 특정 이미지 ID로 소스 재정의를 지정하려면 입력 변환기를 사용하여 데이터를 JSON 파라미터로 전달합니다. 입력 변환기를 사용하여 파이프라인 변수를 전달할 수도 있습니다.
   + **추가 설정**을 폅니다.

     **대상 입력 구성**에서 **입력 변환기 구성**을 선택합니다.

     대화 상자에서 **내 이름을 입력하세요**를 선택합니다. **입력 경로** 상자에 다음 키-값 페어를 입력합니다.

     ```
     {"revisionValue": "$.detail.image-digest"}
     ```
   + **입력 경로** 상자에 다음 키-값 페어를 입력합니다.

     ```
     {
         "sourceRevisions": [
             {
                 "actionName": "Source",
                 "revisionType": "COMMIT_ID",
                 "revisionValue": "<revisionValue>"
             }
         ],
         "variables": [
             {
                 "name": "Branch_Name",
                 "value": "value"
             }
         ]
     }
     ```
   + **확인**을 선택합니다.

1. **다음**을 선택합니다.

1. **태그** 페이지에서 **다음**을 선택합니다.

1. **검토 및 생성** 페이지에서 규칙 구성을 검토합니다. 규칙이 만족스러우면 **규칙 생성(Create rule)**을 선택하세요.

# CodeCommit 소스에 대한 EventBridge 규칙 생성(CLI)
<a name="pipelines-trigger-source-repo-changes-cli"></a>

**put-rule** 명령을 호출해 다음을 지정합니다.
+ 만들려는 규칙을 고유하게 식별하는 이름. 이 이름은 AWS 계정과 연결된 CodePipeline으로 생성하는 모든 파이프라인에서 고유해야 합니다.
+ 소스의 이벤트 패턴 및 규칙에서 사용하는 세부 정보 필드. 자세한 내용은 [Amazon EventBridge 및 이벤트 패턴](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html)을 참조하세요.<a name="proc-cli-event-codecommit"></a>

**CodeCommit이 이벤트 소스이고 CodePipeline이 대상인 EventBridge 규칙을 만들려면**

1. CodePipeline을 사용하여 규칙을 호출하도록 EventBridge에 권한을 추가합니다. 자세한 내용은 [Amazon EventBridge에 대한 리소스 기반 정책 사용](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-use-resource-based.html)을 참조하세요.

   1. 다음 예제를 사용하여 EventBridge가 서비스 역할을 담당하도록 허용하는 신뢰 정책을 생성합니다. 신뢰 정책 이름을 `trustpolicyforEB.json`으로 지정합니다.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "events.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
      ```

------

   1. 다음 명령을 사용하여 `Role-for-MyRule` 역할을 생성한 후 신뢰 정책에 연결합니다.

      ```
      aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
      ```

   1. 이 샘플에서 보이는 것처럼 `MyFirstPipeline`이라는 파이프라인에 대한 권한 정책 JSON을 생성합니다. 권한 정책 이름을 `permissionspolicyforEB.json`으로 지정합니다.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "codepipeline:StartPipelineExecution"
                  ],
                  "Resource": [
                      "arn:aws:codepipeline:us-west-2:111122223333:MyFirstPipeline"
                  ]
              }
          ]
      }
      ```

------

   1. 다음 명령을 사용하여 `CodePipeline-Permissions-Policy-for-EB` 권한 정책을 `Role-for-MyRule` 역할에 연결합니다.

      **이렇게 변경하는 이유는 무엇입니까?** 이 정책을 역할에 추가하면 EventBridge에 대한 권한이 생성됩니다.

      ```
      aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-EB --policy-document file://permissionspolicyforEB.json
      ```

1. **put-rule** 명령을 호출하고 `--name`, `--event-pattern` 및 `--role-arn` 파라미터를 포함시킵니다.

   **이렇게 변경하는 이유는 무엇입니까?** 이 명령은 CloudFormation 에서 이벤트를 생성할 수 있게 합니다.

   다음 샘플 명령은 `MyCodeCommitRepoRule`이라는 역할 별칭을 생성합니다.

   ```
   aws events put-rule --name "MyCodeCommitRepoRule" --event-pattern "{\"source\":[\"aws.codecommit\"],\"detail-type\":[\"CodeCommit Repository State Change\"],\"resources\":[\"repository-ARN\"],\"detail\":{\"referenceType\":[\"branch\"],\"referenceName\":[\"main\"]}}" --role-arn "arn:aws:iam::ACCOUNT_ID:role/Role-for-MyRule"
   ```

1. CodePipeline을 대상으로 추가하려면 **put-targets** 명령을 호출하고 다음 파라미터를 포함합니다.
   + `--rule` 파라미터는 **put-rule**을 사용하여 생성한 `rule_name`에 사용됩니다.
   + `--targets` 파라미터는 대상 목록에 있는 대상의 목록 `Id` 및 대상 파이프라인의 `ARN`에 사용됩니다.

   다음 예제 명령은 `MyCodeCommitRepoRule`이라는 규칙에 대해 대상 `Id`가 숫자 1로 구성됨을 지정하며, 규칙의 대상 목록에서 1로 대상 1로 표시됩니다. 이 예제 명령은 또한 파이프라인에 대한 예제 `ARN`를 지정합니다. 파이프라인은 리포지토리에서 변경이 발생하면 시작됩니다.

   ```
   aws events put-targets --rule MyCodeCommitRepoRule --targets Id=1,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline
   ```

1. (선택 사항) 특정 이미지 ID에 대한 소스 재정의로 입력 변환기를 구성하려면 CLI 명령에서 다음 JSON을 사용합니다. 다음 예제에서는 다음과 같은 경우 재정의를 구성합니다.
   + 이 예제에서 `actionName`, `Source`는 소스 이벤트에서 파생되지 않은 파이프라인 생성 시 정의된 동적 값입니다.
   + 이 예제에서 `revisionType`, `COMMIT_ID`는 소스 이벤트에서 파생되지 않은 파이프라인 생성 시 정의된 동적 값입니다.
   + 이 예제에서 `revisionValue`, <*revisionValue*>는 소스 이벤트 변수에서 파생됩니다.

   ```
   {
       "Rule": "my-rule",
       "Targets": [
           {
               "Id": "MyTargetId",
               "Arn": "pipeline-ARN",
               "InputTransformer": {
                   "sourceRevisions": {
                       "actionName": "Source",
                       "revisionType": "COMMIT_ID",
                       "revisionValue": "<revisionValue>"
                   },
                   "variables": [
                       {
                           "name": "Branch_Name",
                           "value": "value"
                       }
                   ]
               }
           }
       ]
   }
   ```<a name="proc-cli-flag-codecommit"></a>

**파이프라인의 PollForSourceChanges 파라미터를 편집하려면**
**중요**  
이 방법으로 파이프라인을 생성할 때 명시적으로 false로 설정되지 않은 경우 `PollForSourceChanges` 파라미터 기본값은 true입니다. 이벤트 기반 변경 감지를 추가할 때는 출력에 파라미터를 추가하고 false로 설정하여 폴링을 비활성화해야 합니다. 그렇지 않으면 파이프라인이 단일 소스 변경 시 두 번 시작됩니다. 자세한 내용은 [`PollForSourceChanges` 파라미터의 유효한 설정](PollForSourceChanges-defaults.md)을 참조하세요.

1. **get-pipeline** 명령을 실행하여 파이프라인 구조를 JSON 파일로 복사합니다. 예를 들어, `MyFirstPipeline`라는 파이프라인의 경우 다음 명령을 입력합니다.

   ```
   aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json
   ```

   이 명령은 아무 것도 반환하지 않지만 생성한 파일이 명령을 실행한 디렉터리에 표시되어야 합니다.

1. 일반 텍스트 편집기에서 JSON 파일을 열고 이 예제에 나와 있는 것처럼 `PollForSourceChanges` 파라미터를 `false`로 변경하여 소스 단계를 편집합니다.

   **이렇게 변경하는 이유는 무엇입니까?** 이 파라미터를 `false`로 변경하면 정기적 확인이 비활성화되어 이벤트 기반 변경 탐지만 사용할 수 있습니다.

   ```
   "configuration": {
       "PollForSourceChanges": "false",
       "BranchName": "main",
       "RepositoryName": "MyTestRepo"
   },
   ```

1. **get-pipeline** 명령을 사용하여 검색한 파이프라인 구조로 작업을 수행할 경우, JSON 파일에서 `metadata` 행을 제거하십시오. 이렇게 하지 않으면 **update-pipeline** 명령에서 사용할 수 없습니다. `"metadata": { }` 행과, `"created"`, `"pipelineARN"` 및 `"updated"` 필드를 제거합니다.

   예를 들어, 구조에서 다음 행을 삭제합니다.

   ```
   "metadata": {
       "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name",
       "created": "date",
       "updated": "date"
   },
   ```

   파일을 저장합니다.

1. 변경 사항을 적용하려면 파이프라인 JSON 파일을 지정하여 **update-pipeline** 명령을 실행합니다.
**중요**  
파일 이름 앞에 `file://`를 포함해야 합니다. 이 명령에 필수적입니다.

   ```
   aws codepipeline update-pipeline --cli-input-json file://pipeline.json
   ```

   이 명령은 편집한 파이프라인의 전체 구조를 반환합니다.
**참고**  
**update-pipeline** 명령을 실행하면 파이프라인이 중지됩니다. **update-pipeline** 명령을 실행할 때 파이프라인을 통해 개정을 실행하는 중이라면 해당 실행이 중지됩니다. 업데이트된 파이프라인을 통해 해당 개정을 실행하려면 파이프라인을 수동으로 시작해야 합니다. **`start-pipeline-execution`** 명령을 사용하여 수동으로 파이프라인을 시작합니다.

# CodeCommit 소스에 대한 EventBridge 규칙 생성(CloudFormation 템플릿)
<a name="pipelines-trigger-source-repo-changes-cfn"></a>



 CloudFormation 를 사용하여 규칙을 생성하려면 다음과 같이 템플릿을 업데이트합니다.<a name="proc-cfn-event-codecommit"></a>

**파이프라인 CloudFormation 템플릿을 업데이트하고 EventBridge 규칙을 생성하려면**

1. 템플릿의에서 `AWS::IAM::Role` CloudFormation 리소스를 `Resources`사용하여 이벤트가 파이프라인을 시작하도록 허용하는 IAM 역할을 구성합니다. 이 항목은 두 가지 정책을 사용하는 역할을 만듭니다.
   + 첫 번째 정책은 가 역할을 수임하도록 허용합니다.
   + 두 번째 정책은 파이프라인을 시작할 권한을 부여합니다.

   **이렇게 변경하는 이유는 무엇입니까?** `AWS::IAM::Role` 리소스를 추가 CloudFormation 하면가 EventBridge에 대한 권한을 생성할 수 있습니다. 이 리소스는 CloudFormation 스택에 추가됩니다.

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

   ```
     EventRole:
       Type: AWS::IAM::Role
       Properties:
         AssumeRolePolicyDocument:
           Version: 2012-10-17		 	 	 
           Statement:
             -
               Effect: Allow
               Principal:
                 Service:
                   - events.amazonaws.com
               Action: sts:AssumeRole
         Path: /
         Policies:
           -
             PolicyName: eb-pipeline-execution
             PolicyDocument:
               Version: 2012-10-17		 	 	 
               Statement:
                 -
                   Effect: Allow
                   Action: codepipeline:StartPipelineExecution
                   Resource: !Join [ '', [ 'arn:aws:codepipeline:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':', !Ref AppPipeline ] ]
   ```

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

   ```
   "EventRole": {
     "Type": "AWS::IAM::Role", 
     "Properties": {
       "AssumeRolePolicyDocument": {
         "Version": "2012-10-17",		 	 	 
         "Statement": [
           {
             "Effect": "Allow",
             "Principal": {
               "Service": [
                 "events.amazonaws.com"
               ]
             },
             "Action": "sts:AssumeRole"
           }
         ]
       },
       "Path": "/",
       "Policies": [
         {
           "PolicyName": "eb-pipeline-execution",
           "PolicyDocument": {
             "Version": "2012-10-17",		 	 	 
             "Statement": [
               {
                 "Effect": "Allow",
                 "Action": "codepipeline:StartPipelineExecution",
                 "Resource": {
                   "Fn::Join": [
                     "",
                     [
                       "arn:aws:codepipeline:",
                       {
                         "Ref": "AWS::Region"
                       },
                       ":",
                       {
                         "Ref": "AWS::AccountId"
                       },
                       ":",
                       {
                         "Ref": "AppPipeline"
                       }
                     ]
   
   ...
   ```

------

1. 템플릿의에서 `AWS::Events::Rule` CloudFormation 리소스를 `Resources`사용하여 EventBridge 규칙을 추가합니다. 이 이벤트 패턴은 리포지토리에 대한 푸시 변경 사항을 모니터링하는 이벤트를 생성합니다. EventBridge가 리포지토리 상태 변경을 감지하면 해당 규칙이 대상 파이프라인에서 `StartPipelineExecution`을 호출합니다.

   **이렇게 변경하는 이유는 무엇입니까?** `AWS::Events::Rule` 리소스를 추가 CloudFormation 하면가 이벤트를 생성할 수 있습니다. 이 리소스는 CloudFormation 스택에 추가됩니다.

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

   ```
     EventRule:
       Type: AWS::Events::Rule
       Properties:
         EventPattern:
           source:
             - aws.codecommit
           detail-type:
             - 'CodeCommit Repository State Change'
           resources:
             - !Join [ '', [ 'arn:aws:codecommit:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':', !Ref RepositoryName ] ]
           detail:
             event:
               - referenceCreated
               - referenceUpdated
             referenceType:
               - branch
             referenceName:
               - main
         Targets:
           -
             Arn: 
               !Join [ '', [ 'arn:aws:codepipeline:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':', !Ref AppPipeline ] ]
             RoleArn: !GetAtt EventRole.Arn
             Id: codepipeline-AppPipeline
   ```

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

   ```
   "EventRule": {
     "Type": "AWS::Events::Rule",
     "Properties": {
       "EventPattern": {
         "source": [
           "aws.codecommit"
         ],
         "detail-type": [
           "CodeCommit Repository State Change"
         ],
         "resources": [
           {
             "Fn::Join": [
               "",
               [
                 "arn:aws:codecommit:",
                 {
                   "Ref": "AWS::Region"
                 },
                 ":",
                 {
                   "Ref": "AWS::AccountId"
                 },
                 ":",
                 {
                   "Ref": "RepositoryName"
                 }
               ]
             ]
           }
         ],
         "detail": {
           "event": [
             "referenceCreated",
             "referenceUpdated"
           ],
           "referenceType": [
             "branch"
           ],
           "referenceName": [
             "main"
           ]
         }
       },
       "Targets": [
         {
           "Arn": {
             "Fn::Join": [
               "",
               [
                 "arn:aws:codepipeline:",
                 {
                   "Ref": "AWS::Region"
                 },
                 ":",
                 {
                   "Ref": "AWS::AccountId"
                 },
                 ":",
                 {
                   "Ref": "AppPipeline"
                 }
               ]
             ]
           },
           "RoleArn": {
             "Fn::GetAtt": [
               "EventRole",
               "Arn"
             ]
           },
           "Id": "codepipeline-AppPipeline"
         }
       ]
     }
   },
   ```

------

1. (선택 사항) 특정 이미지 ID에 대해 소스 오버라이드를 적용하는 입력 변환기를 구성하려면 다음 YAML 스니펫을 사용합니다. 다음 예제에서는 다음과 같은 경우 재정의를 구성합니다.
   + 이 예제에서 `actionName`, `Source`는 소스 이벤트에서 파생되지 않은 파이프라인 생성 시 정의된 동적 값입니다.
   + 이 예제에서 `revisionType`, `COMMIT_ID`는 소스 이벤트에서 파생되지 않은 파이프라인 생성 시 정의된 동적 값입니다.
   + 이 예제에서 `revisionValue`, <*revisionValue*>는 소스 이벤트 변수에서 파생됩니다.
   + `BranchName` 및 `Value`에 대한 출력 변수가 지정됩니다.

   ```
   Rule: my-rule
   Targets:
   - Id: MyTargetId
     Arn: pipeline-ARN
     InputTransformer:
       sourceRevisions:
         actionName: Source
         revisionType: COMMIT_ID
         revisionValue: <revisionValue>
       variables:
       - name: BranchName
         value: value
   ```

1. 업데이트된 템플릿을 로컬 컴퓨터에 저장한 다음 CloudFormation 콘솔을 엽니다.

1. 스택을 선택한 후 **현재 스택에 대한 변경 세트 만들기**를 선택합니다.

1. 템플릿을 업로드한 후 CloudFormation에 나열된 변경 사항을 확인합니다. 이는 스택에 적용될 변경 사항입니다. 목록에 새로운 리소스가 표시됩니다.

1. **실행**을 선택합니다.<a name="proc-cfn-flag-codecommit"></a>

**파이프라인의 PollForSourceChanges 파라미터를 편집하려면**
**중요**  
많은 경우 파이프라인을 생성할 때 `PollForSourceChanges` 파라미터 기본값은 true입니다. 이벤트 기반 변경 감지를 추가할 때는 출력에 파라미터를 추가하고 false로 설정하여 폴링을 비활성화해야 합니다. 그렇지 않으면 파이프라인이 단일 소스 변경 시 두 번 시작됩니다. 자세한 내용은 [`PollForSourceChanges` 파라미터의 유효한 설정](PollForSourceChanges-defaults.md)을 참조하세요.
+ 템플릿에서 `PollForSourceChanges`를 `false`로 변경합니다. `PollForSourceChanges`를 파이프라인 정의에 포함하지 않은 경우 추가하고 `false`로 설정하세요.

  **이렇게 변경하는 이유는 무엇입니까?** 이 파라미터를 `false`로 변경하면 정기적 확인이 비활성화되어 이벤트 기반 변경 탐지만 사용할 수 있습니다.

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

  ```
            Name: Source
            Actions: 
              - 
                Name: SourceAction
                ActionTypeId: 
                  Category: Source
                  Owner: AWS
                  Version: 1
                  Provider: CodeCommit
                OutputArtifacts: 
                  - Name: SourceOutput
                Configuration: 
                  BranchName: !Ref BranchName
                  RepositoryName: !Ref RepositoryName
                  PollForSourceChanges: false
                RunOrder: 1
  ```

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

  ```
  {
    "Name": "Source", 
    "Actions": [
      {
        "Name": "SourceAction",
        "ActionTypeId": {
          "Category": "Source",
          "Owner": "AWS",
          "Version": 1,
          "Provider": "CodeCommit"
        },
        "OutputArtifacts": [
          {
            "Name": "SourceOutput"
          }
        ],
        "Configuration": {
          "BranchName": {
            "Ref": "BranchName"
          },
          "RepositoryName": {
            "Ref": "RepositoryName"
          },
          "PollForSourceChanges": false
        },
        "RunOrder": 1
      }
    ]
  },
  ```

------