将 Amazon Lambda 与 Amazon RDS 结合使用 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 Amazon Lambda 与 Amazon RDS 结合使用

您可以将 Lambda 函数直接连接到 Amazon Relational Database Service(Amazon RDS),也可以通过 Amazon RDS 代理连接。直接连接适用于简单的场景,而在生产中则推荐使用代理。数据库代理管理共享数据库连接池,从而让函数能够在不耗尽数据库连接的情况下达到高并发级别。

对于频繁建立短数据库连接或打开和关闭大量数据库连接的 Lambda 函数,我们建议使用 Amazon RDS 代理。

配置函数

在 Lambda 控制台中,您可以配置甚至创建某些数据库实例和代理资源。请参阅配置选项卡下的 RDS 数据库。或者,您也可以在 Amazon RDS 控制台中创建和配置到 Lambda 函数的连接。

  • 要连接到数据库,您的函数必须位于数据库在其中运行的 Amazon VPC。

  • 您可以将 Amazon RDS 数据库与 MySQL、MariaDB、PostgreSQL 或 Microsoft SQL Server 引擎一起使用。

  • 您也可以将 Aurora 数据库集群与 MySQL 或 PostgreSQL 引擎一起使用。

  • 您需要提供用于数据库身份验证的 Secrets Manager 密钥。

  • IAM 角色必须提供使用密钥的权限和必须允许 Amazon RDS 代入角色的信任策略。

Amazon RDS 根据数据库实例大小按小时收取代理费率,详情请参阅 RDS 代理定价。有关通用代理连接的更多信息,请参阅《Amazon RDS 用户指南》中的使用 Amazon RDS 代理

Lambda 和 Amazon RDS 设置

Lambda 和 Amazon RDS 控制台都将协助您自动配置一些必要资源,以便在 Lambda 和 Amazon RDS 之间建立连接。

处理 Amazon RDS 中的事件通知

您可以使用 Lambda 处理 Amazon RDS 数据库中的事件通知。Amazon RDS 将通知发送到 Amazon Simple Notification Service (Amazon SNS) 主题,您可以将其配置为调用 Lambda 函数。Amazon SNS 将来自 Amazon RDS 的消息封装在其自己的事件文档中,并将其发送到您的函数。

有关配置 Amazon RDS 数据库以发送通知的详细信息,请参阅使用 Amazon RDS 事件通知

例 Amazon SNS 事件中的 Amazon RDS 消息
{ "Records": [ { "EventVersion": "1.0", "EventSubscriptionArn": "arn:aws:sns:us-east-2:123456789012:rds-lambda:21be56ed-a058-49f5-8c98-aedd2564c486", "EventSource": "aws:sns", "Sns": { "SignatureVersion": "1", "Timestamp": "2023-01-02T12:45:07.000Z", "Signature": "tcc6faL2yUC6dgZdmrwh1Y4cGa/ebXEkAi6RibDsvpi+tE/1+82j...65r==", "SigningCertUrl": "https://sns.us-east-2.amazonaws.com/SimpleNotificationService-ac565b8b1a6c5d002d285f9598aa1d9b.pem", "MessageId": "95df01b4-ee98-5cb9-9903-4c221d41eb5e", "Message": "{\"Event Source\":\"db-instance\",\"Event Time\":\"2023-01-02 12:45:06.000\",\"Identifier Link\":\"https://console.aws.amazon.com/rds/home?region=eu-west-1#dbinstance:id=dbinstanceid\",\"Source ID\":\"dbinstanceid\",\"Event ID\":\"http://docs.amazonwebservices.com/AmazonRDS/latest/UserGuide/USER_Events.html#RDS-EVENT-0002\",\"Event Message\":\"Finished DB Instance backup\"}", "MessageAttributes": {}, "Type": "Notification", "UnsubscribeUrl": "https://sns.us-east-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-2:123456789012:test-lambda:21be56ed-a058-49f5-8c98-aedd2564c486", "TopicArn":"arn:aws:sns:us-east-2:123456789012:sns-lambda", "Subject": "RDS Notification Message" } } ] }

Lambda 和 Amazon RDS 教程

  • 使用 Lambda 函数访问 Amazon RDS 数据库 – 在《Amazon RDS 用户指南》中,了解如何使用 Lambda 函数通过 Amazon RDS 代理将数据写入 Amazon RDS 数据库。Lambda 函数将从 Amazon SQS 队列中读取记录,每当添加消息时,都将新的项目写入数据库的表中。