

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

# CodeDeploy 이벤트에 대한 트리거 만들기
<a name="monitoring-sns-event-notifications-create-trigger"></a>

 AWS CodeDeploy 배포 또는 인스턴스 이벤트에 대해 Amazon Simple Notification Service(Amazon SNS) 주제를 게시하는 트리거를 생성할 수 있습니다. 그런 다음, 해당 이벤트가 발생하면 연결된 주제의 모든 구독자가 주제에 지정된 엔드포인트(예: SMS 메시지 또는 이메일 메시지)를 통해 알림을 수신합니다. Amazon SNS 주제를 구독하기 위한 다양한 방법을 제공합니다.

트리거를 생성하기 전에 트리거가 가리키도록 Amazon SNS 주제를 설정해야 합니다. 자세한 내용은 [주제 만들기](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)를 참조하세요. 주제를 만들면 목적을 식별하는 이름을 `Topic-group-us-west-3-deploy-fail` 또는 `Topic-group-project-2-instance-stop` 등의 형식으로 지정하는 것이 좋습니다.

또한 트리거에 대한 알림을 보내려면 CodeDeploy 서비스 역할에 Amazon SNS 권한을 부여해야 합니다. 자세한 내용은 [CodeDeploy 서비스 역할에 Amazon SNS 권한 부여](monitoring-sns-event-notifications-permisssions.md) 단원을 참조하세요.

주제를 만든 후에는 구독자를 추가할 수 있습니다. 주제 생성, 관리 및 구독에 대한 자세한 내용은 [Amazon Simple Notification Service란 무엇입니까?](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)을 참조하세요.



## CodeDeploy 이벤트에 대한 알림을 전송하는 트리거 만들기(콘솔)
<a name="monitoring-sns-event-notifications-create-trigger-console"></a>

CodeDeploy 콘솔을 사용하여 CodeDeploy 이벤트에 대한 트리거를 만들 수 있습니다. 설정 프로세스를 마치면 권한 및 트리거 세부 정보가 둘 다 제대로 설정되었는지 확인하기 위해 테스트 알림 메시지가 전송됩니다.

**CodeDeploy 이벤트에 대한 트리거를 만들려면**

1. 에서 AWS CodeDeploy 콘솔을 AWS Management Console엽니다.

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) CodeDeploy 콘솔을 엽니다.
**참고**  
[CodeDeploy 시작하기](getting-started-codedeploy.md)에서 설정한 사용자와 동일한 사용자로 로그인합니다.

1. 탐색 창에서 **배포**를 확장하고 **애플리케이션**을 선택합니다.

1. **애플리케이션** 페이지에서 트리거를 추가할 배포 그룹과 연결된 애플리케이션 이름을 선택합니다.

1. **애플리케이션 세부 정보** 페이지에서 트리거를 추가할 배포 그룹을 선택합니다.

1.  **편집**을 선택합니다.

1.  **고급 옵션**을 확장합니다.

1.  **트리거** 영역에서 **트리거 생성**을 선택합니다.

1. **배포 트리거 생성** 창에서 다음을 수행합니다.

   1. **트리거 이름**에 용도를 쉽게 식별할 수 있도록 트리거 이름을 입력합니다. `Trigger-group-us-west-3-deploy-fail` 또는 `Trigger-group-eu-central-instance-stop` 등의 형식이 좋습니다.

   1. **이벤트**에서 Amazon SNS 주제가 알림을 전송하도록 트리거할 이벤트 유형을 선택합니다.

   1. **Amazon SNS 주제**에서 이 트리거에 대한 알림을 전송하기 위해 만든 주제 이름을 선택합니다.

   1.  **트리거 생성**을 선택합니다. CodeDeploy는 테스트 알림을 전송하여 CodeDeploy와 Amazon SNS 주제 간의 액세스 구성이 올바른지 확인합니다. 선택한 주제 엔드포인트 유형에 따라 주제를 구독하는 경우, SMS 메시지 또는 이메일 메시지로 확인 메시지가 수신됩니다.

1.  **변경 사항 저장**을 선택합니다.

## CodeDeploy 이벤트에 대한 알림을 전송하는 트리거 만들기(CLI)
<a name="monitoring-sns-event-notifications-create-trigger-cli"></a>

CLI를 사용하면 배포 그룹을 만들 때 트리거를 포함하거나 기본 배포 그룹에 트리거를 추가할 수 있습니다.

### 새 배포 그룹에 대한 알림을 전송하는 트리거를 만들려면
<a name="monitoring-sns-event-notifications-create-trigger-cli-new"></a>

JSON 파일을 만들어 배포 그룹을 구성한 다음 `--cli-input-json` 옵션을 사용하여 [create-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-group.html) 명령을 실행합니다.

`--generate-cli-skeleton` 옵션을 통해 JSON 형식의 사본을 가져와 일반 텍스트 편집기에 필수 값을 입력하면 JSON 파일을 아주 쉽게 만들 수 있습니다.

1. 다음 명령을 실행한 후 일반 텍스트 편집기에 결과를 복사합니다.

   ```
   aws deploy create-deployment-group --generate-cli-skeleton
   ```

1. 출력에 기존 CodeDeploy 애플리케이션의 이름을 추가합니다.

   ```
   {
       "applicationName": "TestApp-us-east-2",
       "deploymentGroupName": "",
       "deploymentConfigName": "",
       "ec2TagFilters": [
           {
               "Key": "",
               "Value": "",
               "Type": ""
           }
       ],
       "onPremisesInstanceTagFilters": [
           {
               "Key": "",
               "Value": "",
               "Type": ""
           }
       ],
       "autoScalingGroups": [
           ""
       ],
       "serviceRoleArn": "",
       "triggerConfigurations": [
           {
               "triggerName": "",
               "triggerTargetArn": "",
               "triggerEvents": [
                   ""
               ]
           }
       ]
   }
   ```

1. 구성할 파라미터 값을 입력합니다.

   [create-deployment-group](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_CreateDeploymentGroup.html) 명령을 사용할 때 최소한 다음 파라미터 값을 입력해야 합니다.
   + `applicationName`: 이미 계정에 생성된 애플리케이션 이름 
   + `deploymentGroupName`: 생성 중인 배포 그룹의 이름
   + `serviceRoleArn`: 계정에서 CodeDeploy에 대해 설정된 기존 서비스 역할의 ARN 자세한 내용은 [2단계: CodeDeploy에 대한 서비스 역할 생성](getting-started-create-service-role.md) 단원을 참조하세요.

   `triggerConfigurations` 섹션에서 다음 파라미터 값을 입력합니다.
   + `triggerName`: 쉽게 식별할 수 있도록 트리거 이름을 지정합니다. `Trigger-group-us-west-3-deploy-fail` 또는 `Trigger-group-eu-central-instance-stop` 등의 형식이 좋습니다.
   + `triggerTargetArn`: 트리거에 연결하기 위해 생성한 Amazon SNS주제의 ARN으로, 형식은 `arn:aws:sns:us-east-2:444455556666:NewTestTopic`입니다.
   + `triggerEvents`: 알림을 트리거하려는 이벤트 유형 하나 이상의 이벤트 유형을 지정할 수 있으며, 이벤트 유형 이름이 여러 개인 경우 쉼표로 구분합니다(예: `"triggerEvents":["DeploymentSuccess","DeploymentFailure","InstanceFailure"]`). 하나 이상의 이벤트 유형을 추가할 때, 해당되는 모든 유형 알림이 각기 다른 주제가 아닌 지정된 주제로 전송됩니다. 다음 이벤트 유형 중에서 선택할 수 있습니다.
     + DeploymentStart
     + DeploymentSuccess
     + DeploymentFailure
     + DeploymentStop
     + DeploymentRollback
     + DeploymentReady(블루/그린 배포의 대체 인스턴스에만 적용됨)
     + InstanceStart
     + InstanceSuccess
     + InstanceFailure
     + InstanceReady(블루/그린 배포의 대체 인스턴스에만 적용됨)

   다음 구성 예제는 `TestApp-us-east-2`라는 애플리케이션에 대해 `dep-group-ghi-789-2`라는 배포 그룹을 생성하고, 배포가 시작, 성공 또는 실패할 때마다 알림 메시지를 전송하는 트리거를 생성합니다.

   ```
   {
       "applicationName": "TestApp-us-east-2",
       "deploymentConfigName": "CodeDeployDefault.OneAtATime",
       "deploymentGroupName": "dep-group-ghi-789-2",
       "ec2TagFilters": [
           {
               "Key": "Name",
               "Value": "Project-ABC",
               "Type": "KEY_AND_VALUE"
           }
       ],
       "serviceRoleArn": "arn:aws:iam::444455556666:role/AnyCompany-service-role",
       "triggerConfigurations": [
           {
               "triggerName": "Trigger-group-us-east-2",
               "triggerTargetArn": "arn:aws:sns:us-east-2:444455556666:us-east-deployments",
               "triggerEvents": [
                   "DeploymentStart",
                   "DeploymentSuccess",
                   "DeploymentFailure"
               ]
           }
       ]
   }
   ```

1. 업데이트를 JSON 파일로 저장한 후 **create-deployment-group** 명령을 실행할 때 `--cli-input-json` 옵션을 사용하여 해당 파일을 호출합니다.
**중요**  
파일 이름 앞에 `file://`를 포함해야 합니다. 이 명령에 필수적입니다.

   ```
   aws deploy create-deployment-group --cli-input-json file://filename.json
   ```

   만들기 프로세스를 마치면 권한 및 트리거 세부 정보가 둘 다 제대로 설정되었음을 나타내는 테스트 알림 메시지가 수신됩니다.

### 기존 배포 그룹에 대한 알림을 전송하는 트리거를 만들려면
<a name="monitoring-sns-event-notifications-create-trigger-cli-existing"></a>

 AWS CLI 를 사용하여 CodeDeploy 이벤트에 대한 트리거를 기존 배포 그룹에 추가하려면 JSON 파일을 생성하여 배포 그룹을 업데이트한 다음 `--cli-input-json` 옵션을 사용하여 [update-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-group.html) 명령을 실행합니다.

**get-deployment-group** 명령을 실행하여 배포 그룹 구성의 사본을 JSON 형식으로 가져온 다음 일반 텍스트 편집기에서 파라미터 값을 업데이트하면 JSON 파일을 아주 쉽게 만들 수 있습니다.

1.  다음 명령을 실행한 후 일반 텍스트 편집기에 결과를 복사합니다.

   ```
   aws deploy get-deployment-group --application-name application --deployment-group-name deployment-group
   ```

1. 출력에서 다음을 삭제합니다.
   + 출력 시작 부분에서 `{ "deploymentGroupInfo":`를 삭제합니다.
   + 출력 끝부분에서 `}`를 삭제합니다.
   + `deploymentGroupId`을 포함하는 행을 삭제합니다.
   + `deploymentGroupName`을 포함하는 행을 삭제합니다.

   텍스트 파일의 내용이 다음과 같아야 합니다.

   ```
   {
       "applicationName": "TestApp-us-east-2",
       "deploymentConfigName": "CodeDeployDefault.OneAtATime",
       "autoScalingGroups": [],
       "ec2TagFilters": [
           {
               "Type": "KEY_AND_VALUE",
               "Value": "Project-ABC",
               "Key": "Name"
           }
       ],
       "triggerConfigurations": [],
       "serviceRoleArn": "arn:aws:iam::444455556666:role/AnyCompany-service-role",
       "onPremisesInstanceTagFilters": []
   }
   ```

1. `triggerConfigurations` 섹션에, `triggerEvents`, `triggerTargetArn` 및 `triggerName` 파라미터에 대한 데이터를 추가합니다. 트리거 구성 파라미터에 대한 자세한 내용은 [TriggerConfig](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_TriggerConfig.html)를 참조하세요.

   텍스트 파일의 내용이 다음과 같아야 합니다. 이 코드는 배포가 시작, 성공 또는 실패할 때마다 전송할 알림 메시지를 표시합니다.

   ```
   {
       "applicationName": "TestApp-us-east-2",
       "deploymentConfigName": "CodeDeployDefault.OneAtATime",
       "autoScalingGroups": [],
       "ec2TagFilters": [
           {
               "Type": "KEY_AND_VALUE",
               "Value": "Project-ABC",
               "Key": "Name"
           }
       ],
       "triggerConfigurations": [
           {
               "triggerEvents": [
                   "DeploymentStart",
                   "DeploymentSuccess",
                   "DeploymentFailure"
               ],
               "triggerTargetArn": "arn:aws:sns:us-east-2:444455556666:us-east-deployments",
               "triggerName": "Trigger-group-us-east-2"
           }
       ],
       "serviceRoleArn": "arn:aws:iam::444455556666:role/AnyCompany-service-role",
       "onPremisesInstanceTagFilters": []
   }
   ```

1. 업데이트를 JSON 파일로 저장한 후 `--cli-input-json` 옵션을 사용하여 [update-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-group.html) 명령을 실행합니다. `--current-deployment-group-name` 옵션을 포함하고 *filename*을 JSON 파일 이름으로 바꿔야 합니다.
**중요**  
파일 이름 앞에 `file://`를 포함해야 합니다. 이 명령에 필수적입니다.

   ```
   aws deploy update-deployment-group --current-deployment-group-name deployment-group-name --cli-input-json file://filename.json
   ```

   만들기 프로세스를 마치면 권한 및 트리거 세부 정보가 둘 다 제대로 설정되었음을 나타내는 테스트 알림 메시지가 수신됩니다.