티스토리 뷰

728x90

https://docs.aws.amazon.com/ko_kr/autoscaling/ec2/userguide/create-launch-template.html#create-launch-template-for-auto-scaling

https://docs.aws.amazon.com/ko_kr/autoscaling/ec2/userguide/tutorial-lifecycle-hook-lambda.html#lambda-create-iam-role

 

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

AWSLambdaBasicExecutionRole 정책은 함수가 CloudWatch Logs에 로그를 쓰는 데 필요한 권한을 가집니다.

docs.aws.amazon.com

 

 

Auto Scaling 그룹에 대한 시작 템플릿 생성 - Amazon EC2 Auto Scaling

시작 템플릿을 생성할 때 시작 템플릿 파라미터가 완전히 확인되지 않습니다. 파라미터에 잘못된 값을 지정하거나 지원되는 파라미터 조합을 사용하지 않으면 이 시작 템플릿을 사용하여 인스

docs.aws.amazon.com

 

순서

1. auto scaling 구성

     - 시작 템플릿 구성

     - auto scaling group 생성

2. lambda 함수를  호출하는 수명 주기 후크 구성

     - 권한 IAM 역할 생성

     - lambda 함수 생성

     - EventBridge 규칙 생성

     - 수명 주기 후크 추가

 

 

VPC

private subnet에 ec2하나 있ㅇ음

 

 

Auto Scaling 구성

시작 템플릿 구성

새엇ㅇ

그룹 생성

 

저렇게 헬띠한 상태면 autoscaling끝

 

Lambda 함수를 호출하는 수명 주기 후크 구성

  1. IAM 콘솔에서 정책(Policies) 페이지를 열고 **Create policy(정책 생성)**를 선택합니다.
  2. JSON 탭을 선택합니다.
  3. Policy Document(정책 문서) 상자에 다음 정책 문서를 붙여 넣고 *기울임꼴*로 표시된 텍스트를 계정 번호 및 Auto Scaling 그룹의 이름으로 바꿉니다.
  4. { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CompleteLifecycleAction" ], "Resource": "arn:aws:autoscaling:*:*123456789012*:autoScalingGroup:*:autoScalingGroupName/*my-asg*" } ] }
  5. Next(다음)를 선택합니다.
  6. **정책 이름(Policy name)**에 **LogAutoScalingEvent-policy**을 입력합니다. 정책 생성을 선택합니다.

역할 생성

  1. 왼쪽의 탐색 창에서 역할을 선택합니다.
  2. 역할 생성을 선택합니다.
  3. **신뢰할 수 있는 엔터티 선택(Select trusted entity)**에서 **AWS 서비스( service)**를 선택합니다.
  4. 사용 사례에 대해 Lambda를 선택하고 **다음(Next)**을 선택합니다.
  5. **권한 추가(Add permissions)**에서 생성한 정책(LogAutoScalingEvent-policy)과 이름이 AWSLambdaBasicExecutionRole인 정책을 선택합니다. 그리고 다음을 선택합니다.
  6. 이름 지정, 검토 및 생성(Name, review, and create) 페이지에서 **역할 이름(Role name)**에 **LogAutoScalingEvent-role**을 입력하고 **역할 생성(Create role)**을 선택합니다.

 

 

2단계: Lambda 함수 생성

  1. Lambda 콘솔에서 함수 페이지를 엽니다.
  2. **Create function(함수 생성)**과 **Author from scratch(새로 작성)**를 차례로 선택합니다.
  3. **기본 정보(Basic information)**에서 **함수 이름(Function name)**에 **LogAutoScalingEvent**을 입력합니다.
  4. 런타임에서 Node.js 18.x를 선택합니다.
  5. 아래로 스크롤하여 집행 역할 기본값 변경을 선택하고 집행 역할에서 기존 역할 사용을 선택합니다.
  6. **Existing role(기존 역할)**로 LogAutoScalingEvent-role을 선택합니다.
  7. 나머지는 기본값을 그대로 사용합니다.

 

콘솔에 LogAutoScalingEvent 함수를 여전히 열어둔 상태에서 편집기의 코드 소스에서 다음 샘플 코드를 index.mjs 파일에 붙여 넣습니다.

import { AutoScalingClient, CompleteLifecycleActionCommand } from "@aws-sdk/client-auto-scaling";
export const handler = async(event) => {
  console.log('LogAutoScalingEvent');
  console.log('Received event:', JSON.stringify(event, null, 2));
  var autoscaling = new AutoScalingClient({ region: event.region });
  var eventDetail = event.detail;
  var params = {
    AutoScalingGroupName: eventDetail['AutoScalingGroupName'],/* required */LifecycleActionResult: 'CONTINUE',/* required */LifecycleHookName: eventDetail['LifecycleHookName'],/* required */InstanceId: eventDetail['EC2InstanceId'],
    LifecycleActionToken: eventDetail['LifecycleActionToken']
  };
  var response;
  const command = new CompleteLifecycleActionCommand(params);
  try {
    var data = await autoscaling.send(command);
    console.log(data);// successful response
    response = {
      statusCode: 200,
      body: JSON.stringify('SUCCESS'),
    };
  } catch (err) {
    console.log(err, err.stack);// an error occurred
    response = {
      statusCode: 500,
      body: JSON.stringify('ERROR'),
    };
  }
  return response;
};

이 코드는 이벤트를 간단하게 로깅하므로 자습서를 마치면 이 Lambda 함수와 연결된 CloudWatch Logs 로그 스트림에 이벤트가 나타나는 것을 볼 수 있습니다.

 

3단계: EventBridge 규칙 생성

 

 

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

  1. Amazon EC2 콘솔에서 Auto Scaling 그룹 페이지를 엽니다.
  2. Auto Scaling 그룹 옆의 확인란을 선택합니다. 페이지 하단에 분할 창이 열립니다.
  3. 창 하단 Instance management(인스턴스 관리) 탭의 **Lifecycle hooks(수명 주기 후크)**에서 **Create lifecycle hook(수명 주기 후크 생성)**를 선택합니다.
  4. 스케일 아웃(인스턴스 실행)을 위한 수명 주기 후크를 정의하려면 다음을 수행하세요.
    1. **Lifecycle hook name(수명 주기 후크 이름)**으로 **LogAutoScalingEvent-hook**를 입력합니다.
    2. **Lifecycle transition(수명 주기 전환)**에서 **Instance launch(인스턴스 시작)**를 선택합니다.
    3. **Heartbeat timeout(하트비트 시간 제한)**에 Lambda 함수에서 콜백을 기다리는 시간(초)으로 **300**을 입력합니다.
    4. **Default result(기본 결과)**로 **ABANDON(포기)**을 선택합니다. 즉, Lambda 함수에서 콜백을 수신하지 않았는데 후크가 시간 초과되면 Auto Scaling 그룹이 새 인스턴스를 해지합니다.
    5. (옵션)**Notification metadata(알림 메타데이터)**를 비워 둡니다. EventBridge로 전달하는 이벤트 데이터에는 Lambda 함수를 호출하는 데 필요한 모든 정보가 들어 있습니다.
  5. **생성(Create)**을 선택합니다

 

 

확인

원하는 용량 크기를 1늘리고 업데이트 하면 lambda 함수가 실행돼서

 

로그 그룹ㅇ에 요론식으로 로그 남음

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함
250x250