Jak za pomocą funkcji Lambda włączyć i wyłączyć serwer EC2 w AWS

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.

Comments are closed.