View a markdown version of this page

Image Builder 파이프라인과 함께 EventBridge 사용 - EC2 Image Builder

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

Image Builder 파이프라인과 함께 EventBridge 사용

AWS 및 파트너 서비스는 이벤트를 거의 실시간으로 Amazon EventBridge 이벤트 버스로 스트리밍합니다. 자체 사용자 지정 이벤트를 보낼 수도 있습니다. 이벤트 버스는 규칙을 사용하여 각 이벤트를 하나 이상의 대상으로 라우팅합니다.

Image Builder는 다음 두 가지 독립적인 방향으로 EventBridge와 함께 작동합니다.

  • 규칙에서 파이프라인 빌드를 시작합니다. Image Builder 파이프라인을 규칙 대상으로 설정할 수 있으므로 이벤트가 규칙과 일치하거나 일정이 실행될 때 EventBridge가 파이프라인을 실행합니다. 일정에 따라 파이프라인 빌드 트리거이벤트 패턴에서 파이프라인 빌드 트리거 섹션을 참조하세요.

  • Image Builder가 보내는 이벤트에 대응합니다. Image Builder는 예를 들어 이미지가 되거나 스캔에서 CVE가 감지되는 경우 중요한 변경이 발생할 때 기본 이벤트 버스AVAILABLE에 이벤트를 게시합니다. CVEs 이러한 이벤트를 규칙과 일치시키고 Lambda 함수 또는 Amazon SNS 주제와 같은 대상으로 라우팅하여 자체 자동화를 시작할 수 있습니다. Image Builder가 보내는 이벤트에 대응을(를) 참조하세요.

Image Builder가 보내는 이벤트와 각 이벤트의 필드에 대한 자세한 내용은 섹션을 참조하세요Image Builder에서 보내는 이벤트 메시지.

참고

이벤트 버스는 리전별로 다릅니다. 호출하는 규칙과 리소스는 일반적으로 동일한 리전에 있습니다. 리전 간에 라우팅하려면 대상 리전의 이벤트 버스를 대상으로 지정합니다. Image Builder는 빌드가 실행되는 리전의 기본 이벤트 버스에 이벤트를 게시합니다.

EventBridge 용어

다음 용어는 EventBridge가 Image Builder 파이프라인과 통합되는 방법을 이해하는 데 도움이 됩니다.

Event

하나 이상의 애플리케이션 리소스에 영향을 미칠 수 있는 환경 변화에 대해 설명합니다. 환경은 AWS 환경, SaaS 파트너 서비스 또는 애플리케이션, 애플리케이션 또는 서비스 중 하나일 수 있습니다. 타임라인에서 예정된 이벤트를 설정할 수도 있습니다.

이벤트 버스

애플리케이션과 서비스로부터 이벤트 데이터를 수신하는 파이프라인

소스

이벤트를 이벤트 버스로 보낸 서비스 또는 애플리케이션

대상

EventBridge가 규칙과 일치할 때 호출하여 이벤트의 데이터를 대상으로 전달하는 리소스 또는 엔드포인트

규칙

규칙은 들어오는 이벤트에서 일치하는 것을 찾아서 대상으로 전송하여 처리합니다. 단일 규칙으로 이벤트를 여러 대상으로 전송한 다음, 병렬로 실행할 수 있습니다. 규칙은 이벤트 패턴 또는 일정을 기반으로 합니다.

패턴

이벤트 패턴은 대상 작업을 시작하기 위해 규칙이 일치시키는 이벤트 구조와 필드를 정의합니다.

일정

일정 규칙은 Image Builder 파이프라인을 실행하여 분기별로 이미지를 새로 고치는 등의 작업을 일정에 따라 수행합니다. 일정 표현식에는 두 가지 유형이 있습니다.

  • cron 표현식 - 간단한 기준(예: 특정 날짜에 매주 실행)을 설명하는 cron 구문을 사용하여 특정 일정 기준과 일치시킵니다. 분기별로 매월 5일인 오전 2시에서 오전 4시 사이에 실행하는 것과 같이 더 복잡한 기준을 설정할 수도 있습니다.

  • rate 표현식 - 대상을 호출할 때 일정한 간격(예: 12시간마다)을 지정합니다.

Image Builder 파이프라인에 대한 EventBridge 규칙 보기

Image Builder 이미지 파이프라인 세부 정보 페이지의 EventBridge 규칙 탭에는 사용자 계정이 액세스할 수 있는 EventBridge 이벤트 버스와 현재 파이프라인에 적용되는 선택된 이벤트 버스에 대한 규칙이 표시됩니다. 또한 이 탭은 새 리소스를 생성할 수 있는 EventBridge 콘솔로 직접 연결됩니다.

EventBridge 콘솔에 연결된 액션
  • 이벤트 버스 생성

  • 규칙 생성

EventBridge에 대한 자세한 내용은 Amazon EventBridge 사용 설명서의 다음 주제를 참조하세요.

일정에 따라 파이프라인 빌드 트리거

Image Builder 파이프라인을 EventBridge 일정 규칙의 대상으로 설정하여 정기적으로 이미지를 새로 고칩니다. 다음 예제에서는 90일마다 파이프라인 빌드를 시작하는 규칙을 생성합니다.

참고

파이프라인에는 자체 기본 제공 일정(파이프라인에 저장된 cron 또는 rate 표현식)도 포함될 수 있습니다. 이 일정은 Image Builder에서 관리하며 EventBridge 규칙과는 별개입니다.

  • 간단한 반복 재구축을 위해 파이프라인 일정을 사용합니다. 또한 종속성 업데이트를 기반으로 빌드를 게이트하고 장애가 발생한 파이프라인을 자동으로 비활성화할 수 있습니다. EC2 Image Builder API 참조Schedule의 섹션을 참조하세요. EC2

  • EventBridge 규칙을 사용하여 이벤트 패턴에서 빌드를 시작하거나 트리거 하나를 여러 대상으로 팬아웃합니다.

AWS Management Console
  1. https://console.aws.amazon.com/imagebuilder/에서 EC2 Image Builder 콘솔을 엽니다.

  2. 계정에서 생성된 이미지 파이프라인 목록을 보려면 탐색 창에서 이미지 파이프라인을 선택합니다.

    참고

    이미지 파이프라인 목록에는 파이프라인에서 생성되는 출력 이미지 유형 AMI 또는에 대한 표시기가 포함되어 있습니다Docker.

  3. 세부 정보를 보거나 파이프라인을 편집하려면 파이프라인 이름 링크를 선택합니다. 파이프라인의 세부 정보 보기가 열립니다.

    참고

    또한 파이프라인 이름 옆에 있는 확인란을 선택한 다음 세부 정보 보기를 선택할 수 있습니다.

  4. EventBridge 규칙 탭을 엽니다.

  5. 이벤트 버스 패널에서 미리 선택한 기본 이벤트 버스는 그대로 둡니다.

  6. 규칙 생성을 선택합니다. 그러면 Amazon EventBridge 콘솔의 규칙 생성 페이지로 이동합니다.

  7. 규칙에 대해 이름과 설명을 입력하세요. 규칙 이름은 선택한 리전에 대한 이벤트 버스 내에서 고유해야 합니다.

  8. 패턴 정의 패널에서 일정 옵션을 선택합니다. 이렇게 하면 패널이 확장되고 모든 고정 요금 옵션이 선택됩니다.

  9. 첫 번째 상자에 90을(를) 입력하고, 드롭다운 목록에서 일수를 선택합니다.

  10. 대상 선택 패널에서 다음 작업을 수행합니다.

    1. 대상 드롭다운 목록에서 EC2 Image Builder을(를) 선택합니다.

    2. Image Builder 파이프라인에 규칙을 적용하려면 이미지 파이프라인 드롭다운 목록에서 대상 파이프라인을 선택합니다.

    3. EventBridge에는 선택한 파이프라인의 빌드를 시작할 권한이 필요합니다. 이 예제에서는 이 특정 리소스에 대해 새 역할 생성을 기본 옵션으로 설정합니다.

    4. 대상 추가를 선택합니다.

  11. 생성을 선택합니다.

참고

현재 EventBridge 콘솔은 EventBridge 스케줄러를 통해 일정을 생성할 수 있으며, 정확한 레이블과 단계는 시간이 지남에 따라 변경될 수 있습니다. 연결된 Amazon EventBridge 사용 설명서는 현재 콘솔 환경에 대한 권한이 있습니다.

AWS CLI

이 단계에서는 90일마다 파이프라인 빌드를 시작하는 일정 규칙을 생성합니다. EventBridge에는 파이프라인imagebuilder:StartImagePipelineExecution에서를 호출하기 위해 수임할 수 있는 IAM 역할이 필요합니다.

  1. rate 표현식을 사용하여 규칙을 생성합니다.

    aws events put-rule \ --name refresh-image-every-90-days \ --schedule-expression "rate(90 days)"
  2. 이 신뢰 정책을 사용하여 EventBridge가 수임할 수 있는 IAM 역할을 생성합니다.

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

    파이프라인을 시작하도록 허용하는 권한 정책을 연결합니다.

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "imagebuilder:StartImagePipelineExecution", "Resource": "arn:aws:imagebuilder:us-west-2:111122223333:image-pipeline/my-pipeline" }] }
  3. 이전 단계의 역할을 참조하여 파이프라인을 규칙의 대상으로 추가합니다.

    aws events put-targets \ --rule refresh-image-every-90-days \ --targets '[{ "Id": "1", "Arn": "arn:aws:imagebuilder:us-west-2:111122223333:image-pipeline/my-pipeline", "RoleArn": "arn:aws:iam::111122223333:role/EventBridgeImageBuilderRole" }]'
  4. 대상이 연결되었는지 확인합니다.

    aws events list-targets-by-rule --rule refresh-image-every-90-days
참고

이 예제에서 다루지 않은 rate 표현식 규칙의 설정에 대해 자세히 알아보려면 Amazon EventBridge 사용 설명서rate 표현식을 참조하세요.

이벤트 패턴에서 파이프라인 빌드 트리거

일정 대신 이벤트가 패턴과 일치할 때 파이프라인 빌드를 시작할 수 있습니다. 이벤트 패턴으로 규칙을 생성한 다음 파이프라인을 대상으로 추가합니다(에 설명된 것과 동일한 IAM 역할 사용일정에 따라 파이프라인 빌드 트리거).

다음 예제에서는 특정 기본 이미지가 될 때마다 빌드를 시작합니다AVAILABLE. 예를 들어 기본 이미지가 완료된 후 종속 이미지 빌드를 연결합니다. resources 접두사는 종속 파이프라인의 자체 출력이 아닌 해당 이미지와만 일치하도록 규칙의 범위를 기본 이미지로 지정합니다.

{ "source": ["aws.imagebuilder"], "detail-type": ["EC2 Image Builder Image State Change"], "detail": { "state": { "status": ["AVAILABLE"] } }, "resources": [{ "prefix": "arn:aws:imagebuilder:us-west-2:111122223333:image/my-base-image/" }] }
중요

이 예제의 resources 접두사에 표시된 대로 이벤트 패턴의 범위를 기본 이미지로 지정합니다. 계정의 모든 AVAILABLE 이미지와 일치하는 패턴은 종속 파이프라인의 자체 출력 이미지와도 일치하며,이 이미지는 파이프라인을 다시 시작하고 무한 빌드 루프를 생성할 수 있습니다. 규칙이 의도한 이미지와만 일치하도록 특정 기본 이미지 이름 또는 ARN 접두사를 기준으로 필터링합니다.

AWS Management Console
  1. Amazon EventBridge 콘솔(https://console.aws.amazon.com/events/)을 엽니다.

  2. 규칙을 선택한 다음 규칙 생성을 선택합니다. 기본 이벤트 버스를 유지합니다.

  3. 이름 및 설명을 입력합니다. 규칙 유형에서 이벤트 패턴이 있는 규칙을 선택합니다.

  4. 이벤트 소스의 경우 기타를 선택하고 위의 이벤트 패턴을 이벤트 패턴 상자에 붙여 넣습니다.

  5. 대상 선택 패널의 대상 드롭다운 목록에서 EC2 Image Builder를 선택한 다음 이미지 파이프라인 드롭다운 목록에서 빌드할 파이프라인을 선택합니다.

  6. EventBridge에는 파이프라인을 시작할 수 있는 권한이 필요합니다. 이 특정 리소스에 대한 새 역할 생성의 기본 옵션을 유지합니다.

  7. 규칙 생성을 선택합니다.

AWS CLI

규칙을 생성하고 파이프라인을 대상으로 추가합니다.

aws events put-rule \ --name rebuild-on-base-available \ --event-pattern '{"source":["aws.imagebuilder"],"detail-type":["EC2 Image Builder Image State Change"],"detail":{"state":{"status":["AVAILABLE"]}},"resources":[{"prefix":"arn:aws:imagebuilder:us-west-2:111122223333:image/my-base-image/"}]}' aws events put-targets \ --rule rebuild-on-base-available \ --targets '[{"Id":"1","Arn":"arn:aws:imagebuilder:us-west-2:111122223333:image-pipeline/dependent-pipeline","RoleArn":"arn:aws:iam::111122223333:role/EventBridgeImageBuilderRole"}]'

일치시킬 수 있는 이벤트와 해당 필드는 섹션을 참조하세요Image Builder에서 보내는 이벤트 메시지.

Image Builder가 보내는 이벤트에 대응

Image Builder는 리소스가 중요한 지점에 도달하면 기본 이벤트 버스에 이벤트를 게시합니다. 예를 들어 이미지 상태가 변경되거나, 스캔이 완료되거나, 워크플로 단계가 입력을 위해 일시 중지되거나, 파이프라인이 자동으로 비활성화되는 경우입니다. 이러한 이벤트를 규칙과 일치시키고 대상으로 라우팅하여 자체 자동화를 시작할 수 있습니다. 일반적인 패턴은 다음과 같습니다.

  • 이미지가 AVAILABLE 또는이 되면 Amazon SNS 주제를 통해 팀에 알립니다FAILED.

  • Lambda 함수를 호출하여 파라미터 스토어에 새 AMI를 등록하거나, 외부 규정 준수 테스트를 시작하거나, 배포 파이프라인을 업데이트합니다.

  • 스캔이 중요한 CVEs.

  • 워크플로 단계가 빌드를 일시 중지할 때 승인 WaitForAction 워크플로를 구동합니다.

Image Builder가 보내는 이벤트에 대해 조치를 취하려면 이벤트 패턴이 이벤트source(aws.imagebuilder) 및와 일치detail-type하고 선택적으로 내 필드의 범위를 좁히는 규칙을 생성합니다detail. 그런 다음 자동화를 실행하는 대상을 추가합니다.

예: 이미지 완성 시 알림(AVAILABLE 또는 FAILED)

{ "source": ["aws.imagebuilder"], "detail-type": ["EC2 Image Builder Image State Change"], "detail": { "state": { "status": ["AVAILABLE", "FAILED"] } } }

예: 스캔에서 중요한 CVEs를 발견한 경우에만 알림

클린 스캔이 규칙을 트리거하지 않도록 숫자 매처를 사용합니다.

{ "source": ["aws.imagebuilder"], "detail-type": ["EC2 Image Builder CVE Detected"], "detail": { "finding-severity-counts": { "critical": [{ "numeric": [">", 0] }] } } }
AWS Management Console
  1. Amazon EventBridge 콘솔(https://console.aws.amazon.com/events/)을 엽니다.

  2. 규칙을 선택한 다음 규칙 생성을 선택합니다. 기본 이벤트 버스를 유지합니다.

  3. 이름 및 설명을 입력합니다. 규칙 유형에서 이벤트 패턴이 있는 규칙을 선택합니다.

  4. 이벤트 소스의 경우 기타를 선택하고 위의 이벤트 패턴 중 하나를 이벤트 패턴 상자에 붙여 넣습니다.

  5. Amazon SNS 주제 또는 Lambda 함수와 같은 대상을 선택하고 대상 설정을 완료합니다.

  6. 규칙 생성을 선택합니다.

AWS CLI

규칙을 생성하고 일치하는 이벤트를 Amazon SNS 주제로 전송합니다.

aws events put-rule \ --name image-available-or-failed \ --event-pattern '{"source":["aws.imagebuilder"],"detail-type":["EC2 Image Builder Image State Change"],"detail":{"state":{"status":["AVAILABLE","FAILED"]}}}' aws events put-targets \ --rule image-available-or-failed \ --targets '[{"Id":"1","Arn":"arn:aws:sns:us-west-2:111122223333:image-status"}]'

EventBridge에는 이벤트를 대상으로 전송할 수 있는 권한도 필요합니다. 각 대상 유형에 필요한 권한에 대한 자세한 내용은 Amazon EventBridge 사용 설명서의 대상에 이벤트를 전송하기 위한 권한 및 Amazon EventBridge에 리소스 기반 정책 사용을 참조하세요. EventBridge EventBridge

참고

EC2 Image Builder Workflow Step Waiting 이벤트와 일치하면 대상이 이벤트workflow-step-execution-id에서 SendWorkflowStepAction를 호출하고 RESUME 또는 action의를 호출할 수 있습니다STOP. WaitForAction을(를) 참조하세요.