Lambda 함수로 Amazon EC2 수명 주기 이벤트 처리

Lambda 함수로 Amazon EC2 수명 주기 이벤트 처리

AWS Lambda를 사용해 Amazon Elastic Compute Cloud의 수명 주기 이벤트를 처리하고 Amazon EC2 리소스를 관리할 수 있어요. Amazon EC2는 인스턴스 상태가 변경될 때, Amazon Elastic Block Store 볼륨 스냅샷이 완료될 때, Spot Instance가 종료되도록 예약될 때 같은 수명 주기 이벤트에 대해 Amazon EventBridge(CloudWatch Events)로 이벤트를 보내요. EventBridge(CloudWatch Events)가 해당 이벤트를 처리용 Lambda 함수로 전달하도록 구성하면 되죠.

EventBridge(CloudWatch Events)는 Amazon EC2의 이벤트 문서로 Lambda 함수를 비동기식으로 호출해요.

예제 인스턴스 수명 주기 이벤트

{
    "version": "0",
    "id": "b6ba298a-7732-2226-xmpl-976312c1a050",
    "detail-type": "EC2 Instance State-change Notification",
    "source": "aws.ec2",
    "account": "111122223333",
    "time": "2019-10-02T17:59:30Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:111122223333:instance/i-0c314xmplcd5b8173"
    ],
    "detail": {
        "instance-id": "i-0c314xmplcd5b8173",
        "state": "running"
    }
}

이벤트 구성에 대한 자세한 내용은 일정에 따라 Lambda 함수 호출을 참고하세요. Amazon EBS 스냅샷 알림을 처리하는 예제 함수는 Amazon EBS용 EventBridge Scheduler를 참고하세요.

AWS SDK를 사용해 Amazon EC2 API로 인스턴스와 다른 리소스를 관리할 수도 있어요.

출처: AWS Lambda 개발자 안내서

본문

EventBridge(CloudWatch Events)에 권한 부여

Amazon EC2의 수명 주기 이벤트를 처리하려면 EventBridge(CloudWatch Events)가 함수를 호출할 권한이 필요해요. 이 권한은 함수의 리소스 기반 정책에서 옵니다. EventBridge(CloudWatch Events) 콘솔로 이벤트 트리거를 구성하면 콘솔이 사용자를 대신해 리소스 기반 정책을 업데이트해요. 그렇지 않으면 다음과 같은 문을 추가하세요:

예제 Amazon EC2 수명 주기 알림용 리소스 기반 정책 문

{
  "Sid": "ec2-events",
  "Effect": "Allow",
  "Principal": {
    "Service": "events.amazonaws.com"
  },
  "Action": "lambda:InvokeFunction",
  "Resource": "arn:aws:lambda:us-east-1:12456789012:function:my-function",
  "Condition": {
    "ArnLike": {
      "AWS:SourceArn": "arn:aws:events:us-east-1:12456789012:rule/*"
    }
  }
}

문을 추가하려면 add-permission AWS CLI 명령을 사용하세요.

aws lambda add-permission --action lambda:InvokeFunction --statement-id ec2-events \
--principal events.amazonaws.com --function-name {{my-function}} --source-arn 'arn:aws:events:us-east-1:{{12456789012}}:rule/*'

함수가 AWS SDK로 Amazon EC2 리소스를 관리한다면 함수의 실행 역할에 Amazon EC2 권한을 추가하세요.

더 알아보기 (Learn more)

  • EventBridge로 Amazon EC2 수명 주기 이벤트를 Lambda로 전달하고, 리소스 기반 정책으로 호출 권한을 부여하는 흐름을 익혀 보세요.