자습서: Lambda 함수를 호출하는 수명 주기 후크 구성 - Amazon EC2 Auto Scaling

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

자습서: Lambda 함수를 호출하는 수명 주기 후크 구성

이 연습에서는 일치할 때 필터 패턴을 포함하는 EventBridge 규칙을 만듭니다.AWS Lambda함수를 규칙 대상으로 사용합니다. 우리는 사용할 필터 패턴과 샘플 함수 코드를 제공합니다.

모든 설정이 올바르게 구성되면 이 자습서가 끝날 때 Lambda 함수는 인스턴스를 시작할 때 사용자 지정 작업을 수행합니다. 사용자 지정 작업은 Lambda 함수와 연결된 CloudWatch Logs 로그 스트림에 이벤트를 기록하기만 하면 됩니다.

또한 Lambda 함수는 콜백을 수행하여 이 작업이 성공할 경우 인스턴스의 수명 주기가 진행되도록 하지만 작업이 실패하면 인스턴스가 시작을 중단하고 종료할 수 있도록 합니다.

Prerequisites

이 자습서를 시작하기 전에 Auto Scaling 그룹이 없는 경우 Auto Scaling 그룹을 생성합니다. Auto Scaling 그룹을 생성하려면Auto Scaling 그룹Amazon EC2 콘솔에서Auto Scaling 그룹.

다음 절차는 모두 새 콘솔을 위한 것입니다.

1단계: 수명 주기 후크를 완료할 수 있는 권한이 있는 IAM 역할 생성

Lambda 함수를 만들기 전에 먼저 실행 역할과 사용 권한 정책을 만들어 Lambda가 수명 주기 후크를 완료할 수 있도록 해야 합니다.

정책을 생성하려면

  1. 열기정책 페이지IAM 콘솔을 선택한 다음정책 생성.

  2. [JSON] 탭을 선택합니다.

  3. 에서Policy Document(정책 문서)상자에 다음 정책 문서를 붙여넣고기울임꼴를 계정 번호 및 Auto Scaling 그룹 이름으로 바꿉니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CompleteLifecycleAction" ], "Resource": "arn:aws:autoscaling:*:123456789012:autoScalingGroup:*:autoScalingGroupName/my-asg" } ] }
  4. 선택다음: 태그을 클릭한 다음다음: 검토.

  5. 이름LogAutoScalingEvent-policy를 입력합니다. [Create policy]를 선택합니다.

정책 생성을 완료하면 정책을 사용하는 역할을 생성할 수 있습니다.

역할을 생성하려면

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

  2. 언더사용 사례 선택를 선택하고Lambda목록에서다음: 권한.

  3. 언더사용 권한 정책 연결를 선택하고로그 Auto Scaling 이벤트 정책AWSLambdaBasicExecutionRole.

  4. 선택다음: 태그을 클릭한 다음다음: 검토.

  5. 검토페이지에서이름를 입력합니다.LogAutoScalingEvent-role를 선택하고역할 생성.

2단계: Lambda 함수 생성

이벤트의 대상 역할을 할 Lambda 함수를 생성합니다. Node.js 형식으로 작성된 샘플 Lambda 함수는 Amazon EC2 Auto Scaling 이 일치하는 이벤트를 발생시킬 때 EEventBridge 에 의해 호출됩니다.

Lambda 함수를 만들려면

  1. 열기함수 페이지Lambda 콘솔에서 실행할 수 있습니다.

  2. 선택함수 생성,새로 작성을 완료했습니다..

  3. 기본 정보(Basic information)에서 함수 이름(Function name)LogAutoScalingEvent을 입력합니다.

  4. 선택기본 실행 역할을 선택한 다음Execution role(실행 역할)를 선택하고기존 역할 사용.

  5. 기존 역할를 선택하고로그 Auto Scaling 이벤트 역할.

  6. 나머지는 기본값을 그대로 사용합니다.

  7. 함수 생성을 선택합니다. 함수의 코드 및 구성으로 돌아갑니다.

  8. 와 함께LogAutoScalingEvent함수가 콘솔에 여전히 열려 있습니다.함수 코드, 편집기에서 다음 샘플 코드를 index.js 파일에 복사합니다.

    var aws = require("aws-sdk"); exports.handler = (event, context, callback) => { console.log('LogAutoScalingEvent'); console.log('Received event:', JSON.stringify(event, null, 2)); var autoscaling = new aws.AutoScaling({region: event.region}); var eventDetail = event.detail; var params = { AutoScalingGroupName: eventDetail['AutoScalingGroupName'], /* required */ LifecycleActionResult: 'CONTINUE', /* required */ LifecycleHookName: eventDetail['LifecycleHookName'], /* required */ InstanceId: eventDetail['InstanceId'], LifecycleActionToken: eventDetail['LifecycleActionToken'] }; var response; autoscaling.completeLifecycleAction(params, function(err, data) { if (err) { console.log(err, err.stack); // an error occurred response = { statusCode: 500, body: JSON.stringify('ERROR'), }; } else { console.log(data); // successful response response = { statusCode: 200, body: JSON.stringify('SUCCESS'), }; } }); return response; };

    이 코드는 이벤트를 기록하기 때문에 이 자습서가 끝날 때 이 Lambda 함수와 연결된 CloudWatch Logs 로그 스트림에 이벤트가 표시됩니다.

  9. [Deploy]를 선택합니다.

3단계: EventBridge 규칙 생성

Lambda 함수를 실행할 EventBridge 규칙을 생성합니다.

콘솔을 사용하여 규칙을 생성하려면

  1. 열기EventBridge 콘솔.

  2. 탐색 창에서Rules,규칙 생성.

  3. 이름LogAutoScalingEvent-rule를 입력합니다.

  4. 패턴 정의를 선택하고이벤트 패턴.

  5. 이벤트 일치 패턴를 선택하고사용자 지정 패턴.

  6. 규칙은 이벤트 패턴을 사용하여 이벤트를 선택하고 대상으로 이를 라우팅합니다. 다음 패턴을이벤트 패턴상자에 입력합니다.

    { "source": [ "aws.autoscaling" ], "detail-type": [ "EC2 Instance-launch Lifecycle Action" ] }
  7. 이벤트 패턴을 저장하려면Save.

  8. Select event bus(이벤트 버스 선택)에 대해 AWS default event bus(AWS 기본 이벤트 버스)를 선택하세요.

  9. 대상에 대해 Lambda 함수를 선택하십시오.

  10. 기능을 선택합니다.로그 자동 크기 조정 이벤트. Create를 선택합니다.

4단계: 수명 주기 후크 추가

이 섹션에서는 Lambda 가 시작 시 인스턴스에서 함수를 실행할 수 있도록 수명 주기 후크를 추가합니다.

수명 주기 후크를 추가하려면

  1. 열기Auto Scaling 그룹Amazon EC2 콘솔에서

  2. Auto Scaling 그룹 옆에 있는 확인란을 선택합니다.

    분할 창이 아래쪽에 열립니다.Auto Scaling페이지로 이동합니다.

  3. 아래쪽 창의인스턴스 관리탭에서수명 주기 후크를 선택하고수명 주기 후크 생성.

  4. 수명 주기 후크를 정의하려면 다음을 수행합니다.

    1. 수명 주기 후크 이름를 입력합니다.LogAutoScalingEvent-hook.

    2. 수명 주기 전환를 선택하고인스턴스 시작.

    3. 하트비트 시간 초과를 입력합니다.300Lambda 함수에서 콜백을 기다리는 시간 (초) 을 기다립니다.

    4. [Tefult를 선택하고포기. 즉, Lambda 함수에서 콜백을 수신하지 않고 훅이 시간 초과되면 Auto Scaling 그룹이 새 인스턴스를 종료합니다.

    5. (선택 사항) 나가기알림 메타데이터비어 있습니다. EventBridge 에 전달하는 이벤트 데이터에는 Lambda 함수를 호출하는 데 필요한 모든 정보가 들어 있습니다.

  5. Create를 선택합니다.

5단계: 이벤트 테스트 및 확인

이벤트를 테스트하려면 Auto Scaling 그룹의 용량을 1만큼 늘려 Auto Scaling 그룹을 업데이트합니다. 원하는 용량을 늘린 후 몇 초 내에 Lambda 함수가 호출됩니다.

Auto Scaling 그룹의 크기를 늘리려면

  1. 열기Auto Scaling 그룹Amazon EC2 콘솔에서

  2. Auto Scaling 그룹 옆의 확인란을 선택하여 아래쪽 창에서 세부 정보를 보고 위쪽 창의 맨 위 행을 계속 표시합니다.

  3. 아래쪽 창의세부 정보탭에서그룹 세부 정보,Edit.

  4. 원하는 용량에 대해 현재 값을 1씩 늘립니다.

  5. 업데이트를 선택합니다. 인스턴스가 시작되는 동안상태열에는 상태가 표시됩니다.용량 업데이트.

원하는 용량을 늘린 후 Lambda 함수가 호출되었는지 확인할 수 있습니다.

Lambda 함수에서 출력을 보려면

  1. 열기로그 그룹 페이지CloudWatch 콘솔을 엽니다.

  2. Lambda 함수에 대한 로그 그룹 이름을 선택합니다./aws/lambda/LogAutoScalingEvent).

  3. 로그 스트림 이름을 선택하여 수명 주기 작업에 함수를 통해 제공된 데이터를 확인합니다.

다음으로 확장 활동에 대한 설명을 통해 인스턴스가 성공적으로 시작되었는지 확인할 수 있습니다.

조정 활동을 보려면

  1. CONTINUEAuto Scaling페이지로 이동하여 그룹을 선택합니다.

  2. 활동탭의활동 기록,상태열에는 Auto Scaling 그룹에서 인스턴스를 성공적으로 시작했는지 여부가 표시됩니다.

    • 작업이 성공하면 배율 조정 활동의 상태가 “성공”으로 표시됩니다.

    • 실패하면 몇 분 정도 기다린 후 “취소됨” 상태인 조정 활동이 표시되고 “인스턴스가 사용자의 수명 주기 작업을 완료하지 못했습니다. 토큰 E85EB647-4FE0-4909-B341-A6C42을 사용한 수명 주기 작업 예가 중단되었습니다. 주기 작업이 중단된 결과 “로 완료되었습니다.

Auto Scaling 그룹의 크기를 줄이려면

이 테스트에서 시작한 인스턴스가 추가로 필요하지 않으면세부 정보[] 탭으로 이동하여원하는 용량로 1입니다.

6단계: 다음 단계

이제 이 자습서를 완료했으므로 종료 수명 주기 후크를 생성할 수 있습니다. Auto Scaling 그룹 인스턴스가 종료되는 경우 이벤트가 EventBridge 로 전송됩니다. 인스턴스가 종료될 때 발생하는 이벤트에 대한 자세한 내용은 단원을 참조하십시오.EC2 인스턴스-종료 수명 주기 작업.

단계 7: 정리

이 자습서에서 작성한 리소스로 작업을 마치면 다음 단계에 따라 리소스를 삭제합니다.

수명 주기 후크를 삭제하려면

  1. 열기Auto Scaling 그룹Amazon EC2 콘솔에서

  2. Auto Scaling 그룹 옆에 있는 확인란을 선택합니다.

  3. 인스턴스 관리탭에서수명 주기 후크에서 수명 주기 후크 (LogAutoScalingEvent-hook).

  4. [Actions], [Delete]를 선택합니다.

  5. 선택삭제를 다시 입력하여 확인합니다.

Amazon EventBridge 규칙을 삭제하려면

  1. 열기규칙 페이지Amazon EventBridge 콘솔에서 확인할 수 있습니다.

  2. 언더이벤트 버스에서 규칙과 연결된 이벤트 버스 (Default).

  3. [] 규칙을 선택합니다.LogAutoScalingEvent-rule).

  4. [Actions], [Delete]를 선택합니다.

  5. 선택삭제를 다시 입력하여 확인합니다.

예제 함수를 사용한 작업이 완료되면 해당 함수를 삭제하십시오. 함수의 로그를 저장하는 로그 그룹과 생성된 실행 역할 및 권한 정책을 삭제할 수도 있습니다.

Lambda 함수 삭제하기

  1. 열기함수 페이지Lambda 콘솔에서 실행할 수 있습니다.

  2. 함수 () 를 선택합니다.LogAutoScalingEvent).

  3. [Actions], [Delete]를 선택합니다.

  4. 함수 삭제(Delete function) 대화 상자에서 삭제(Delete)를 선택합니다.

로그 그룹을 삭제하려면

  1. 열기로그 그룹 페이지CloudWatch 콘솔을 엽니다.

  2. 함수의 로그 그룹(/aws/lambda/LogAutoScalingEvent)을 선택합니다.

  3. 작업(Actions), 로그 그룹 삭제(Delete log group(s))를 선택합니다.

  4. 로그 그룹 삭제(Delete log group(s)) 대화 상자에서 삭제(Delete)를 선택합니다.

실행 역할을 삭제하려면

  1. 열기역할 페이지IAM 콘솔에 로그인합니다.

  2. 함수의 역할(LogAutoScalingEvent-role)을 선택합니다.

  3. 역할 삭제를 선택합니다.

  4. 역할 삭제(Delete role) 대화 상자에서 예, 삭제(Yes, Delete)를 선택합니다.

IAM 정책을 삭제하려면

  1. 열기정책 페이지IAM 콘솔에 로그인합니다.

  2. 생성한 정책을 선택합니다 (LogAutoScalingEvent-policy).

  3. [Delete policy]를 선택합니다.

  4. 에서정책 삭제대화 상자에서예, 삭제.