从单个 Lambda 函数调用的多个 EventBridge 事件 (python)
Multiple EventBridge events called from a single Lambda Function(python)
我正在尝试在 python 中创建一个 lambda 函数,它可以根据参数存储中参数的创建或删除在 Redshift 中执行一些查询。
我有以下 eventbridge 模式
{
"source": [
"aws.ssm"
],
"detail-type": [
"Parameter Store Change"
],
"detail": {
"name": [{
"prefix": "/Users/"
}],
"operation": [
"Create"
]
}
}
以及要删除的:
{
"source": [
"aws.ssm"
],
"detail-type": [
"Parameter Store Change"
],
"detail": {
"name": [{
"prefix": "/Users"
}],
"operation": [
"Delete"
]
}
}
所以基本上我想要创建一个参数:/users/user1
它将触发我的功能并执行用户创建
如果我删除参数
会触发lambda函数,执行用户删除
我的 lambda 中有这个示例代码:
def insert(event, context):
action = client.execute_statement(ClusterIdentifier =cluster, Database=database, DbUser=dbuser ,Sql= "create user user1 password 'blablabla';")
def delete(event, context):
action = client.execute_statement(ClusterIdentifier =cluster, Database=database, DbUser=dbuser ,Sql= "drop user user1;")
def lambda_handler(event, context):
if event['EventType'] == 'insert':
insert(event, context)
elif event['EventType'] == 'delete':
delete(event, context)
print(action)
我可以从一个 lambda 代码中调用这两个事件模式吗?类似于上面的代码?或者我应该创建两个不同的 lambda,一个用于创建,另一个用于删除?
有什么建议吗?
非常感谢
是的,您可以对多个模式使用一个 Lambda 函数。
要调用 EventBridge,只需在 [] 中设置多个模式即可。
...
"operation": [
"Create",
"Delete"
]
...
然后在 Lambda 函数中,检查发送的是哪个模式,就像这样。
def lambda_handler(event, context):
if event["detail"]["operation"] == ...
我正在尝试在 python 中创建一个 lambda 函数,它可以根据参数存储中参数的创建或删除在 Redshift 中执行一些查询。
我有以下 eventbridge 模式
{
"source": [
"aws.ssm"
],
"detail-type": [
"Parameter Store Change"
],
"detail": {
"name": [{
"prefix": "/Users/"
}],
"operation": [
"Create"
]
}
}
以及要删除的:
{
"source": [
"aws.ssm"
],
"detail-type": [
"Parameter Store Change"
],
"detail": {
"name": [{
"prefix": "/Users"
}],
"operation": [
"Delete"
]
}
}
所以基本上我想要创建一个参数:/users/user1 它将触发我的功能并执行用户创建
如果我删除参数 会触发lambda函数,执行用户删除
我的 lambda 中有这个示例代码:
def insert(event, context):
action = client.execute_statement(ClusterIdentifier =cluster, Database=database, DbUser=dbuser ,Sql= "create user user1 password 'blablabla';")
def delete(event, context):
action = client.execute_statement(ClusterIdentifier =cluster, Database=database, DbUser=dbuser ,Sql= "drop user user1;")
def lambda_handler(event, context):
if event['EventType'] == 'insert':
insert(event, context)
elif event['EventType'] == 'delete':
delete(event, context)
print(action)
我可以从一个 lambda 代码中调用这两个事件模式吗?类似于上面的代码?或者我应该创建两个不同的 lambda,一个用于创建,另一个用于删除? 有什么建议吗? 非常感谢
是的,您可以对多个模式使用一个 Lambda 函数。
要调用 EventBridge,只需在 [] 中设置多个模式即可。
...
"operation": [
"Create",
"Delete"
]
...
然后在 Lambda 函数中,检查发送的是哪个模式,就像这样。
def lambda_handler(event, context):
if event["detail"]["operation"] == ...