Amazon CloudWatch Events에는 AWS CodeBuild에 대한 지원이 내장되어 있습니다. CloudWatch Events는 AWS 리소스의 변경 사항을 설명하는 시스템 이벤트 스트림입니다. CloudWatch Events를 사용하여 관심 있는 이벤트를 수행할 자동 작업과 연결하는 선언적 규칙을 작성합니다. 이 샘플은 Amazon CloudWatch Events와 Amazon Simple Notification Service(SNS)를 사용하여 빌드가 성공하거나, 실패하거나, 한 빌드 단계에서 다른 빌드 단계로 진행하거나, 이러한 이벤트가 조합될 때마다 구독자에게 빌드 알림을 보냅니다.
중요
이 샘플을 실행하면 AWS 계정에 요금이 발생할 수 있습니다. 여기에는 CodeBuild 및 AWS 리소스에 대한 가능한 요금과 Amazon CloudWatch 및 Amazon SNS과 관련된 작업이 포함됩니다. 자세한 내용은 CodeBuild 요금
빌드 알림 샘플 실행
다음 절차에 따라 빌드 알림 샘플을 실행합니다.
이 샘플을 실행하려면
-
Amazon SNS에서 이 샘플에 사용할 주제를 설정하고 구독한 경우 4단계로 건너뜁니다. 그렇지 않은 경우, AWS 루트 계정이나 관리자 사용자 대신 IAM 사용자를 사용하여 Amazon SNS로 작업하고 있는 경우
### BEGIN ADDING STATEMENT HERE ###
과### END ADDING STATEMENT HERE ###
사이의 명령문을 사용자(또는 사용자가 연결되어 있는 IAM 그룹)에 추가합니다. AWS 루트 계정을 사용하는 것은 권장되지 않습니다. 이 명령문을 사용하면 Amazon SNS의 주제로의 알림 전송을 보고, 생성하고, 구독하고, 테스트할 수 있습니다. 간결하게 나타내고 명령문 추가 위치를 알 수 있도록 줄임표(...
)가 사용되었습니다. 어떤 명령문도 제거하지 않아야 하며, 이러한 줄임표는 기존 정책에 입력하지 않아야 합니다.{ "Statement": [
### BEGIN ADDING STATEMENT HERE ###
{ "Action": [ "sns:CreateTopic", "sns:GetTopicAttributes", "sns:List*", "sns:Publish", "sns:SetTopicAttributes", "sns:Subscribe" ], "Resource": "*", "Effect": "Allow" },### END ADDING STATEMENT HERE ###
... ], "Version": "2012-10-17" }참고
이 정책을 수정하는 IAM 엔터티에는 정책을 수정하는 IAM의 권한이 있어야 합니다.
자세한 내용은 고객 관리형 정책 편집 또는 IAM 사용 설명서의 인라인 정책 작업(콘솔)에서 “그룹, 사용자 또는 역할에 대한 인라인 정책을 편집 또는 삭제하려면” 섹션을 참조하세요.
-
Amazon SNS에서 주제를 생성하거나 식별합니다. AWS CodeBuild에서는 CloudWatch Events를 사용하여 Amazon SNS를 통해 이 주제에 빌드 알림을 보냅니다.
주제를 생성하려면 다음과 같이 합니다.
-
https://console.aws.amazon.com/sns
에서 Amazon SNS 콘솔을 엽니다. -
주제 생성을 선택합니다.
-
새로운 주제 생성의 주제 이름에 주제 이름(예:
CodeBuildDemoTopic
)을 입력합니다. (다른 이름을 선택하는 경우 이 샘플 전체에서 해당 이름으로 바꿉니다.) -
주제 생성을 선택합니다.
-
주제 세부 정보: CodeBuildDemoTopic 페이지에서 주제 ARN 값을 복사합니다. 다음 단계에서 이 값을 사용합니다.
자세한 내용은 Amazon SNS 개발자 안내서의 주제 생성을 참조하세요.
-
-
한 명 이상의 수신자가 주제를 구독하여 이메일 알림을 수신하게 합니다.
수신자가 주제를 구독하게 하려면 다음과 같이 합니다.
-
이전 단계에서 Amazon SNS 콘솔을 연 상태에서 탐색 창에서 구독을 선택한 다음, 구독 생성을 선택합니다.
-
구독 생성의 주제 ARN에 이전 단계에서 복사한 주제 ARN을 붙여 넣습니다.
-
프로토콜에서 이메일을 선택합니다.
-
엔드포인트에 수신자의 전체 이메일 주소를 입력합니다.
-
구독 생성을 선택합니다.
-
Amazon SNS가 수신자에게 구독 확인 이메일을 보냅니다. 수신자는 알림을 수신하려면 구독 확인 이메일에서 구독 확인을 선택해야 합니다. 수신자가 링크를 클릭한 후 구독에 성공하면 Amazon SNS가 해당 수신자의 웹 브라우저에 확인 메시지를 표시합니다.
자세한 내용은 Amazon SNS 개발자 가이드의 주제 구독을 참조하세요.
-
-
AWS 루트 계정이나 관리자 사용자 대신 IAM 사용자를 사용하여 CloudWatch Events로 작업하고 있는 경우
### BEGIN ADDING STATEMENT HERE ###
과### END ADDING STATEMENT HERE ###
사이의 명령문을 사용자(또는 사용자가 연결되어 있는 IAM 그룹)에 추가합니다. AWS 루트 계정을 사용하는 것은 권장되지 않습니다. 이 명령문은 사용자가 CloudWatch Events에서 작업할 수 있도록 하는 데 사용됩니다. 간결하게 나타내고 명령문 추가 위치를 알 수 있도록 줄임표(...
)가 사용되었습니다. 어떤 명령문도 제거하지 않아야 하며, 이러한 줄임표는 기존 정책에 입력하지 않아야 합니다.{ "Statement": [
### BEGIN ADDING STATEMENT HERE ###
{ "Action": [ "events:*", "iam:PassRole" ], "Resource": "*", "Effect": "Allow" },### END ADDING STATEMENT HERE ###
... ], "Version": "2012-10-17" }참고
이 정책을 수정하는 IAM 엔터티에는 정책을 수정하는 IAM의 권한이 있어야 합니다.
자세한 내용은 고객 관리형 정책 편집 또는 IAM 사용 설명서의 인라인 정책 작업(콘솔)에서 “그룹, 사용자 또는 역할에 대한 인라인 정책을 편집 또는 삭제하려면” 섹션을 참조하세요.
-
CloudWatch Events에서 규칙을 생성합니다. 이 작업을 수행하려면 https://console.aws.amazon.com/cloudwatch
에서 CloudWatch 콘솔을 엽니다. -
탐색 창의 이벤트에서 규칙을 선택한 다음 규칙 생성을 선택합니다.
-
1단계: 규칙 생성 페이지에서 이벤트 패턴 및 서비스별 이벤트와 일치시킬 이벤트 패턴 빌드가 선택된 상태여야 합니다.
-
서비스 이름에서 CodeBuild를 선택합니다. 이벤트 유형에서 모든 이벤트가 이미 선택된 상태여야 합니다.
-
이벤트 패턴 미리 보기에 다음 코드가 표시되어야 합니다.
{ "source": [ "aws.codebuild" ] }
-
편집을 선택하여 이벤트 패턴 미리 보기를 다음 두 가지 규칙 패턴 중 하나로 교체합니다.
이 첫 번째 규칙 패턴은 빌드가 시작되거나 완료될 때 AWS CodeBuild에 지정된 빌드 프로젝트에 대해 이벤트를 트리거합니다.
{ "source": [ "aws.codebuild" ], "detail-type": [ "CodeBuild Build State Change" ], "detail": { "build-status": [ "IN_PROGRESS", "SUCCEEDED", "FAILED", "STOPPED" ], "project-name": [ "
my-demo-project-1
", "my-demo-project-2
" ] } }위의 규칙에서 다음과 같이 코드를 변경하세요.
-
빌드가 시작되거나 완료될 때 이벤트를 트리거하려면
build-status
어레이에 표시된 모든 값을 그대로 두거나build-status
어레이를 모두 제거합니다. -
빌드가 완료될 때만 이벤트를 트리거하려면
build-status
배열에서IN_PROGRESS
를 제거합니다. -
빌드가 시작될 때만 이벤트를 트리거하려면
build-status
배열에서IN_PROGRESS
를 제외한 모든 값을 제거합니다. -
모든 빌드 프로젝트에 대해 이벤트를 트리거하려면
project-name
배열을 모두 제거합니다. -
개별 빌드 프로젝트에 대해서만 이벤트를 트리거하려면
project-name
배열에 각 빌드 프로젝트의 이름을 지정합니다.
이 두 번째 규칙 패턴은 AWS CodeBuild에 지정된 빌드 프로젝트에 대해 빌드가 한 빌드 단계에서 다른 빌드 단계로 이동할 때마다 이벤트를 트리거합니다.
{ "source": [ "aws.codebuild" ], "detail-type": [ "CodeBuild Build Phase Change" ], "detail": { "completed-phase": [ "SUBMITTED", "PROVISIONING", "DOWNLOAD_SOURCE", "INSTALL", "PRE_BUILD", "BUILD", "POST_BUILD", "UPLOAD_ARTIFACTS", "FINALIZING" ], "completed-phase-status": [ "TIMED_OUT", "STOPPED", "FAILED", "SUCCEEDED", "FAULT", "CLIENT_ERROR" ], "project-name": [ "
my-demo-project-1
", "my-demo-project-2
" ] } }위의 규칙에서 다음과 같이 코드를 변경하세요.
-
모든 빌드 단계 변경(각 빌드에 대해 최대 9개의 알림을 보낼 수 있음)에 대해 이벤트를 트리거하려면
completed-phase
어레이에 표시된 모든 값을 그대로 두거나completed-phase
어레이를 모두 제거합니다. -
개별 빌드 단계 변경에 대해서만 이벤트를 트리거하려면 이벤트를 트리거하지 않으려는
completed-phase
배열의 각 빌드 단계 이름을 제거합니다. -
모든 빌드 단계 상태 변경에 대한 이벤트를 트리거하려면
completed-phase-status
배열에 표시된 모든 값을 그대로 두거나completed-phase-status
배열을 모두 제거합니다. -
개별 빌드 단계 상태 변경에 대해서만 이벤트를 트리거하려면 이벤트를 트리거하지 않으려는
completed-phase-status
배열의 각 빌드 단계 이름을 제거합니다. -
모든 빌드 프로젝트에 대한 이벤트를 트리거하려면
project-name
배열을 제거합니다. -
개별 빌드 프로젝트에 대한 이벤트만 트리거하려면
project-name
배열에 각 빌드 프로젝트의 이름을 지정합니다.
이벤트 패턴에 대한 자세한 내용은 Amazon EventBridge 사용 설명서에서 이벤트 패턴을 참조하세요.
이벤트 패턴을 사용한 필터링에 대한 자세한 내용은 Amazon EventBridge 사용 설명서에서 이벤트 패턴을 사용한 콘텐츠 기반 필터링을 참조하세요.
참고
빌드 상태 변경 및 빌드 단계 변경에 대한 이벤트를 트리거하려는 경우, 빌드 상태 변경에 대한 규칙 및 빌드 단계 변경을 위한 규칙이라는 두 가지 별도의 규칙을 생성해야 합니다. 두 가지 규칙을 단일 규칙으로 결합하려고 하면 결합된 해당 규칙으로 인해 예기치 않은 결과가 발생하거나 작업이 모두 중단될 수 있습니다.
코드 교체를 완료하면 저장을 선택합니다.
-
-
대상(Targets)에서 대상 추가(Add target)를 선택합니다.
-
대상 목록에서 SNS 주제를 선택합니다.
-
주제에서 이전에 식별했거나 생성한 주제를 선택합니다.
-
입력 구성을 확장한 후 입력 변환기를 선택합니다.
-
입력 경로 상자에 다음 입력 경로 중 하나를 입력합니다.
CodeBuild Build State Change
의detail-type
값을 사용하는 규칙에 대해 다음을 입력합니다.{"build-id":"$.detail.build-id","project-name":"$.detail.project-name","build-status":"$.detail.build-status"}
CodeBuild Build Phase Change
의detail-type
값을 사용하는 규칙에 대해 다음을 입력합니다.{"build-id":"$.detail.build-id","project-name":"$.detail.project-name","completed-phase":"$.detail.completed-phase","completed-phase-status":"$.detail.completed-phase-status"}
다른 유형의 정보를 보려면 빌드 알림 입력 형식 참조 섹션을 참조하세요.
-
입력 템플릿 상자에 다음 입력 템플릿 중 하나를 입력합니다.
CodeBuild Build State Change
의detail-type
값을 사용하는 규칙에 대해 다음을 입력합니다."Build '<build-id>' for build project '<project-name>' has reached the build status of '<build-status>'."
CodeBuild Build Phase Change
의detail-type
값을 사용하는 규칙에 대해 다음을 입력합니다."Build '<build-id>' for build project '<project-name>' has completed the build phase of '<completed-phase>' with a status of '<completed-phase-status>'."
-
세부 정보 구성을 선택합니다.
-
2단계: 규칙 세부 정보 구성 페이지에 이름 및 선택적인 설명을 입력합니다. 상태에 대해 사용을 선택한 상태로 둡니다.
-
Create rule을 선택합니다.
-
빌드 프로젝트를 생성하고, 빌드를 실행하고, 빌드 정보를 확인합니다.
-
CodeBuild에서 현재 빌드 알림을 성공적으로 보내고 있는지 확인합니다. 예를 들어 빌드 알림 이메일이 현재 받은 편지함에 있는지 확인합니다.
규칙의 동작을 변경하려면 CloudWatch 콘솔에서 변경하려는 규칙을 선택한 후 작업, 편집을 차례로 선택합니다. 규칙을 변경하고 구성 세부 정보를 선택한 후 규칙 업데이트를 선택합니다.
규칙을 사용하여 빌드 알림을 보내는 것을 중지하려면 CloudWatch 콘솔에서 사용을 중지하려는 규칙을 선택한 후 작업, 비활성을 차례로 선택합니다.
규칙을 모두 삭제하려면 CloudWatch 콘솔에서 삭제하려는 규칙을 선택한 후 작업, 삭제를 차례로 선택합니다.