从单个 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"] == ...