如何将AWS EventBridge与Python Lambda和Boto结合使用?

时间:2019-08-12 08:57:17

标签: python amazon-web-services

我在AWS上玩了一点,最后来到了AWS EventBridge。我尝试编写Lambda进行测试和理解,但刚开始时出现错误。

import json, boto3

def lambda_handler(event, context):
    client = boto3.client('events')
    response = client.create_event_bus(
    Name='TestEventBus',
    EventSourceName='SomeSoucreEvent'
)

    return {
        'statusCode': 200,
        'body': json.dumps(response)
    }

我收到以下错误消息:

响应: {   “ errorMessage”:“'CloudWatchEvents'对象没有属性'create_event_bus'”,   “ errorType”:“ AttributeError”,   “堆栈跟踪”: [     “文件\“ / var / task / lambda_function.py \”,第5行,在lambda_handler \ n中,响应= client.create_event_bus(\ n“,      getattr \ n self中的“ File \” / var / runtime / botocore / client.py \”,第563行。名称 ,项目)\ n“   ] }

在Lambda中运行的Boto版本是1.9.42

2 个答案:

答案 0 :(得分:1)

刚刚检查,boto3 现在有一个 EventBridge 客户端。

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/events.html

import boto3

client = boto3.client('events')

答案 1 :(得分:0)

首先,输入您的代码

client = boto3.client('events') 
response = client.create_event_bus(

您正在访问CloudWatchEvents,而不是AWS EventBridge(因为错误消息指出-原因如下所述)。

"CloudWatchEvents' object has no attribute 'create_event_bus'"

此外,EventBridge在Python和JS lambda环境中尚不可用(通过默认软件包)。我假设AWS尚未在lambda中运行其SDK的最新版本,您可以将您自己的代码作为捆绑包上传或与lambda层一起使用并安装自定义NPM依赖项(假设您将其作为JS运行)。这样,您可以安装最新版本的AWS开发工具包(NPM)并使用EventBridge(EventBridge在一个月前宣布)。

此外,指向文档https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/events.html#eventbridge的链接指出,它是(截至目前)版本1.9.205(另请参见URL中的/ api / latest /)。

如果打开1.9.42的文档,则通过此URL https://boto3.amazonaws.com/v1/documentation/api/1.9.42/reference/services/events.html#eventbridge添加到报表中的版本(我认为是从lambda中获取的),您将看到该版本< strong> 1.9.42 没有未实现EventBridge

它仅具有CloudWatchEvents,这就是为什么您只能使用boto3访问EventBridge的原因(到目前为止)。 您必须等到AWS在lambda上更新boto3版本,或者必须手动部署并运行捆绑软件。