Итак, я уже дошел до того, что ниже, я пытаюсь сделать так, чтобы лямбда-функция применялась к определенному VPC (все экземпляры в этом VPC).В AWS есть определенный способ сделать это, но заставить клиентов платить дополнительные $ 2,20 за экземпляр для детального мониторинга трудно оправдать.Основываясь на том, что я прочитал до сих пор, до смешного легко написать функцию для каждого экземпляра, опять же, это можно сделать почти нажатием следующего следующего финиша в AWS, но мы не хотим определять отдельные экземпляры на основе того, какнаши клиенты растут так быстро.
import boto3
def put_cpu_alarm(instance_id):
cloudWatch = boto3.client('cloudwatch')
cloudWatch.put_metric_alarm(
AlarmName = f'CPU_ALARM_{instance_id}'
AlarmDescription = 'Alarm when server CPU does not exceed 10%'
AlarmActions = ['arn:aws:automate:eu-west-1:ec2:stop']
MetricName = 'CPUUtilization'
Namespace = 'AWS/EC2'
Statistic = 'Average'
Dimensions = [{'Name': 'InstanceId', 'Value': instance_id}]
Period = 300
EvaluationPeriods = 12
Threshold = 10
ComparisonOperator = 'LessThanOrEqualToThreshold'
TreatMissingData = 'notBreaching'
)
def lambda_handler(event, context):
instance_id = event['detail']['instance-id']
ec2 = boto3.resource('ec2')
instance = ec2.Instance(instance_id)
if instance.instance_type.endswith('xlarge'): put_cpu_alarm(instance_id)
Я надеялся, что небольшой оператор if в последней строке мог бы быть обновлен для работы с конкретным VPC, но не особо задумывался над поиском правильной строки для ссылки на отдельный VPC или систему безопасности.группа, которая может помочь.
Любой совет высоко ценится.