Amazon web services 使用terraform创建lambda函数
在下面的示例中,我们可以看到lambda函数的代码,该函数根据cpu利用率在cloudwatch中创建警报Amazon web services 使用terraform创建lambda函数,amazon-web-services,aws-lambda,terraform,amazon-cloudwatch,Amazon Web Services,Aws Lambda,Terraform,Amazon Cloudwatch,在下面的示例中,我们可以看到lambda函数的代码,该函数根据cpu利用率在cloudwatch中创建警报 import boto3 import collections from datetime import datetime import calendar def lambda_handler(event, context): client = boto3.client('cloudwatch') alarm = client.put_metric_alarm(
import boto3
import collections
from datetime import datetime
import calendar
def lambda_handler(event, context):
client = boto3.client('cloudwatch')
alarm = client.put_metric_alarm(
AlarmName='CPU Alarm',
MetricName='CPUUtilization',
Namespace='AWS/EC2',
Statistic='Average',
ComparisonOperator='GreaterThanOrEqualToThreshold',
Threshold=70.0,
Period=10,
EvaluationPeriods=1,
Dimensions=[
{
'Name': 'InstanceId',
'Value': '{instance_id}'
}
],
Unit='Percent',
ActionsEnabled=True,
AlarmActions=['arn:aws:sns:us-east-1:xxxxxxxxxxxx:CloudWatch'])
我正在努力理解如何在地形中创建它。有人能帮忙吗?关键是我需要它工作,这样一旦实例启动,警报就会被创建,这就是触发lambda的事件
我“认为”我的.tf文件看起来像这样
resource "aws_cloudwatch_metric_alarm" "CPU Alarm" {
alarm_name = "CPU Alarm"
comparison_operator = "GreaterThanOrEqualToThreshold"
evaluation_periods = "1"
metric_name = "CPUUtilization"
namespace = "AWS/EC2"
period = "10"
statistic = "Average"
threshold = "70"
alarm_description = "This metric monitors ec2 cpu utilization"
insufficient_data_actions = []
}
我非常希望它能够正常工作,这样每个启动的实例都会创建一个特定的指标来监控其CPU。以前有没有人这样做过,并且能够帮助你
谢谢。要实现您的目标,您需要创建并相互连接的元素很少
另一种可能是使用CloudTrial trials捕获API调用
创建实例
,然后设置报警。因此,您在TF中创建的此报警应该触发您有疑问的lambda函数?lambda函数将在TF中创建,lambda将由EC2中的“运行”状态触发。lambda函数创建cpu警报。您是否正在管理您希望使用Terraform为其创建警报的EC2实例?如果是,您能否将您的aws\u cloudwatch\u metric\u报警
与每个的相结合以创建所需的报警?我同意yvesonline的说法。如果EC2实例是由Terraform创建的,那么Terraform也可以创建CW警报。如果EC2实例是以其他方式创建的,并且您确实需要Lambda来配置CW警报,那么我建议查看可以触发Lambda的EC2状态更改事件。它在最新文档中的AWS EventBridge下。这将允许您在启动实例时触发函数(使用实例ID和状态)。答案与此无关。感谢您的尝试,我尝试了一些由您提供的链接触发的进一步研究,但实际上此响应没有帮助。如果希望在启动实例时运行Lambda,则LCW事件绝对有用。
{
"source": ["aws.ec2"],
"detail-type": ["EC2 Instance State-change Notification"],
"detail": {
"state": ["running"]
}
}