gpt4 book ai didi

amazon-web-services - 在 lambda 函数中使用 EventBridge 事件模式字符串

转载 作者:行者123 更新时间:2023-12-05 09:35:10 37 4
gpt4 key购买 nike

我有一个使用 Python 的 lambda 函数。它连接到 EventBridge 规则,该规则在每次 Glue 表发生变化时触发。

它输出的事件模式看起来像这样:

{
"version":"0",
"detail":{
"databaseName":"flights-db",
"typeOfChange":"UpdateTable",
"tableName":"flightscsv"
}
}

我想将此输出中的 tableNamedatabaseName 值作为变量放入函数中。

我的 Lambda 函数:

import json
import boto3

def lambda_handler(event, context):
boto3_version = boto3.__version__

return_statement = 'Boto3 version: ', boto3_version,\
'Event output: ', event

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

我期望在我的 return 语句中从 event 获得事件模式输出,但事实并非如此。

测试此函数时,event 的返回输出为:

{\"key1\":\"value1\",\"key2\":\"value2\",\"key3\":\"value3\"}

这个键和值在函数的测试模式中是这样定义的。

eventbridge规则是这样定义的: enter image description here

如何从事件模式中获取值到变量?我是否需要配置测试模式以将结果放入 event

编辑:表更改事件的日志事件图片: enter image description here

最佳答案

由 CloudWatch (CW) Events/Event Bridge (EB) 生成的 event 对象在 here 中列出。当 EB 触发时,这些事件将传递给您的函数。

您的 EB 事件模式应该是:

{
"source": ["aws.glue"],
"detail-type": ["Glue Data Catalog Table State Change"]
}

以上内容应该与您的粘合目录中的任何表格的更改相匹配。 事件 应该类似于下面的事件:

{
"version": "0",
"id": "2617428d-715f-edef-70b8-d210da0317a0",
"detail-type": "Glue Data Catalog Table State Change",
"source": "aws.glue",
"account": "123456789012",
"time": "2019-01-16T18:16:01Z",
"region": "eu-west-1",
"resources": [
"arn:aws:glue:eu-west-1:123456789012:table/d1/t1"
],
"detail": {
"databaseName": "d1",
"changedPartitions": [
"[C.pdf, dir3]",
"[D.doc, dir4]"
],
"typeOfChange": "BatchCreatePartition",
"tableName": "t1"
}
}

因此,要获取 tableNamedatabaseName,您的 lambda 函数可以是:

import json
import boto3

def lambda_handler(event, context):
boto3_version = boto3.__version__

print(event)

table_name = event['detail']['tableName']
database_name = event['detail']['databaseName']

print(table_name, database_name)

return_statement = {
'boto3_version': boto3_version,
'table_name': table_name,
'database_name': database_name
}

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

为了测试,您可以在 lambda 测试窗口中设置示例 EB 事件:

enter image description here

关于amazon-web-services - 在 lambda 函数中使用 EventBridge 事件模式字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66064163/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com