Amazon SNS를 통한 Elastic Beanstalk 환경 알림 - AWS Elastic Beanstalk

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

Amazon SNS를 통한 Elastic Beanstalk 환경 알림

Amazon Simple Notification Service(Amazon SNS)를 사용하여 애플리케이션에 영향을 주는 중요 이벤트에 대한 알림을 받도록 AWS Elastic Beanstalk 환경을 구성할 수 있습니다. 오류가 발생하거나 환경 상태가 변경될 때마다 AWS에서 이메일을 수신하려면 환경을 생성할 때 또는 나중에 이메일 주소를 지정합니다.

참고

Elastic Beanstalk은 알림에 Amazon SNS를 사용합니다. Amazon SNS 요금에 대한 자세한 내용은 https://aws.amazon.com/sns/pricing/을 참조하세요.

환경에 대해 알림을 구성할 때 Elastic Beanstalk는 사용자를 대신하여 환경에 대한 Amazon SNS 주제를 생성합니다. Amazon SNS 주제로 메시지를 전송하려면 Elastic Beanstalk에 필요한 권한이 있어야 합니다. 자세한 내용은 알림을 전송하는 권한 구성 섹션을 참조하세요.

주목할 만한 이벤트가 발생하면 Elastic Beanstalk은 이 주제로 메시지를 보냅니다. 그런 다음, Amazon SNS는 받은 메시지를 해당 주제의 구독자에게 전달합니다. 주목할 만한 이벤트로는 환경 및 인스턴스 상태에서 일어나는 모든 변경 사항과 환경 생성 오류 등이 있습니다. Amazon EC2 Auto Scaling 작업(환경에서 인스턴스 추가 및 제거)의 이벤트와 기타 정보 제공 이벤트는 알림을 트리거하지 않습니다.


      Amazon SNS 알림 이메일

환경을 생성할 때 또는 나중에 Elastic Beanstalk 콘솔에 이메일 주소를 입력할 수 있습니다. 그러면 Amazon SNS 주제가 생성되고 이를 구독합니다. Elastic Beanstalk는 주제의 수명 주기를 관리하고 환경이 종료되거나 환경 관리 콘솔에서 이메일 주소가 제거되면 주제를 삭제합니다.

aws:elasticbeanstalk:sns:topics 네임스페이스는 구성 파일, CLI 또는 SDK를 사용하여 Amazon SNS 주제를 구성하는 옵션을 제공합니다. 이러한 방법 중 하나를 사용하면 구독자 유형 및 엔드포인트를 구성할 수 있습니다. 구독자 유형으로, Amazon SQS 대기열 또는 HTTP URL을 선택할 수 있습니다.

Amazon SNS 알림을 켜거나 끌 수만 있습니다. 환경 크기와 구성에 따라 주제로 전송되는 알림 빈도가 높아질 수 있습니다. 특정 상황에서 알림을 전송하도록 구성하려는 경우 다른 옵션을 사용할 수 있습니다. Amazon EventBridge에서는 Elastic Beanstalk가 특정 기준을 충족하는 이벤트를 내보내는 경우 이를 알리는 이벤트 기반 규칙을 설정할 수 있습니다. 또는 사용자 지정 메트릭을 게시하도록 환경을 구성하고 이러한 지표가 비정상 임계값에 도달하면 이를 알리도록 Amazon CloudWatch 경보를 설정할 수 있습니다.

Elastic Beanstalk 콘솔을 사용하여 알림 구성

Elastic Beanstalk 콘솔에서 이메일 주소를 입력하여 환경에 맞는 Amazon SNS 주제를 생성할 수 있습니다.

Elastic Beanstalk 콘솔을 사용하여 알림을 구성하려면
  1. Elastic Beanstalk 콘솔을 연 다음 리전(Regions) 목록에서 해당 AWS 리전을 선택합니다.

  2. 탐색 창에서 환경을 선택한 다음 목록에서 환경 이름을 선택합니다.

    참고

    여러개의 환경을 보유한 경우 검색 창을 통해 환경 목록을 필터링합니다.

  3. 탐색 창에서 구성을 선택합니다.

  4. 업데이트, 모니터링 및 로깅 구성 범주에서 편집을 선택합니다.

  5. 아래로 스크롤하여 이메일 알림(Email notifications) 섹션으로 이동합니다.

  6. 이메일 주소를 입력합니다.

  7. 변경 사항을 저장하려면 페이지 하단에서 적용을 선택합니다.

알림을 받을 이메일 주소를 입력하면, Elastic Beanstalk는 사용자 환경에 대한 Amazon SNS 주제를 만들고 구독을 추가합니다. Amazon SNS에서는 등록된 주소로 이메일을 보내 구독을 확인합니다. 구독을 활성화하고 알림을 받으려면 확인 이메일에 있는 링크를 클릭해야 합니다.

구성 옵션을 사용하여 알림 구성

aws:elasticbeanstalk:sns:topics 네임스페이스의 옵션을 사용하여 환경에 대한 Amazon SNS 알림을 구성합니다. 구성 파일, CLI 또는 SDK를 사용하여 이러한 옵션을 설정할 수 있습니다.

  • 알림 엔드포인트 – 알림을 받을 이메일 주소, Amazon SQS 대기열 또는 URL입니다. 이 옵션을 설정하면 지정된 엔드포인트에 대한 SQS 대기열 및 구독이 생성됩니다. 엔드포인트가 이메일 주소가 아니면 Notification Protocol 옵션도 설정해야 합니다. SNS는 Notification Endpoint 값을 기준으로 Notification Protocol 값을 확인합니다. 이 옵션을 여러 번 설정하면 주제에 대한 추가 구독이 생성됩니다. 이 옵션을 제거하면 주제가 삭제됩니다.

  • 알림 프로토콜 - Notification Endpoint로 알림을 전송하는 데 사용되는 프로토콜입니다. 이 옵션의 기본값은 email입니다. JSON 형식의 이메일을 보내려면 이 옵션을 email-json으로, JSON 형식의 알림을 HTTP 엔드포인트에 게시하려면 httphttps로, SQS 대기열로 알림을 보내려면 sqs로 설정하십시오.

    참고

    AWS Lambda 알림은 지원되지 않습니다.

  • 알림 주제 ARN – 환경에 대해 알림 엔드포인트를 설정한 후 이 설정을 읽어 SNS 주제의 ARN을 확인합니다. 알림에 대해 기존의 SNS 주제를 사용하도록 이 옵션을 설정할 수도 있습니다. 이 옵션을 변경하거나 환경을 종료해도 이 옵션을 통해 환경에 연결된 주제는 삭제되지 않습니다.

    Amazon SNS 알림을 구성하려면 필요한 권한이 있어야 합니다. IAM 사용자가 Elastic Beanstalk AdministratorAccess-AWSElasticBeanstalk 관리형 사용자 정책을 사용하는 경우, Elastic Beanstalk가 사용자 환경을 위해 생성하는 기본 Amazon SNS 주제를 구성하는 데 필요한 권한을 이미 보유하고 있어야 합니다. 하지만 Elastic Beanstalk가 관리하지 않는 Amazon SNS 주제를 구성하는 경우에는 사용자 역할에 다음 정책을 추가해야 합니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:SetTopicAttributes", "sns:GetTopicAttributes", "sns:Subscribe", "sns:Unsubscribe", "sns:Publish" ], "Resource": [ "arn:aws:sns:us-east-2:123456789012:sns_topic_name" ] } ] }
  • 알림 주제 이름 – 환경 알림에 사용되는 Amazon SNS 주제의 이름을 사용자 지정하려면 이 옵션을 설정합니다. 같은 이름의 주제가 이미 있는 경우, Elastic Beanstalk는 해당 주제를 환경에 연결합니다.

    주의

    기존 SNS 주제를 Notification Topic Name으로 환경에 연결하면, 나중에 때때로 사용자가 이 설정을 변경하거나 환경을 종료하는 경우 Elastic Beanstalk에서 해당 주제를 삭제합니다.

    이 옵션을 변경하면 Notification Topic ARN도 변경됩니다. 주제가 이미 환경에 연결된 경우 Elastic Beanstalk는 기존 주제를 삭제한 후 새 주제와 구독을 생성합니다.

    사용자 지정 주제 이름을 사용하면 외부에서 생성된 사용자 지정 주제의 ARN도 제공해야 합니다. 관리형 사용자 정책은 사용자 지정 이름의 주제를 자동으로 감지하지 않으므로, IAM 사용자에게 사용자 지정 Amazon SNS 권한을 제공해야 합니다. 사용자 지정 주제 ARN에 사용되는 정책과 유사한 정책을 사용하되 다음 추가 사항을 포함합니다.

    • Actions 목록에 sns:CreateTopic sns:DeleteTopic과 같은 두 개의 추가 작업을 포함합니다.

    • 하나의 사용자 지정 주제 이름에서 다른 사용자 지정 주제 이름으로 Notification Topic Name을 변경하는 경우 두 주제의 ARN을 Resource 목록에 포함해야 합니다. 또는 두 주제를 모두 포괄하는 정규식을 포함합니다. 이렇게 하면 Elastic Beanstalk가 이전 주제를 삭제하고 새 주제를 만들 권한을 갖게 됩니다.

EB CLI 및 Elastic Beanstalk 콘솔에서 위 옵션의 권장 값을 적용합니다. 구성 파일을 사용해 동일하게 구성하고자 하는 경우 이러한 설정을 제거해야 합니다. 세부 정보는 권장 값 단원을 참조하십시오.

알림을 전송하는 권한 구성

이 섹션에서는 Amazon SNS를 사용하는 알림과 관련된 보안 고려 사항에 대해 설명합니다. 다음 두 가지 사례는 확실합니다.

  • Elastic Beanstalk가 환경에 대해 생성하는 기본 Amazon SNS 주제를 사용합니다.

  • 구성 옵션을 통해 외부 Amazon SNS 주제를 제공합니다.

Amazon SNS 주제에 대한 기본 액세스 정책에서는 주제 소유자만 주제를 게시하거나 구독하도록 허용합니다. 그러나 적절한 정책 구성을 통해 이 섹션에서 설명하는 두 가지 사례 중 하나에서 Amazon SNS 주제에 게시할 수 있는 권한을 Elastic Beanstalk에 부여할 수 있습니다. 다음 하위 섹션에서 자세히 설명합니다.

기본 주제에 대한 권한

환경에 대해 알림을 구성할 때 Elastic Beanstalk은 환경에 대한 Amazon SNS 주제를 만듭니다. Amazon SNS 주제로 메시지를 전송하려면 Elastic Beanstalk에 필요한 권한이 있어야 합니다. 환경에서 Elastic Beanstalk 콘솔 또는 EB CLI가 생성한 서비스 역할을 사용하거나 계정의 모니터링 서비스 연결 역할을 사용하는 경우에는 달리 필요한 작업이 없습니다. 이러한 관리형 역할에는 Elastic Beanstalk가 Amazon SNS 주제로 메시지를 보내는 데 필요한 권한이 포함됩니다.

그러나 환경을 생성할 때 사용자 지정 서비스를 제공했다면 이 사용자 지정 서비스 역할에 다음 정책이 포함되었는지 확인합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": [ "arn:aws:sns:us-east-2:123456789012:ElasticBeanstalkNotifications*" ] } ] }

외부 주제에 대한 권한

구성 옵션을 사용하여 알림 구성에서는 Elastic Beanstalk가 제공하는 Amazon SNS 주제를 다른 Amazon SNS 주제로 대체하는 방법에 대해 설명합니다. 주제를 대체한 경우 Elastic Beanstalk는 SNS 주제를 환경과 연결할 수 있도록 이 SNS 주제에 대한 게시 권한이 있는지 확인해야 합니다. sns:Publish가 있어야 합니다. 서비스 역할은 동일한 권한을 사용합니다. 이와 같은지 확인하기 위해 Elastic Beanstalk는 환경을 생성하거나 업데이트하는 작업의 일부로 SNS에 테스트 알림을 전송합니다. 이 테스트가 실패하면 환경을 생성하거나 업데이트하려는 시도도 실패합니다. Elastic Beanstalk는 이 실패의 원인을 설명하는 메시지를 표시합니다.

환경에 대한 사용자 지정 서비스 역할을 제공하는 경우 Elastic Beanstalk가 Amazon SNS 주제로 메시지를 보낼 수 있도록 사용자 지정 역할에 다음 정책이 포함되는지 확인합니다. 다음 코드에서는 sns_topic_name을 구성 옵션에서 제공한 Amazon SNS 주제의 이름으로 대체합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": [ "arn:aws:sns:us-east-2:123456789012:sns_topic_name" ] } ] }

Amazon SNS 액세스 제어에 대한 자세한 내용은 Amazon Simple Notification Service 개발자 안내서에서 Amazon SNS 액세스 제어 예제 사례를 참조하세요.