【AWS】Lambda용 NAT Gateway의 자동 기동・종료
10904 단어 자동화natgatewayAWS
NAT 게이트웨이 비용
도쿄 지역의 경우 다음 요금이 발생합니다.$0.062 per NAT Gateway Hour
자동화하려는 작업을 수동으로 확인
NAT 게이트웨이 삭제하기
루트 편집
VPC의 루트 테이블 페이지로 이동하여 루트 편집을 지정합니다.
아래 설정 항목 삭제
送信先:0.0.0.0/0
ターゲット:nat-(作成したやつ)
NAT 게이트웨이 삭제
VPC의 NAT 게이트웨이 설정 화면으로 이동하여 NATゲートウェイの削除
Elastic IP 릴리스
VPC의 ElasticIP 설정으로 주소를 해제합니다.
NAT 게이트웨이를 복원해 봅니다.
NAT 게이트웨이 만들기
VPC의 NAT 게이트웨이 설정 화면으로 이동하여 NATゲートウェイの作成
작성시 Elastic IP를 할당할 수 있으므로 여기서 할당해 버린다.
라우팅 테이블 편집
NAT 게이트웨이로 라우팅하려는 라우팅 테이블을 선택하고 다음 설정을 구성합니다.
送信先:0.0.0.0/0
ターゲット:nat-(作成したやつ)
Elastic IP 이름 수정
NAT 게이트웨이를 만들 때 생성된 Elastic IP의 이름을 지정합니다.
※ 반드시 붙일 필요는 없습니다만, 많아지면 관리할 수 없게 되기 때문에, 붙여 두는 것이 좋다고 생각합니다.
구성
이번에는, 정해진 시간에 자동 기동·종료하도록 하고 싶습니다.
아래 그림과 같이 CloudWatch Events를 트리거하고 Lambda가 작동하도록 구성합니다.
조작하는 내용은 다음과 같습니다.
■ NAT GateWay 시작 시
1. 월요일~금요일 아침 9시에 실행
2. Elastic IP
만들기
3. NAT GateWay
만들기
4. 서브넷의 라우팅 테이블에 NAT GateWay
할당
■ NAT GateWay 종료 시
1. 월요일~금요일 밤 7시에 실행
2. 서브넷 라우팅 테이블에서 NAT GateWay
3. NAT GateWay
삭제
4. Elastic IP
의 방출
부팅 프로세스 자동화
실행 역할 만들기
IAM 역할 만들기 화면에서 역할을 만듭니다.
필요한 정책은
- CloudWatchLogsFullAccess
- AmazonVPCFullAccess
- AWSLambdaBasicExecutionRole
의 3점입니다.
롤명은 적당한 것을 붙여 주세요.
Lambda 만들기
함수 만들기 페이지에서 設計図の使用
를 선택하고 키워드에 lambda-canary
를 지정하고 lambda-canary
를 선택하고 設定
버튼을 누릅니다.
기본 정보
요소
설정
함수 이름
모든 이름
실행 역할
기존 역할 사용
기존 역할
위 단계에서 만든 역할을 선택하세요.
CloudWatch Events 트리거
요소
설정
규칙
새 규칙 만들기
규칙 이름
NAT_Start
규칙 설명
Create Elastic IP and NAT 게이트웨이.
스케줄 표현
cron(0 0 ? * MON-FRI *)
※스케줄식은, 협정 세계시(UTC)이므로 주의해 주세요.
스케줄식의 시차에 대해서
트리거를 활성화하려면 체크를 해제하십시오.
소스 코드와 환경 변수는 나중에 편집하므로 그대로 関数の作成
를 클릭하십시오.
소스 코드
부팅 자동화import os
import boto3
import logging
import json
""" ログ設定 """
logger = logging.getLogger()
logger.setLevel(logging.INFO)
""" 変数設定 """
subnet = os.environ['SUBNET_ID']
client = boto3.client('ec2')
def allocate_Eip():
""" Elastic IPの取得処理 """
response = client.allocate_address(Domain='vpc')
return response.get('AllocationId')
def start_natgw(Eip,Subnet):
""" NAT GateWayの開始処理 """
response = client.create_nat_gateway(
AllocationId=eip,
SubnetId=Subnet
)
natid = response['NatGateway']['NatGatewayId']
client.get_waiter('nat_gateway_available').wait(NatGatewayIds=[natid])
return(natid)
def atatch_natgw(natgw, Subnet):
""" サブネットへの割り当て処理 """
filters = [ { 'Name': 'association.subnet-id', 'Values': [Subnet] } ]
response = client.describe_route_tables(Filters = filters)
rtb = response['RouteTables'][0]['Associations'][0]['RouteTableId']
response = client.create_route(
DestinationCidrBlock = '0.0.0.0/0',
NatGatewayId = natgw,
RouteTableId = rtb
)
def lambda_handler(event, context):
logging.info('■ 開始')
eip = allocate_Eip()
natgw = start_natgw(eip, Subnet)
atatch_natgw(natgw, Subnet)
logging.info('■ 終了')
종료 처리 자동화
실행 역할 만들기
기동시용으로 작성한 것을 이용합니다.
Lambda 만들기
함수 만들기 페이지에서 設計図の使用
를 선택하고 키워드에 lambda-canary
를 지정하고 lambda-canary
를 선택하고 設定
버튼을 누릅니다.
기본 정보
요소
설정
함수 이름
모든 이름
실행 역할
기존 역할 사용
기존 역할
위 단계에서 만든 역할을 선택하세요.
CloudWatch Events 트리거
요소
설정
규칙
새 규칙 만들기
규칙 이름
NAT_Stop
규칙 설명
Delete Elastic IP and NAT 게이트웨이.
스케줄 표현
cron(0 10 ? * MON-FRI *)
※스케줄식은, 협정 세계시(UTC)이므로 주의해 주세요.
스케줄식의 시차에 대해서
트리거를 활성화하려면 체크를 해제하십시오.
소스 코드와 환경 변수는 나중에 편집하므로 그대로 関数の作成
를 클릭하십시오.
소스 코드
Reference
이 문제에 관하여(【AWS】Lambda용 NAT Gateway의 자동 기동・종료), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/s_Pure/items/ab66bebfc2f744b81c61
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
NAT 게이트웨이 삭제하기
루트 편집
VPC의 루트 테이블 페이지로 이동하여 루트 편집을 지정합니다.
아래 설정 항목 삭제
送信先:0.0.0.0/0
ターゲット:nat-(作成したやつ)
NAT 게이트웨이 삭제
VPC의 NAT 게이트웨이 설정 화면으로 이동하여
NATゲートウェイの削除
Elastic IP 릴리스
VPC의 ElasticIP 설정으로 주소를 해제합니다.
NAT 게이트웨이를 복원해 봅니다.
NAT 게이트웨이 만들기
VPC의 NAT 게이트웨이 설정 화면으로 이동하여
NATゲートウェイの作成
작성시 Elastic IP를 할당할 수 있으므로 여기서 할당해 버린다.
라우팅 테이블 편집
NAT 게이트웨이로 라우팅하려는 라우팅 테이블을 선택하고 다음 설정을 구성합니다.
送信先:0.0.0.0/0
ターゲット:nat-(作成したやつ)
Elastic IP 이름 수정
NAT 게이트웨이를 만들 때 생성된 Elastic IP의 이름을 지정합니다.
※ 반드시 붙일 필요는 없습니다만, 많아지면 관리할 수 없게 되기 때문에, 붙여 두는 것이 좋다고 생각합니다.
구성
이번에는, 정해진 시간에 자동 기동·종료하도록 하고 싶습니다.
아래 그림과 같이 CloudWatch Events를 트리거하고 Lambda가 작동하도록 구성합니다.
조작하는 내용은 다음과 같습니다.
■ NAT GateWay 시작 시
1. 월요일~금요일 아침 9시에 실행
2. Elastic IP
만들기
3. NAT GateWay
만들기
4. 서브넷의 라우팅 테이블에 NAT GateWay
할당
■ NAT GateWay 종료 시
1. 월요일~금요일 밤 7시에 실행
2. 서브넷 라우팅 테이블에서 NAT GateWay
3. NAT GateWay
삭제
4. Elastic IP
의 방출
부팅 프로세스 자동화
실행 역할 만들기
IAM 역할 만들기 화면에서 역할을 만듭니다.
필요한 정책은
- CloudWatchLogsFullAccess
- AmazonVPCFullAccess
- AWSLambdaBasicExecutionRole
의 3점입니다.
롤명은 적당한 것을 붙여 주세요.
Lambda 만들기
함수 만들기 페이지에서 設計図の使用
를 선택하고 키워드에 lambda-canary
를 지정하고 lambda-canary
를 선택하고 設定
버튼을 누릅니다.
기본 정보
요소
설정
함수 이름
모든 이름
실행 역할
기존 역할 사용
기존 역할
위 단계에서 만든 역할을 선택하세요.
CloudWatch Events 트리거
요소
설정
규칙
새 규칙 만들기
규칙 이름
NAT_Start
규칙 설명
Create Elastic IP and NAT 게이트웨이.
스케줄 표현
cron(0 0 ? * MON-FRI *)
※스케줄식은, 협정 세계시(UTC)이므로 주의해 주세요.
스케줄식의 시차에 대해서
트리거를 활성화하려면 체크를 해제하십시오.
소스 코드와 환경 변수는 나중에 편집하므로 그대로 関数の作成
를 클릭하십시오.
소스 코드
부팅 자동화import os
import boto3
import logging
import json
""" ログ設定 """
logger = logging.getLogger()
logger.setLevel(logging.INFO)
""" 変数設定 """
subnet = os.environ['SUBNET_ID']
client = boto3.client('ec2')
def allocate_Eip():
""" Elastic IPの取得処理 """
response = client.allocate_address(Domain='vpc')
return response.get('AllocationId')
def start_natgw(Eip,Subnet):
""" NAT GateWayの開始処理 """
response = client.create_nat_gateway(
AllocationId=eip,
SubnetId=Subnet
)
natid = response['NatGateway']['NatGatewayId']
client.get_waiter('nat_gateway_available').wait(NatGatewayIds=[natid])
return(natid)
def atatch_natgw(natgw, Subnet):
""" サブネットへの割り当て処理 """
filters = [ { 'Name': 'association.subnet-id', 'Values': [Subnet] } ]
response = client.describe_route_tables(Filters = filters)
rtb = response['RouteTables'][0]['Associations'][0]['RouteTableId']
response = client.create_route(
DestinationCidrBlock = '0.0.0.0/0',
NatGatewayId = natgw,
RouteTableId = rtb
)
def lambda_handler(event, context):
logging.info('■ 開始')
eip = allocate_Eip()
natgw = start_natgw(eip, Subnet)
atatch_natgw(natgw, Subnet)
logging.info('■ 終了')
종료 처리 자동화
실행 역할 만들기
기동시용으로 작성한 것을 이용합니다.
Lambda 만들기
함수 만들기 페이지에서 設計図の使用
를 선택하고 키워드에 lambda-canary
를 지정하고 lambda-canary
를 선택하고 設定
버튼을 누릅니다.
기본 정보
요소
설정
함수 이름
모든 이름
실행 역할
기존 역할 사용
기존 역할
위 단계에서 만든 역할을 선택하세요.
CloudWatch Events 트리거
요소
설정
규칙
새 규칙 만들기
규칙 이름
NAT_Stop
규칙 설명
Delete Elastic IP and NAT 게이트웨이.
스케줄 표현
cron(0 10 ? * MON-FRI *)
※스케줄식은, 협정 세계시(UTC)이므로 주의해 주세요.
스케줄식의 시차에 대해서
트리거를 활성화하려면 체크를 해제하십시오.
소스 코드와 환경 변수는 나중에 편집하므로 그대로 関数の作成
를 클릭하십시오.
소스 코드
Reference
이 문제에 관하여(【AWS】Lambda용 NAT Gateway의 자동 기동・종료), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/s_Pure/items/ab66bebfc2f744b81c61
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
실행 역할 만들기
IAM 역할 만들기 화면에서 역할을 만듭니다.
필요한 정책은
- CloudWatchLogsFullAccess
- AmazonVPCFullAccess
- AWSLambdaBasicExecutionRole
의 3점입니다.
롤명은 적당한 것을 붙여 주세요.
Lambda 만들기
함수 만들기 페이지에서
設計図の使用
를 선택하고 키워드에 lambda-canary
를 지정하고 lambda-canary
를 선택하고 設定
버튼을 누릅니다.기본 정보
요소
설정
함수 이름
모든 이름
실행 역할
기존 역할 사용
기존 역할
위 단계에서 만든 역할을 선택하세요.
CloudWatch Events 트리거
요소
설정
규칙
새 규칙 만들기
규칙 이름
NAT_Start
규칙 설명
Create Elastic IP and NAT 게이트웨이.
스케줄 표현
cron(0 0 ? * MON-FRI *)
※스케줄식은, 협정 세계시(UTC)이므로 주의해 주세요.
스케줄식의 시차에 대해서
트리거를 활성화하려면 체크를 해제하십시오.
소스 코드와 환경 변수는 나중에 편집하므로 그대로
関数の作成
를 클릭하십시오.소스 코드
부팅 자동화
import os
import boto3
import logging
import json
""" ログ設定 """
logger = logging.getLogger()
logger.setLevel(logging.INFO)
""" 変数設定 """
subnet = os.environ['SUBNET_ID']
client = boto3.client('ec2')
def allocate_Eip():
""" Elastic IPの取得処理 """
response = client.allocate_address(Domain='vpc')
return response.get('AllocationId')
def start_natgw(Eip,Subnet):
""" NAT GateWayの開始処理 """
response = client.create_nat_gateway(
AllocationId=eip,
SubnetId=Subnet
)
natid = response['NatGateway']['NatGatewayId']
client.get_waiter('nat_gateway_available').wait(NatGatewayIds=[natid])
return(natid)
def atatch_natgw(natgw, Subnet):
""" サブネットへの割り当て処理 """
filters = [ { 'Name': 'association.subnet-id', 'Values': [Subnet] } ]
response = client.describe_route_tables(Filters = filters)
rtb = response['RouteTables'][0]['Associations'][0]['RouteTableId']
response = client.create_route(
DestinationCidrBlock = '0.0.0.0/0',
NatGatewayId = natgw,
RouteTableId = rtb
)
def lambda_handler(event, context):
logging.info('■ 開始')
eip = allocate_Eip()
natgw = start_natgw(eip, Subnet)
atatch_natgw(natgw, Subnet)
logging.info('■ 終了')
종료 처리 자동화
실행 역할 만들기
기동시용으로 작성한 것을 이용합니다.
Lambda 만들기
함수 만들기 페이지에서 設計図の使用
를 선택하고 키워드에 lambda-canary
를 지정하고 lambda-canary
를 선택하고 設定
버튼을 누릅니다.
기본 정보
요소
설정
함수 이름
모든 이름
실행 역할
기존 역할 사용
기존 역할
위 단계에서 만든 역할을 선택하세요.
CloudWatch Events 트리거
요소
설정
규칙
새 규칙 만들기
규칙 이름
NAT_Stop
규칙 설명
Delete Elastic IP and NAT 게이트웨이.
스케줄 표현
cron(0 10 ? * MON-FRI *)
※스케줄식은, 협정 세계시(UTC)이므로 주의해 주세요.
스케줄식의 시차에 대해서
트리거를 활성화하려면 체크를 해제하십시오.
소스 코드와 환경 변수는 나중에 편집하므로 그대로 関数の作成
를 클릭하십시오.
소스 코드
Reference
이 문제에 관하여(【AWS】Lambda용 NAT Gateway의 자동 기동・종료), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/s_Pure/items/ab66bebfc2f744b81c61
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【AWS】Lambda용 NAT Gateway의 자동 기동・종료), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/s_Pure/items/ab66bebfc2f744b81c61텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)