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.