Amazon EventBridge에서 Elastic Beanstalk 사용 - AWS Elastic Beanstalk

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

Amazon EventBridge에서 Elastic Beanstalk 사용

Amazon EventBridge를 사용하여 Elastic Beanstalk 리소스를 모니터링하는 이벤트 기반 규칙을 설정하거나 다른 AWS 서비스를 사용하는 대상 작업을 시작할 수 있습니다. 예를 들어 프로덕션 환경의 상태가 경고 상태로 변경될 때마다 Amazon SNS 주제에 신호를 보내 이메일 알림을 보내는 규칙을 설정할 수 있습니다. 또는 환경의 상태가 성능 저하됨 또는 심각으로 변경될 때마다 Slack에 알림을 전달하도록 Lambda 함수를 설정할 수 있습니다.

Amazon EventBridge에서 규칙을 생성하여 다음 Elastic Beanstalk 이벤트에 적용할 수 있습니다.

  • 환경 작업의 상태 변경(생성, 업데이트 및 종료 작업 포함) 이 이벤트는 상태 변경의 시작, 성공 또는 실패를 지정합니다.

  • 다른 리소스의 상태 변경. 환경 이외에 모니터링되는 다른 리소스에는 로드 밸런서, Auto Scaling 그룹, 인스턴스 등이 있습니다.

  • 환경의 상태 전환. 이 이벤트는 환경 상태가 한 가지 상태에서 다른 상태로 전환된 경우를 나타냅니다.

  • 관리되는 업데이트의 상태 변경. 이 이벤트는 상태 변경의 시작, 성공 또는 실패를 지정합니다.

관심 있는 특정 Elastic Beanstalk 이벤트를 캡처하려면 EventBridge가 이벤트를 감지하는 데 사용할 수 있는 이벤트별 패턴을 정의합니다. 이벤트 패턴은 일치하는 이벤트와 동일한 구조를 갖습니다. 패턴은 일치시키려는 필드를 인용하고 찾고 있는 값을 제공합니다. 이벤트는 최선의 작업을 기반으로 발생됩니다. EventBridge는 일반적인 운영 환경에서 거의 실시간으로 Elastic Beanstalk에서 EventBridge로 전달됩니다. 하지만 이벤트 전달을 지연하거나 방해하는 상황이 발생할 수 있습니다.

Elastic Beanstalk 이벤트에 포함되는 필드 목록과 가능한 문자열 값은 Elastic Beanstalk 이벤트 필드 매핑 섹션을 참조하세요. EventBridge 규칙이 이벤트 패턴을 사용하여 작동하는 방법에 대한 자세한 내용은 EventBridge의 이벤트 및 이벤트 패턴을 참조하세요.

EventBridge를 사용하여 Elastic Beanstalk 리소스 모니터링

EventBridge를 사용하면 Elastic Beanstalk이 리소스에 대한 이벤트를 내보낼 때 수행할 작업을 정의하는 규칙을 생성할 수 있습니다. 예를 들어 환경 상태가 변경될 때마다 이메일 메시지를 전송하는 규칙을 생성할 수 있습니다.

EventBridge 콘솔에는 Elastic Beanstalk 이벤트 패턴을 작성하기 위한 사전 정의된 패턴 옵션이 있습니다. 규칙을 만들 때 EventBridge 콘솔에서 이 옵션을 선택하면 Elastic Beanstalk 이벤트 패턴을 빠르게 작성할 수 있습니다. 이벤트 필드와 값만 선택하면 됩니다. 옵션을 선택하면 콘솔에서 이벤트 패턴이 작성되고 표시됩니다. 또는 작성한 이벤트 패턴을 수동으로 편집하여 사용자 지정 패턴으로 저장할 수 있습니다. 콘솔에는 작성 중인 이벤트 패턴에 복사하여 붙여 넣을 수 있는 자세한 샘플 이벤트를 표시할 수 있는 옵션도 제공합니다.

이벤트 패턴을 입력하거나, 복사하여 EventBridge 콘솔에 붙여 넣으려는 경우 콘솔에서 [사용자 지정 패턴(Custom pattern)] 옵션을 사용하도록 선택할 수 있습니다. 이렇게 하면 앞에서 설명한 필드와 값을 선택하는 단계를 거치지 않아도 됩니다. 이 주제에서는 사용할 수 있는 이벤트 일치 패턴Elastic Beanstalk 이벤트의 예를 제공합니다.

리소스 이벤트에 대한 규칙을 만들려면
  1. EventBridge 및 Elastic Beanstalk를 사용할 수 있는 권한이 있는 계정으로 AWS에 로그인합니다.

  2. https://console.aws.amazon.com/events/에서 Amazon EventBridge 콘솔을 엽니다.

  3. 탐색 창에서 [Rules]를 선택합니다.

  4. [Create rule]을 선택합니다.

  5. 규칙의 이름을 입력하고 선택적으로 설명을 입력합니다.

  6. 이벤트 버스(Event bus)에서 기본값(default)을 선택합니다. 계정의 AWS 서비스가 이벤트를 출력하면 항상 계정의 기본 이벤트 버스로 이동합니다.

  7. 규칙 유형(Rule type)에서 이벤트 패턴이 있는 규칙(Rule with an event pattern)을 생성합니다.

  8. 다음(Next)을 선택합니다.

  9. 이벤트 소스(Event source)에서 AWS 이벤트 또는 EventBridge 파트너 이벤트(Events or EventBridge partner events)를 선택합니다.

  10. (선택 사항)샘플 이벤트(Sample event)를 선택하고AWS이벤트(Event)를 선택합니다. 검색 필드에 Elastic Beanstalk를 입력합니다. 이렇게 하면 표시하도록 선택할 수 있는 샘플 Elastic Beanstalk 이벤트 목록이 제공됩니다. 이 단계에서는 참조할 수 있는 샘플 이벤트만 표시합니다. 규칙 생성 결과에는 영향을 주지 않습니다. 이 주제의 후반부인 Elastic Beanstalk 이벤트의 예섹션에서는 같은 형식의 이벤트 예시를 제공합니다.

  11. 이벤트 패턴(Event pattern)섹션에서 이벤트 패턴 양식(Event pattern form)을 선택합니다.

    참고

    이벤트 패턴에 대한 텍스트가 이미 있고 이벤트 패턴을 작성하는 데 EventBridge 콘솔이 필요하지 않은 경우 사용자 정의 패턴(JSON 편집기)(Custom pattern(JSON editor))를 선택합니다. 그런 다음 수동으로 텍스트를 입력하거나, 복사하여 이벤트 패턴(Event Pattern) 상자에 붙여 넣을 수 있습니다. 다음(Next)을 선택하고 대상 입력 단계로 이동합니다.

  12. 이벤트 소스(Event source)에서 AWS 서비스( services)를 선택합니다.

  13. AWS서비스(service)에서 Elastic Beanstalk를 선택합니다.

  14. 이벤트 유형(Event type)에서 상태 변경(Status Change)을 선택합니다.

  15. 이 단계에서는 Elastic Beanstalk에 대한 [세부 유형(detail type)], [상태(status)] 및 [심각도(severity)] 이벤트 필드를 사용하는 방법에 대해 설명합니다. 이러한 필드와 일치시킬 값을 선택하면 콘솔에 이벤트 패턴이 작성되고 표시되니다.

    • 특정 세부 유형(Specific detail types(s))단 하나의 값을 선택하면 계층 구조의 다음 필드에 값을 하나 이상 선택할 수 있습니다.

    • 특정 세부 유형(Specific detail types(s))하나 이상의 값을 선택하면 계층 구조의 다음 필드에 특정 값을 선택하지 마십시오. 이렇게 하면 이벤트 패턴의 필드 간에 모호한 일치 논리를 방지할 수 있습니다.

    [환경(environment)] 이벤트 필드는 이 계층의 영향을 받지 않으므로 다음 단계에서 설명한 대로 표시됩니다.

  16. 환경(environment)에서 모든 환경(Any environment) 또는 특정 환경(Specific environment(s))을 선택합니다.

    • 특정 환경(Specific environment(s)) 선택하면 드롭다운 목록에서 하나 이상의 환경을 선택할 수 있습니다. EventBridge는 이벤트 패턴의 세부 정보(detail) 섹션에 있는 EnvironmentName[ ] 목록에서 선택한 모든 환경을 추가합니다. 그러면 규칙을 통해, 선택한 특정 환경만 포함하도록 모든 이벤트가 필터링됩니다.

    • [모든 환경(Any environment)] 선택하면 이벤트 패턴에 환경이 추가되지 않습니다. 이 때문에 규칙은 환경에 따라 Elastic Beanstalk 이벤트를 필터링하지 않습니다.

  17. 다음(Next)을 선택합니다.

  18. 대상 유형(Target types)에서 AWS서비스(service)를 선택합니다.

  19. 대상 선택(Select a targets)에서, Elastic Beanstalk에서 리소스 상태 변경 이벤트를 수신할 때 수행할 대상 작업을 선택합니다.

    예를 들어, 이벤트 발생 시 Amazon Simple Notification Service(SNS) 주제를 사용하여 이메일 또는 텍스트 메시지를 보낼 수 있습니다. 이렇게 하려면 Amazon SNS 콘솔을 사용하여 Amazon SNS 주제를 생성해야 합니다. 자세한 내용은 사용자 알림에 Amazon SNS 사용을 참조하세요.

    중요

    일부 대상 작업에서는 Amazon SNS 또는 Lambda 서비스를 비롯한 다른 서비스를 사용해야 할 수 있으므로 추가 요금이 발생할 수 있습니다. AWS 요금에 대한 자세한 내용은 https://aws.amazon.com/pricing/ 단원을 참조하세요. 일부 서비스는 AWS 프리 티어의 일부분입니다. 신규 고객은 무료로 이 서비스를 시험 사용할 수 있습니다. 자세한 정보는 https://aws.amazon.com/free/ 섹션을 참조하세요.

  20. (선택 사항) 다른 대상 추가(Add another target)를 선택하여 이벤트 규칙에 대한 추가 대상 작업을 지정합니다.

  21. 다음(Next)을 선택합니다.

  22. (선택 사항) 규칙에 대해 하나 이상의 태그를 입력하세요. 자세한 정보는 Amazon EventBridge 사용 설명서Amazon EventBridge 태그를 참조하세요.

  23. 다음(Next)을 선택합니다.

  24. 규칙의 세부 정보를 검토하고 규칙 생성(Create rule)을 선택합니다.

Elastic Beanstalk 이벤트 패턴의 예

이벤트 패턴은 일치하는 이벤트와 동일한 구조를 갖습니다. 패턴은 일치시키려는 필드를 인용하고 찾고 있는 값을 제공합니다.

  • 모든 환경의 상태 변경

    { "source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Health status change" ] }
  • 다음 환경의 상태 변경: myEnvironment1myEnvironment2. 이 이벤트 패턴은 이러한 두 가지 특정 환경을 필터링하는 반면, 필터링하지 않는 이전 상태 변경 예제는 모든 환경에 대한 이벤트를 보냅니다.

    {"source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Health status change" ], "detail": { "EnvironmentName": [ "myEnvironment1", "myEnvironment2" ] } }
  • 모든 환경에 대한 Elastic Beanstalk 리소스 상태 변경

    { "source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Elastic Beanstalk resource status change" ] }
  • 다음 환경에 대해 Status 환경 업데이트 실패 Severity 오류Elastic Beanstalk 리소스 상태 변경: myEnvironment1myEnvironment2

    {"source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Elastic Beanstalk resource status change" ], "detail": { "Status": [ "Environment update failed" ], "Severity": [ "ERROR" ], "EnvironmentName": [ "myEnvironment1", "myEnvironment2" ] } }
  • 로드 밸런서, Auto Scaling 그룹, 인스턴스 등 기타 리소스의 상태 변경

    { "source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Other resource status change" ] }
  • 모든 환경에 대한 관리형 업데이트 상태 변경

    { "source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Managed update status change" ] }
  • Elastic Beanstalk에서 모든 이벤트를 캡처하려면(detail-type 섹션 제외)

    { "source": [ "aws.elasticbeanstalk" ] }

Elastic Beanstalk 이벤트의 예

다음은 리소스 상태 변경에 대한 Elastic Beanstalk 이벤트의 예입니다.

{ "version":"0", "id":"1234a678-1b23-c123-12fd3f456e78", "detail-type":"Elastic Beanstalk resource status change", "source":"aws.elasticbeanstalk", "account":"111122223333", "time":"2020-11-03T00:31:54Z", "region":"us-east-1", "resources":[ "arn:was:elasticbeanstalk:us-east-1:111122223333:environment/myApplication/myEnvironment" ], "detail":{ "Status":"Environment creation started", "EventDate":1604363513951, "ApplicationName":"myApplication", "Message":"createEnvironment is starting.", "EnvironmentName":"myEnvironment", "Severity":"INFO" } }

다음은 상태 변경에 대한 Elastic Beanstalk 이벤트의 예입니다.

{ "version":"0", "id":"1234a678-1b23-c123-12fd3f456e78", "detail-type":"Health status change", "source":"aws.elasticbeanstalk", "account":"111122223333", "time":"2020-11-03T00:34:48Z", "region":"us-east-1", "resources":[ "arn:was:elasticbeanstalk:us-east-1:111122223333:environment/myApplication/myEnvironment" ], "detail":{ "Status":"Environment health changed", "EventDate":1604363687870, "ApplicationName":"myApplication", "Message":"Environment health has transitioned from Pending to Ok. Initialization completed 1 second ago and took 2 minutes.", "EnvironmentName":"myEnvironment", "Severity":"INFO" } }

Elastic Beanstalk 이벤트 필드 매핑

다음 표에서는 Elastic Beanstalk 이벤트 필드와 가능한 해당 문자열 값이 EventBridge detail-type 필드에 매핑되어 있습니다. EventBridge가 서비스에 이벤트 패턴을 사용하여 작동하는 방법에 대한 자세한 내용은 EventBridge의 이벤트 및 이벤트 패턴을 참조하세요.

EventBridge 필드 detail-type Elastic Beanstalk 필드 Status Elastic Beanstalk 필드 Severity Elastic Beanstalk 필드 Message

Elastic Beanstalk resource status change

Environment creation started

INFO

createEnvironment is starting.

Environment creation successful

INFO

createEnvironment completed successfully.

Environment creation successful

INFO

Launched environment: <Environment Name>. However, there were issues during launch. See event log for details.

Environment creation failed

ERROR

Failed to launch environment.

Environment update started

INFO

Environment update is starting.

Environment update successful

INFO

Environment update completed successfully.

Environment update failed

ERROR

Failed to deploy configuration.

Environment termination started

INFO

terminateEnvironment is starting.

Environment termination successful

INFO

terminateEnvironment completed successfully.

Environment termination failed

INFO

The environment termination step failed because at least one of the environment termination workflows failed.

Other resource status change

Auto Scaling group created

INFO

createEnvironment is starting.

Auto Scaling group deleted

INFO

createEnvironment is starting.

Instance added

INFO

Added instance [i-123456789a12b1234] to your environment.

Instance removed

INFO

Removed instance [i-123456789a12b1234] from your environment.

Load balancer created

INFO

Created load balancer named: <LB Name>

Load balancer deleted

INFO

Deleted load balancer named: <LB Name>

Health status change

Environment health changed

INFO/WARN

Environment health has transitioned to <healthStatus>.

Environment health changed

INFO/WARN

Environment health has transitioned from <healthStatus> to <healthStatus>.

Managed update status change

Managed updated started

INFO

Managed platform update is in-progress.

Managed update failed

INFO

Managed update failed, retrying in %s minutes.