【问题标题】:Python lambda code using AWS Cloudwatch data input使用 AWS Cloudwatch 数据输入的 Python lambda 代码
【发布时间】:2018-05-20 20:08:12
【问题描述】:

所以,我有一个 Cloudwatch 规则,它可以在触发时发送 SNS 主题。现在,我正在设置一个 lambda 函数来在 CloudWatch 规则触发时更改 EC2 实例的安全组。我在 Lambda 中使用 python,但我的代码会产生一些“模块错误”。棘手的部分是我试图获取 cloudwatch 数据并将其作为变量传递。事件变量采用这种语法 - 事件['detail']['resource']['instanceDetails']['instanceId'] 所以在我的python代码中,它看起来像这样...... 我对 python 和 lambda 非常陌生,但我正在尝试尽可能多地学习。如您所见,我正在尝试使用此事件变量,然后利用 SDK 执行适当的 ModifyInstanceAttribute 以更改与实例关联的安全组(例如使用 python): 此代码将替换与指定实例关联的安全组,如 boto3 文档中所述:http://boto3.readthedocs.io/en/latest/reference/services/ec2.html#EC2.Client.modify_instance_attribute

我的代码到目前为止...

import boto3
client = boto3.client('ec2')
response = 
client.modify_instance_attribute(InstanceId=event['detail']. ['resource']['instanceDetails']['instanceId'], 
    Groups=['sg-4e499332',]
)

我得到的错误是此模块初始化错误:未定义名称“事件”

【问题讨论】:

    标签: python amazon-web-services amazon-ec2 aws-lambda


    【解决方案1】:

    您不会为 Lambda 编写类似的代码。您的处理程序必须是一个接受 eventcontext 参数的函数。

    请参阅Lambda handler docs for Python

    【讨论】:

    • 好的,我已经更进一步并让它工作了,但我必须实际定义确切的实例 ID。不是我真正想要的,因为如果我有多个符合 Cloudwatch 规则的实例,他们也应该更改他们的安全组。将事件数据解析为 lambda 脚本中的变量有任何帮助吗?
    猜你喜欢
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 2022-07-08
    • 2022-01-18
    • 2020-10-21
    • 2019-02-13
    • 2019-10-01
    相关资源
    最近更新 更多