수명 주기 후크에 대한 알림 대상 구성 - Amazon EC2 Auto Scaling

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

수명 주기 후크에 대한 알림 대상 구성

인스턴스가 대기 상태로 전환될 때마다 Auto Scaling 그룹에 수명 주기 후크를 추가하여 인스턴스가 대기 상태로 전환될 때마다 사용자 지정 작업을 수행할 수 있습니다. 선호하는 개발 방식에 따라 다양한 Amazon Web Services 를 사용하여 이러한 작업을 수행하도록 알림 대상을 구성할 수 있습니다.

첫 번째 방법은 Amazon EventBridge 를 사용하여 원하는 작업을 수행하는 Lambda 함수를 호출합니다. 두 번째 방법은 알림이 게시된 Amazon Simple Notification Service (Amazon SNS) 주제를 만드는 것입니다. 클라이언트는 SNS 주제를 구독하고 지원되는 프로토콜을 사용하여 게시된 메시지를 수신할 수 있습니다. 마지막 접근 방식은 작업자 노드가 대기열을 폴링하도록 하는 메시징 시스템인 Amazon Simple Queue Service (Amazon SQS) 를 사용하는 것입니다.

EventBridge 를 사용하는 것이 가장 좋은 방법입니다. Amazon SNS 및 Amazon SQS로 전송되는 알림에는 Amazon EC2 Auto Scaling 이 EventBridge 에 전송하는 알림과 동일한 정보가 포함되어 있습니다. EventBridge 이전에는 SNS 또는 SQS에 알림을 보내고 다른 서비스를 SNS 또는 SQS와 통합하여 프로그래밍 작업을 수행하는 것이 표준 방식이었습니다. 현재 EventBridge 는 사용자가 대상으로 지정할 수 있는 서비스에 대한 더 많은 옵션을 제공하며 서버를 사용하지 않는 아키텍처를 사용하여 이벤트를 보다 쉽게 처리할 수 있도록 합니다.

다음 절차에서는 통지 대상을 설정하는 방법을 다룹니다.

인스턴스가 시작될 때 인스턴스를 구성하는 사용자 데이터 스크립트 또는 cloud-init 지시어가 있는 경우 수명 주기 작업이 발생할 때 알림을 받을 필요가 없습니다.

중요

수명 주기 후크와 함께 사용하는 EventBridge 규칙, Lambda 함수, Amazon SNS 주제 및 Amazon SQS 대기열은 항상 Auto Scaling 그룹을 생성한 리전에 있어야 합니다.

EventBridge 지를 사용하여 Lambda 로 알림 라우팅

수명 주기 작업이 EventBridge 를 사용하여 발생할 때 Lambda 함수를 호출할 수 있습니다. 수명 주기 작업이 발생할 때 발생하는 EventBridge 이벤트에 대한 자세한 내용은Auto Scaling. 시작 이벤트를 수신하고 CloudWatch 로그 로그에 기록하는 간단한 Lambda 함수를 만드는 방법을 보여 주는 소개 자습서 스타일 가이드는자습서: Lambda 함수를 호출하는 수명 주기 후크 구성.

Lambda 함수를 EventBridge 규칙의 대상으로 사용하려면 다음과 같이 하십시오.

  1. 사용 하 여 Lambda 함수 생성Lambda 콘솔Amazon 리소스 이름 (ARN) 을 적어 둡니다. 예: arn:aws:lambda:region:123456789012:function:my-function. EventBridge 대상을 만들려면 ARN 이 필요합니다.

    자세한 내용은 단원을 참조하십시오.Lambda 시작하기AWS Lambda개발자 안내서.

  2. 다음을 사용하여 수명 주기 작업과 일치하는 EventBridge 규칙을 만듭니다.규칙명령입니다.

    참고

    사용 하는 경우AWS Management Console콘솔에서 Lambda 함수를 호출할 권한을 부여하는 데 필요한 IAM 권한을 자동으로 추가합니다. AWS CLI를 이벤트 규칙을 만드는 경우 이 권한을 명시적으로 부여해야 합니다. 콘솔을 사용하여 이벤트 규칙을 생성하는 방법에 대한 자세한 내용은자습서: Lambda 함수를 호출하는 수명 주기 후크 구성.

    aws events put-rule --name my-rule --event-pattern file://pattern.json --state ENABLED

    다음 예제에서는pattern.json인스턴스 시작 수명 주기 작업을 위한

    { "source": [ "aws.autoscaling" ], "detail-type": [ "EC2 Instance-launch Lifecycle Action" ] }

    다음 예제에서는pattern.json인스턴스 종료 수명 주기 작업을 위한

    { "source": [ "aws.autoscaling" ], "detail-type": [ "EC2 Instance-terminate Lifecycle Action" ] }
  3. 수명 주기 작업이 발생할 때 다음을 사용하여 Lambda 함수를 호출하는 대상을 만듭니다.대상명령입니다.

    aws events put-targets --rule my-rule --targets Id=1,Arn=arn:aws:lambda:region:123456789012:function:my-function
  4. 다음 함수를 사용하여 Lambda 함수를 호출할 수 있는 권한을 규칙에 부여합니다.추가 사용 권한명령입니다. 이 명령은 EventBridge 서비스 보안 주체 (events.amazonaws.com) 을 지정하고, 지정된 규칙에 따라 권한의 범위를 지정합니다.

    aws lambda add-permission --function-name my-function --statement-id my-unique-id \ --action 'lambda:InvokeFunction' --principal events.amazonaws.com --source-arn arn:aws:events:region:123456789012:rule/my-rule
  5. 이 지침을 따른 후에는 다음 단계 수명 주기 후크 추가로 계속 진행합니다.

Amazon SNS 사용하여 알림 수신

Amazon SNS 사용하여 수명 주기 작업이 발생할 때 알림을 받도록 알림 대상 (SNS 주제) 을 설정합니다. 그런 다음 Amazon SNS 에서 구독한 수신자에게 알림을 보냅니다. 구독이 확인되기 전에는 주제에 게시된 알림은 수신자에게 전송되지 않습니다.

Amazon SNS 사용하여 알림을 설정하려면

  1. Amazon SNS 주제를 생성하려면Amazon SNS 콘솔또는 다음주제 생성명령입니다. 사용 중인 Auto Scaling 그룹과 동일한 영역에 주제가 있는지 확인합니다. 자세한 내용은 단원을 참조하십시오.Amazon SNS 시작하기Amazon Simple Notification Service 개발자.

    aws sns create-topic --name my-sns-topic
  2. Amazon Resource Name (ARN) 을 기록합니다. 예를 들어,arn:aws:sns:region:123456789012:my-sns-topic. 수명 주기 후크를 생성하려면

  3. Amazon EC2 Auto Scaling 을 통해 Amazon SNS 알림 대상에 대한 액세스 권한을 부여할 IAM 서비스 역할을 생성합니다.

    Amazon EC2 Auto Scaling 주제에 대한 액세스 권한을 부여하려면 다음과 같이 하십시오.

    1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

    2. 탐색 창에서Roles,역할 생성.

    3. Select type of trusted entity(신뢰할 수 있는 유형의 엔터티 선택) 아래에서 AWS 서비스를 선택합니다.

    4. Choose the service that will use this role(이 역할을 사용할 서비스 선택) 아래에 있는 목록에서 EC2 Auto Scaling을 선택합니다.

    5. Select your use case(사용 사례 선택) 하단에서 EC2 Auto Scaling Notification Access (EC2 Auto Scaling 알림)을 선택한 후, Next:Permissions(다음:권한)를 선택합니다.

    6. 다음: 태그를 선택합니다. 선택적으로 태그를 키-값 페어로 연결하여 메타데이터를 역할에 추가할 수 있습니다. 그런 다음 다음: 검토를 선택합니다.

    7. 검토 페이지에서 역할의 이름(예: my-notification-role)을 입력하고 역할 만들기를 선택합니다.

    8. 역할 페이지에서 방금 만든 역할을 선택하여 요약 페이지를 엽니다. 역할 ARN을 기록해 둡니다. 예: arn:aws:iam::123456789012:role/my-notification-role. 수명 주기 후크를 생성하려면

  4. 이 지침을 따른 후에는 다음 단계 수명 주기 후크 추가 (AWS CLI)로 계속 진행합니다.

Amazon SQS 사용하여 알림 받기

Amazon SQS 사용하여 수명 주기 작업이 발생할 때 메시지를 받도록 알림 대상을 설정합니다. 그런 다음 작업자 노드는 SQS 대기열을 폴링하여 이러한 알림에 대응해야 합니다.

중요

FIFO 대기열은 수명 주기 후크와 호환되지 않습니다.

Amazon SQS 사용하여 알림을 설정하려면

  1. Amazon SQS 대기열을 생성하려면Amazon SQS 콘솔. 사용 중인 Auto Scaling 그룹과 동일한 리전에 대기열이 있는지 확인합니다. 자세한 내용은 단원을 참조하십시오.Amazon SQS 시작하기Amazon Simple Queue Service 개발자.

  2. 대기열 ARN 기록합니다.arn:aws:sqs:region:123456789012:my-sqs-queue. 수명 주기 후크를 생성하려면

  3. Amazon SQS 알림 대상에 대한 Amazon EC2 Auto Scaling 액세스 권한을 부여하는 IAM 서비스 역할을 생성합니다.

    Amazon EC2 Auto Scaling 액세스 권한을 SQS 대기열에 부여하려면

    1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

    2. 탐색 창에서Roles,역할 생성.

    3. Select type of trusted entity(신뢰할 수 있는 유형의 엔터티 선택) 아래에서 AWS 서비스를 선택합니다.

    4. Choose the service that will use this role(이 역할을 사용할 서비스 선택) 아래에 있는 목록에서 EC2 Auto Scaling을 선택합니다.

    5. Select your use case(사용 사례 선택) 하단에서 EC2 Auto Scaling Notification Access (EC2 Auto Scaling 알림)을 선택한 후, Next:Permissions(다음:권한)를 선택합니다.

    6. 다음: 태그를 선택합니다. 선택적으로 태그를 키-값 페어로 연결하여 메타데이터를 역할에 추가할 수 있습니다. 그런 다음 다음: 검토를 선택합니다.

    7. 검토 페이지에서 역할의 이름(예: my-notification-role)을 입력하고 역할 만들기를 선택합니다.

    8. 역할 페이지에서 방금 만든 역할을 선택하여 요약 페이지를 엽니다. 역할 ARN을 기록해 둡니다. 예: arn:aws:iam::123456789012:role/my-notification-role. 수명 주기 후크를 생성하려면

  4. 이 지침을 따른 후에는 다음 단계 수명 주기 후크 추가 (AWS CLI)로 계속 진행합니다.

Amazon SNS 및 Amazon SQS 관련 알림 메시지 예제

인스턴스가 대기 상태에 있는 동안 Amazon SNS 또는 Amazon SQS 알림 대상에 메시지가 전송됩니다. 메시지에 포함되는 정보는 다음과 같습니다.

  • LifecycleActionToken— 수명 주기 작업 토큰입니다.

  • AccountId— Amazon Web Services 계정 ID입니다.

  • AutoScalingGroupName— Auto Scaling 그룹의 이름.

  • LifecycleHookName— 수명 주기 후크 이름.

  • EC2InstanceId— EC2 인스턴스의 ID입니다.

  • LifecycleTransition— 수명 주기 후크 유형입니다.

  • NotificationMetadata— 알림 메타데이터입니다.

다음은 알림 메시지 예입니다.

Service: AWS Auto Scaling Time: 2021-01-19T00:36:26.533Z RequestId: 18b2ec17-3e9b-4c15-8024-ff2e8ce8786a LifecycleActionToken: 71514b9d-6a40-4b26-8523-05e7ee35fa40 AccountId: 123456789012 AutoScalingGroupName: my-asg LifecycleHookName: my-hook EC2InstanceId: i-0598c7d356eba48d7 LifecycleTransition: autoscaling:EC2_INSTANCE_LAUNCHING NotificationMetadata: hook message metadata

테스트 알림 메시지 예

수명 주기 후크를 처음 추가하면 알림 대상에 테스트 알림 메시지가 전송됩니다. 다음은 테스트 알림 메시지 예입니다.

Service: AWS Auto Scaling Time: 2021-01-19T00:35:52.359Z RequestId: 18b2ec17-3e9b-4c15-8024-ff2e8ce8786a Event: autoscaling:TEST_NOTIFICATION AccountId: 123456789012 AutoScalingGroupName: my-asg AutoScalingGroupARN: arn:aws:autoscaling:us-west-2:123456789012:autoScalingGroup:042cba90-ad2f-431c-9b4d-6d9055bcc9fb:autoScalingGroupName/my-asg
참고

Amazon EC2 Auto Scaling 에서 EventBridge 로 전송되는 이벤트의 예는Auto Scaling.