Jak za pomocą funkcji Lambda włączyć i wyłączyć serwer EC2 w AWS
Pisałem już kilka razy o lambdach. Między innymi stawialiśmy api oparte na lambdzie. Dziś krótki i szybki tip, jak za pomocą funkcji Lambda włączyć i wyłączyć serwer EC2 w AWS.
Obie funkcje napisane w Pythonie, korzystają z boto3. Myślę, że komentarze w kodzie wystarczą za manual.
Włączamy maszynę tak:
import boto3
region = 'region_w_którym_mamy_instancje" # np.'eu-central-1'
instances = ['identyfikator_instancji'] # może ich byc więcej
def lambda_handler(event, context):
ec2 = boto3.client('ec2', region_name=region)
ec2.start_instances(InstanceIds=instances)
A wyłączamy tak:
import boto3
region = 'region_w_którym_mamy_instancje" # np.'eu-central-1'
instances = ['identyfikator_instancji'] # może ich byc więcej
def lambda_handler(event, context):
ec2 = boto3.client('ec2', region_name=region)
ec2.stop_instances(InstanceIds=instances)
Obie funkcje muszą mieć oczywiście rolę, która im pozwoli na takie działania. Poniżej polityka którą powinniśmy podpiąć pod rolę która pozwoli funckji lambda tworzenie logów oraz na uruchomienie i zatrzymanie maszyny:
{
"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": "*"
}
]
}
Proste? Proste. Krótko i na temat. Problem rozwiązany.