중지 및 시작하려는 EC2 인스턴스의 ID를 가져오고 다음 지침을 따릅니다.
IAM 정책 및 역할 생성
1. JSON 정책 편집기를 사용하여 IAM 정책을 생성합니다. 이 JSON 정책 문서를 정책 편집기에 붙여넣습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"ec2:Start*",
"ec2:Stop*"
],
"Resource": "*"
}
]
}
2. Lambda를 위한 IAM 역할을 생성합니다. 권한 정책을 연결할 때, 생성한 IAM 정책을 검색하여 선택합니다.
EC2 인스턴스를 중지 및 시작하는 Lambda 함수 생성
1. Lambda 콘솔에서 [Create function]을 선택합니다.
2. [Author from scratch]를 선택합니다.
3. [Basic information]에서 다음을 추가합니다.
[unction name]에 EC2 인스턴스를 중지하는 데 사용할 함수로 표시될 이름을 입력합니다. 예를 들어, "StopEC2Instances"를 입력합니다.
[Runtime]에서 [Python 2.7]을 선택합니다.
[Permissions]에서 [Choose or create an execution role]을 확장합니다.
[Execution role]에서 [Use an existing role]을 선택합니다.
[Existing role]에서, 생성한 IAM 역할을 선택합니다.
4. [Create function]을 선택합니다.
5. 이 코드를 복사하여 [Function code] 아래 코드 편집기의 편집기 창에 붙여넣습니다(lambda_function). 이 코드는 지정한 EC2 인스턴스를 중지합니다.
참고: region에서 "us-west-1"을 해당 인스턴스가 존재하는 AWS 리전으로 대체합니다. instances에서는 EC2 인스턴스 ID 예제를 중지 및 시작할 특정 인스턴스를 대체합니다.
import boto3
region = 'us-west-1'
instances = ['i-12345cb6de4f78g9h', 'i-08ce9b2d7eccf6d26']
def lambda_handler(event, context):
ec2 = boto3.client('ec2', region_name=region)
ec2.stop_instances(InstanceIds=instances)
print 'stopped your instances: ' + str(instances)
6. [Basic settings]에서 [Timeout]을 10초로 설정합니다.
참고: 필요에 따라 사용 사례에 맞게 Lambda 함수 설정을 구성하십시오. 예를 들어, 여러 인스턴스를 중지 및 시작하려는 경우 제한 시간 및 메모리에 서로 다른 값을 사용해야 할 수 있습니다.
7. [Save]를 선택합니다.
8. 1-7단계를 반복하여 다른 함수를 생성합니다. 이 함수가 EC2 인스턴스를 시작하도록 조금 다르게 다음을 수행합니다.
3단계에서, EC2 인스턴스를 시작하는 데 사용될 함수의 [Function name]을 입력합니다. 예를 들어, "StartEC2Instances"를 입력합니다.
5단계에서, 이 코드를 복사하여 코드 편집기의 편집기 창에 붙여넣습니다(lambda_function).
참고: region 및 instances에 대해 EC2 인스턴스를 중지하는 코드에 사용했던 것과 동일한 값을 사용합니다.
import boto3
region = 'us-west-1'
instances = ['i-12345cb6de4f78g9h', 'i-08ce9b2d7eccf6d26']
def lambda_handler(event, context):
ec2 = boto3.client('ec2', region_name=region)
ec2.start_instances(InstanceIds=instances)
print 'started your instances: ' + str(instances)
Lambda 함수 테스트
1. Lambda 콘솔에서 [Functions]를 선택합니다.
2. 생성한 함수 중 하나를 선택합니다.
3. [Actions]를 선택하고 [Test]를 선택합니다.
4. [Configure test event] 대화 상자에서 [Create new test event]를 선택합니다.
5. [Event name]을 입력하고 [Create]를 선택합니다.
참고: 테스트 이벤트에 대해 JSON 코드는 변경하지 않아도 됩니다. 함수에서는 사용하지 않습니다.
6. [Test]를 선택하여 함수를 실행합니다.
7. 생성한 다른 함수에 대해 1 - 6단계를 반복합니다.
팁: 함수가 예상대로 작동하는지 확인하기 위해 테스트 전후에 EC2 인스턴스 상태를 확인할 수 있습니다.
Lambda 함수를 트리거하는 규칙 생성
1. CloudWatch 콘솔을 엽니다.
2. 왼쪽 탐색 창의 [Events]에서 [Rules]를 선택합니다.
3. [Create rule]을 선택합니다.
4. [Event Source]에서 [Schedule]을 선택합니다.
5. 다음 중 하나를 수행합니다.
[Fixed rate of]에 시간 간격(분, 시간 또는 일)을 입력합니다.
[Cron expression]에 인스턴스를 중지할 시기를 Lambda에 알려주는 표현식을 입력합니다. 표현식 구문에 대한 자세한 내용은 규칙에 대한 예약 표현식을 참조하십시오.
참고: Cron 표현식은 UTC로 평가됩니다. 기본 시간대로 표현식을 조정해야 합니다.
6. [Targets]에서 [Add target]을 선택합니다.
7. [Lambda function]을 선택합니다.
8. [Function]에서 EC2 인스턴스를 중지하는 함수를 선택합니다.
9. [Configure details]를 선택합니다.
10. [Rule definition]에서 다음을 수행합니다.
[Name]에 규칙을 식별하는 이름(예: "StopEC2Instances")을 입력합니다.
(선택 사항) [Description]에서 이벤트를 설명합니다. 예를 들어, "매일 밤 오후 10시에 EC2 인스턴스 중지"라고 입력할 수 있습니다.
[State]에서 [Enabled] 확인란을 선택합니다.
11. [Create rule]을 선택합니다.
12. 1-11단계를 반복하여 EC2 인스턴스를 시작하는 규칙을 생성합니다. 이전과 조금 다르게 다음을 수행합니다.
5단계에서, Lambda에 인스턴스 시작 시점을 알려주는 표현식을 [Cron expression]에 입력합니다.
8단계에서, EC2 인스턴스를 시작하는 함수를 [Function]에 선택합니다.
10단계에서, [Rule definition] 아래에 "StartEC2Instances"와 같은 [Name]을 입력하고 선택적으로 "매일 아침 오전 6시에 EC2 인스턴스 시작”과 같은 [Description]을 입력합니다.
출처 : https://aws.amazon.com/ko/premiumsupport/knowledge-center/start-stop-lambda-cloudwatch/
'AWS' 카테고리의 다른 글
AWS를 활용한 TLS 1.2 미만버전의 인증문제 (0) | 2020.10.07 |
---|---|
AWS 마이그레이션 사례 (1) | 2020.07.07 |
Bring Your Own IP (0) | 2020.02.27 |
IoT 서비스 migration (0) | 2020.02.21 |
AWS 네크워크 TGW(Transit Gateway)기능을 소개합니다. (0) | 2020.02.19 |