0

I am trying to create a lambda function in python that can execute some queries in Redshift depending the creation or deletion of parameters in the parameter store.

I have the following eventbridge patterns

 {
  "source": [
    "aws.ssm"
  ],
  "detail-type": [
    "Parameter Store Change"
  ],
  "detail": {
    "name": [{
      "prefix": "/Users/"
    }],
    "operation": [
      "Create"
    ]
  }
}

And the one for deletion:

     {
  "source": [
    "aws.ssm"
  ],
  "detail-type": [
    "Parameter Store Change"
  ],
  "detail": {
    "name": [{
      "prefix": "/Users"
    }],
    "operation": [
      "Delete"
    ]
  }
}

So basically I want that if a create a parameter: /users/user1 It will trigger my function and execute the user creation

if I delete parameter It will trigger the lambda function and execute the user deletion

I have this sample code in my 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)

Can I call this two event patterns from one lambda code? something like the code above? or should I create two different lambdas one for creation and another one for deletion? any recommendation? Thanks a lot

kain666
  • 31
  • 4

1 Answers1

1

Yes, you can do with one Lambda function for multiple patterns.

To invoke EventBridge, just set multiple patterns in [].

...
    "operation": [
      "Create",
      "Delete"
    ]
...

And in the Lambda function, check which pattern is sent, like this.

def lambda_handler(event, context):
    
    if event["detail"]["operation"] == ...
shimo
  • 2,156
  • 4
  • 17
  • 21