

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

# Amazon ECR 소스에 대한 EventBridge 규칙 생성(CLI)
<a name="create-cwe-ecr-source-cli"></a>

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

**Amazon ECR이 이벤트 소스이고 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` 파라미터를 포함시킵니다.

   **이렇게 변경하는 이유는 무엇입니까?** 이미지 푸시가 수행되는 방식을 지정하는 규칙과 이벤트에서 시작되는 파이프라인의 이름을 지정하는 대상을 사용하여 이벤트를 생성해야 합니다.

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

   ```
   aws events put-rule --name "MyECRRepoRule" --event-pattern "{\"detail-type\":[\"ECR Image Action\"],\"source\":[\"aws.ecr\"],\"detail\":{\"action-type\":[\"PUSH\"],\"image-tag\":[\"latest\"],\"repository-name\":[\"eb-test\"],\"result\":[\"SUCCESS\"]}}}" --role-arn "arn:aws:iam::ACCOUNT_ID:role/Role-for-MyRule"
   ```
**참고**  
Amazon ECR 이벤트에 지원되는 전체 이벤트 패턴을 보려면 [Amazon ECR 이벤트 및 EventBridge](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-eventbridge.html) 또는 [Amazon Elastic Container Registry Events](https://docs.aws.amazon.com/eventbridge/latest/userguide/event-types.html#ecr-event-types)를 참조하세요.

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

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

   ```
   aws events put-targets --rule MyECRRepoRule --targets Id=1,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline,RoleArn=arn:aws:iam::80398EXAMPLE:role/Role-for-MyRule
   ```

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

   ```
   {
       "Rule": "my-rule",
       "Targets": [
           {
               "Id": "MyTargetId",
               "Arn": "ARN",
               "InputTransformer": {
                   "InputPathsMap": {
                       "revisionValue": "$.detail.image-digest"
                   },
                   "InputTemplate": {
                       "sourceRevisions": [
                           {
                               "actionName": "Source",
                               "revisionType": "IMAGE_DIGEST",
                               "revisionValue": "<revisionValue>"
                           }
                       ]
                   }
               }
           }
       ]
   }
   ```