

# Lambda 함수로 Amazon EC2 수명 주기 이벤트 처리
<a name="services-ec2"></a>

AWS Lambda를 사용해 Amazon Elastic Compute Cloud의 수명 주기 이벤트를 처리하고 Amazon EC2 리소스를 관리할 수 있습니다. Amazon EC2는 인스턴스가 상태를 변경하는 경우, Amazon Elastic Block Store 볼륨 스냅샷이 완료되는 경우, 또는 스팟 인스턴스가 종료되도록 예약된 경우와 같은 [수명 주기 이벤트](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-lifecycle.html)를 [Amazon EventBridge(CloudWatch Events)](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)에 보냅니다. 처리를 위해 이러한 이벤트를 Lambda 함수로 전달하도록 EventBridge(CloudWatch Events)를 구성합니다.

EventBridge(CloudWatch Events)는 Amazon EC2의 이벤트 문서와 비동기적으로 Lambda 함수를 호출합니다.

**Example 인스턴스 수명 주기 이벤트**  

```
{
    "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 함수 간접 호출](with-eventbridge-scheduler.md) 섹션을 참조하세요. Amazon EBS 스냅샷 알림을 처리하는 예제 함수는 [EventBridge Scheduler for Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-cloud-watch-events.html)를 참조하세요.

AWS SDK를 사용하여 Amazon EC2 API로 인스턴스 및 기타 리소스를 관리할 수도 있습니다.

## EventBridge(CloudWatch Events)에 권한 부여
<a name="services-ec2-permissions"></a>

Amazon EC2의 수명 주기 이벤트를 처리하려면 EventBridge(CloudWatch Events)가 함수를 호출할 권한이 필요합니다. 이 권한은 함수의 [리소스 기반 정책](access-control-resource-based.md)에서 비롯됩니다. EventBridge(CloudWatch Events) 콘솔을 사용하여 이벤트 트리거를 구성하면 콘솔이 사용자를 대신하여 리소스 기반 정책을 업데이트합니다. 또는, 다음과 같은 문을 추가합니다.

**Example 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 권한을 함수의 [실행 역할](lambda-intro-execution-role.md)에 추가합니다.