我在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
答案 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版本,或者必须手动部署并运行捆绑软件。