Invoke Lambda Function from AWS Aurora MySQL

Cách hoạt động và use case:

1 use case đơn giản có thể gặp:

Cơ sở dữ liệu Aurora MySQL với bảng user. Có một trigger MySQL được liên kết với bảng user. Trigger này sẽ được kích hoạt khi hành động DELETE được thực thi trên table. Bên trong trigger, chúng ta dùng lambda_sync để gọi Lambda function. Sau đó, Lambda function sẽ gửi thông báo SNS.

Các bước cần làm:

  • Tạo VPC

  • Tạo Lambda VPC endpoint cho VPC: Vì Lambda luôn chạy trong VPC của Lambda nên chúng ta buộc phải thông qua endpoint hoặc NAT thì mới có thể connect được từ trong RDS khi gọi async (Note: Dù đưa Lambda vào cùng VPC, cũng không connect được!).

  • Tạo sg cho Lambda function và RDS. Lưu ý outbound của RDS phải mở cổng 443, và nếu Lambda đưa vào trong VPC (có sg) thì phải mở inbound cho

  • Tạo AWS Lambda function

  • Tạo chủ đề SNS

  • Tạo IAM role cho cụm Aurora MySQL DB

  • Liên kết IAM role với cụm Aurora MySQL DB (required)

  • Tạo cụm cơ sở dữ liệu Aurora MySQL

  • Thiết lập phiên bản EC2 để kết nối với cơ sở dữ liệu

  • Tạo cơ sở dữ liệu, bảng và trình trigger

  • Kiểm tra: Test thử:

SELECT lambda_async(
    'arn:aws:lambda:us-east-1:123456789012:function:BasicTestLambda',
    '{"operation": "ping"}');

Docs hướng dẫn:

https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.Lambda.html#AuroraMySQL.Integrating.NativeLambda.lambda_functions.trigger