Amazon web services EC2实例状态更改警报Lambda、云事件&;社交网站

Amazon web services EC2实例状态更改警报Lambda、云事件&;社交网站,amazon-web-services,amazon-ec2,aws-lambda,Amazon Web Services,Amazon Ec2,Aws Lambda,我希望,若我的ec2状态将改变,那个么我将收到一个SNS,它包含ec2名称、实例id和帐户名称、区域 导入boto3 def lambda_处理程序(事件、上下文): #从事件中提取实例ID 实例id=事件['detail']['instance-id'] #获取有关实例的信息 ec2_client=boto3.client('ec2') 实例\u info=ec2\u客户端。描述\u实例(实例id=[instance\u id]) 实例=实例信息['Reservations'][0]['Ins

我希望,若我的ec2状态将改变,那个么我将收到一个SNS,它包含ec2名称、实例id和帐户名称、区域

导入boto3
def lambda_处理程序(事件、上下文):
#从事件中提取实例ID
实例id=事件['detail']['instance-id']
#获取有关实例的信息
ec2_client=boto3.client('ec2')
实例\u info=ec2\u客户端。描述\u实例(实例id=[instance\u id])
实例=实例信息['Reservations'][0]['Instances'][0]
#提取姓名标签
name_tags=[t['Value']表示实例['tags']中的t,如果t['Key']=='name']
name=name_标记[0],如果name_标记不是None-else“”
#向SNS发送消息
MY_SNS_TOPIC_ARN='ARN:aws:SNS:ap-southerast-2:123456789012:foo'
sns_client=boto3.client(“sns”)
sns_client.publish(
主题=我的主题,
主题='实例更改状态:'+实例id,
消息='实例:'+Instance_id+'已更改状态\n'+
'状态:'+实例['State']['Name']+'\n'+
'IP地址:'+实例['PublicIpAddress']+'\n'+
'名称:'+名称
)
下面是一个错误

启动请求ID:7c29aec4-2d51-4b29-91a0-8fc1217397ce版本:$最新 “详细信息”:键错误 回溯(最近一次呼叫最后一次): lambda_处理程序中的第6行文件“/var/task/lambda_function.py” 实例id=事件['detail']['instance-id']
KeyError:“detail”

您是否通过cloudwatch事件创建触发器并基于EC2实例状态更改创建cloudwatch事件

乍一看,事件模式预览是

{
  "source": [
    "aws.ec2"
  ],
  "detail-type": [
    "EC2 Instance State-change Notification"
  ]
}

因此,请检查以上内容,并向我们提供有关您案例的更多信息。

您是否通过cloudwatch事件创建触发器,并根据EC2实例状态更改创建cloudwatch事件

乍一看,事件模式预览是

{
  "source": [
    "aws.ec2"
  ],
  "detail-type": [
    "EC2 Instance State-change Notification"
  ]
}

因此,请检查以上内容,并向我们提供有关您案例的更多信息。

您如何调用该函数?您是否按照创建了CloudWatch事件?函数似乎没有从CloudWatch事件接收事件信息。能否在函数处理程序的开头添加
print(event)
,并检查事件对象结构?如何调用函数?您是否按照创建了CloudWatch事件?函数似乎没有从CloudWatch事件接收事件信息。能否在函数处理程序的开头添加
print(event)
,并检查事件对象结构?是的,但没有给出EC2名称。我想要Ec2的名字。你能把事件打印出来让我们检查一下是否需要自定义用户数据吗?是的,但它没有给出Ec2的名字。我想要Ec2的名字。你能把事件打印出来让我们检查一下是否需要自定义用户数据吗?