terraform_lambda
terraform_lambda
required_providers {
aws = {
source = "hashicorp/aws"
version = "5.82.2"
}
}
}
provider "aws" {
region = "ap-southeast-2"
}
tags = {
Name = "example-ec2-instance"
}
}
assume_role_policy = jsonencode({
Version = "2012-10-17",
Statement = [
{
Effect = "Allow",
Principal = {
Service = "lambda.amazonaws.com"
},
Action = "sts:AssumeRole"
}
]
})
}
environment {
variables = {
INSTANCE_ID = aws_instance.example_ec2.id
}
}
}
Python
import boto3
import os
def lambda_handler(event, context):
ec2_client = boto3.client('ec2')
instance_id = os.environ['INSTANCE_ID']
try:
response = ec2_client.stop_instances(InstanceIds=[instance_id])
return {
"statusCode": 200,
"body": f"Shutting down instance {instance_id}"
}
except Exception as e:
return {
"statusCode": 500,
"body": f"Error: {str(e)}"
}