Monday, August 11, 2025

How To Invoke Lambda Functions From RDS & Aurora (Direct/Indirect) | Overview.


How To Invoke Lambda Functions From RDS & Aurora 
(Direct / Indirect) - Overview.

Scope:

  • Intro,
  • Architecture,
  • Background conceptWhy Invoke Lambda from RDS/Aurora,
  • Direct Lambda Invocation Options (Using Aurora MySQL / PostgreSQL with AWS Lambda integration)
  • Direct Lambda Invocation Options (Using RDS Proxy with Lambda),
  • Indirect Lambda Invocation (All RDS Engines): Using Database Triggers AWS SNS / SQS + Lambda,
  • Indirect Lambda Invocation: Using AWS DMS (Database Migration Service) + Lambda,
  • Indirect Lambda Invocation: Using AWS EventBridge + Lambda,
  • Indirect Lambda Invocation: Using AWS EventBridge + Lambda Using Custom Polling (cron + Lambda),
  • Setup Details for Aurora MySQL Lambda Invocation,
  • Security Considerations,
  • Pros and Cons,
  • Sample Use Cases,
  • Summary Table.

Intro:

  • Invoking AWS Lambda functions from RDS (Relational Database Service) and Aurora is a powerful pattern to extend twtech database capabilities with: 
    • Serverless compute, 
    • Event-driven workflows,  
    • Custom logic.
  • This includes approaches, architecture, pros/cons, and example use cases.

Architecture

1. Background concept: Why Invoke Lambda from RDS/Aurora.

  •         Extend database capabilities: Add complex processing, notifications, or integration logic without embedding it in the database.
  •         Event-driven workflows: Trigger downstream processes when data changes.
  •         Serverless architecture: Keep compute separate from the database, scaling independently.
  •         Avoid polling: Lambda can be invoked on demand instead of frequent database checks.

2. Direct Lambda Invocation Options

  • Unfortunately, RDS databases (MySQL, PostgreSQL, etc.) don’t natively support calling Lambda functions directly
  • But there are indirect ways to trigger Lambdas from Aurora or RDS:

2.1 Direct Lambda Invocation Options (Using Aurora MySQL / PostgreSQL with AWS Lambda integration)

Aurora supports invoking Lambda functions from within the database itself — but this depends on engine/version.

  •         Aurora MySQL supports the aws_lambda integration plugin (from Aurora MySQL 2.08+).
  •         Aurora PostgreSQL supports Lambda invocation using the aws_lambda.invoke function (starting from specific versions).

Aurora MySQL example:

  •         Install and enable the aws_lambda plugin.
  •         Use the aws_lambda.invoke() stored procedure inside SQL to call a Lambda function.

Sample SQL:

# sql
CALL aws_lambda.invoke('twtech-LambdaFunction', '{ "key1": "twtech-value11" }');

  •       The Lambda receives the JSON payload and runs twtech logic.
  •       twtech gets a response back to SQL.

Aurora PostgreSQL example:

twtech can invoke Lambda by calling the aws_lambda.invoke_lambda() function (depends on version).

Sample SQL:

# sql
SELECT aws_lambda.invoke_lambda('twtech-LambdaFunction', '{"param":"twtech-value1"}');

2.2 Direct Lambda Invocation Options (Using RDS Proxy with Lambda)

  •         RDS Proxy doesn’t invoke Lambda but provides connection pooling to RDS and can be combined with event-driven architectures.

3. Indirect Lambda Invocation (All RDS Engines) 

NB:

  • If direct invocation isn’t available or for other RDS engines, twtech can use event-driven triggers:

3.1 Indirect Lambda Invocation (All RDS Engines) Using Database Triggers + AWS SNS / SQS + Lambda

  •         Create database triggers (e.g., AFTER INSERT/UPDATE/DELETE).
  •         Triggers write a row or a message into a notification table or queue.
  •         A polling Lambda monitors that table or listens to SNS/SQS for changes.
  •         Lambda processes the data asynchronously.

Workflow:

     1.     Database trigger insert event row in notification table.
2.     Lambda polls table or listens on queue.
3.     Lambda processes event.

3.2  Indirect Lambda Invocation (All RDS Engines) Using AWS DMS (Database Migration Service) + Lambda

  •         AWS DMS can capture ongoing changes in RDS/Aurora (CDC - Change Data Capture).
  •         DMS streams changes to Amazon Kinesis or S3.
  •         Lambda reads from Kinesis/S3 and acts on changes.

3.3 Indirect Lambda Invocation (All RDS Engines) Using AWS EventBridge + Lambda

  •         For Aurora Serverless v2, twtech can enable database activity streams.
  •         Stream events to EventBridge.
  •         Lambda triggers on EventBridge events.

3.4 Indirect Lambda Invocation (All RDS Engines) Using AWS EventBridge + Lambda Using Custom Polling (cron + Lambda)

  •         Lambda runs periodically (scheduled via EventBridge).
  •         Lambda queries the database for changes.
  •        Processes results.

4. Setup Details for Aurora MySQL Lambda Invocation

Step 1: Enable aws_lambda plugin

# sql
CALL mysql.rds_enable_lambda_integration();

Check with:

# sql
SHOW PLUGINS;

Step 2: Create IAM Role for Aurora to invoke Lambda

  •         Create an IAM role with Lambda invocation permissions.
  •         Attach the IAM role to twtech Aurora cluster.

Step 3: Create twtech Lambda function

  •         Create the Lambda function twtech wants to invoke.
  •         Test independently with sample input.

Step 4: Invoke Lambda from SQL

# sql 
SELECT aws_lambda.invoke('twtech-Lambda', '{ "key": "twtech-value1" }');

5. Security Considerations

  •         IAM permissions must be correctly set: Aurora RDS instance profile needs lambda:InvokeFunction permissions.
  •         Network: Lambda and Aurora should be in the same VPC or Lambda must have access to the Aurora endpoint.
  •         Least privilege principle: limit IAM permissions and Lambda access.
  •         Validate inputs/outputs carefully: to avoid injection attacks or failures.

6. Pros and Cons

Approach

Pros(Benefits)

Cons(Limitations)

Aurora MySQL/PostgreSQL direct.

Fast, synchronous, native invocation.

Only for Aurora, requires specific versions

Database triggers + polling.

Works for all RDS engines.

Higher latency, complexity in polling and retries

DMS + Kinesis + Lambda.

Near real-time, decoupled.

More moving parts, configuration overhead

EventBridge + DB activity streams.

Serverless, scalable.

Aurora Serverless only, limited to supported engines.

Scheduled Lambda polling.

Simple to implement.

Inefficient, higher latency.

7. Sample Use Cases

  •         Data validation or transformation upon insert/update.
  •         Sending notifications or pushing data to external systems on DB events.
  •         Auditing and logging asynchronously.
  •         Complex business logic that is better handled outside the DB.
  •         Data enrichment or calling external APIs on DB changes.

Summary Table

RDS/Aurora Engine

Direct Lambda Invocation

Notes

Aurora MySQL.

Yes, via aws_lambda plugin.

From Aurora MySQL 2.08+

Aurora PostgreSQL.

Yes, via aws_lambda.invoke_lambda function.

From supported versions

RDS MySQL/PostgreSQL.

No.

Use triggers + queues or DMS

Others (SQL Server, Oracle).

No.

Use external event-driven patterns




No comments:

Post a Comment

Amazon EventBridge | Overview.

Amazon EventBridge - Overview. Scope: Intro, Core Concepts, Key Benefits, Link to official documentation, Insights. Intro: Amazon EventBridg...