Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 使用terraform创建lambda函数_Amazon Web Services_Aws Lambda_Terraform_Amazon Cloudwatch - Fatal编程技术网

Amazon web services 使用terraform创建lambda函数

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(

在下面的示例中,我们可以看到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(
    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。以前有没有人这样做过,并且能够帮助你


谢谢。

要实现您的目标,您需要创建并相互连接的元素很少

  • 创建以捕获进入运行状态的实例。可以使用以下规则:
  • 设置规则,使其能够触发您的lambda

  • 使用将lambda函数设置为规则的目标

  • 触发时,您的函数将为实例创建报警

  • 根据您的特定用例,如果实例从停止状态变为运行状态,也会触发该规则。您的lambda应该对此进行说明,并检查实例是否存在报警


    另一种可能是使用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"]
      }
    }