本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Lambda 和 Secrets M RDS anager 为亚马逊安排 Postgre SQL 和 Aurora Postgre SQL 的作业
由 Yaser Raja 创作 () AWS
摘要
对于本地数据库和托管在亚马逊弹性计算云 (AmazonEC2) 实例上的数据库,数据库管理员通常使用 cron 实用程序来安排作业。
例如,使用 cron 可轻松地安排数据提取任务或数据清除任务。对于这些任务,数据库凭证通常为硬编码或存储于属性文件。但是,当您迁移到亚马逊关系数据库服务(亚马逊RDS)或亚马逊 Aurora Postgre SQL 兼容版时,您将无法登录主机实例来安排 cron 任务。
此模式描述了迁移后如何使用 AWS Lambda 和 S AWS ecrets Manager RDS 为亚马逊的 Postgre 和 A SQL urora Postgre 兼容数据库SQL安排作业。
先决条件和限制
先决条件
一个活跃的AWS账户
兼容亚马逊 RDS Postgre SQL 或 Aurora Postgre 的数据库 SQL
限制
任务必须在 15 分钟内完成,这是 Lambda 函数的超时限值。有关其他限制,请参阅 AWSLambda 文档。
任务代码必须按 Lambda 支持语言编写。
架构
源技术堆栈
此堆栈包含通过 Bash、Python 和 Java 等语言编写的任务。数据库凭证存储于属性文件,任务使用 Linux cron 调度。
目标技术堆栈
此堆栈包含 Lambda 函数,该函数使用存储在 Secrets Manager 中的凭证连接至数据库并执行活动。Lambda 函数通过使用亚马逊 CloudWatch 事件按计划的时间间隔启动。
目标架构

工具
AWSLambda 是一项计算服务,允许您在不预配置或管理服务器的情况下运行代码。 AWS只有在需要时 Lambda 才运行您的代码,并且能自动扩缩,从每天几个请求扩展到每秒数千个请求。您只需按消耗的计算时间付费;代码未运行时不产生费用。借AWS助 Lambda,您几乎可以为任何类型的应用程序或后端服务运行代码,无需任何管理。 AWSLambda 在高可用性计算基础设施上运行您的代码,并管理所有计算资源,包括服务器和操作系统维护、容量配置和自动扩展、代码监控和日志记录。您只需使用 AWSLambda 支持的语言之一提供您的代码即可。
Amazon CloudWatch Events 提供近乎实时的系统事件流,这些事件描述了AWS资源的变化。使用可以快速设置的简单规则,您可以匹配事件并将它们路由到一个或多个目标函数或流。 CloudWatch 事件在发生时就会意识到操作变化。其可响应这些操作更改并在必要时采取纠正措施,方式是发送消息以响应环境、激活函数、进行更改并捕获状态信息。您还可以使用 Ev CloudWatch ents 来安排自动操作,这些操作在特定时间使用 cron 或速率表达式自行启动。
AWSS@@ ecrets Manager 可帮助您保护用于访问应用程序、服务和 IT 资源的机密。在数据库凭证、密钥和其他API密钥的整个生命周期中,您可以轻松地轮换、管理和检索它们。用户和应用程序通过调用 Secrets Manager 来检索机密APIs,无需以纯文本格式对敏感信息进行硬编码。Secrets Manager 提供密钥轮换,内置了亚马逊RDS、亚马逊 Redshift 和亚马逊 DocumentDB 的集成。该服务可扩展到其他类型的机密,包括密API钥和OAuth令牌。Secrets Manager 使您能够使用细粒度的权限控制对密钥的访问权限,并集中审核AWS云端、第三方服务和本地资源的密钥轮换。
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
为 Lambda 函数 创建数据库用户。 | 最好将不同的数据库用户用于不同的应用程序部分。如果您的 cron 任务已有单独的数据库用户,请使用该用户。否则,创建一个新数据库用户。有关更多信息,请参阅管理 Postgre SQL 用户和角色 | DBA |
将数据库凭证作为密钥存储至 Secrets Manager。 | 按照创建数据库密钥(Secrets Manager 文档)中的说明。 | DBA, DevOps |
任务 | 描述 | 所需技能 |
---|---|---|
选择 AWS Lambda 支持的编程语言。 | 有关支持的语言列表,请参阅 Lambda 运行时系统(Lambd 文档)。 | 开发人员 |
编写从 Secrets Manager 获取数据库凭证的逻辑。 | 有关示例代码,请参阅如何使用 S AWS ecrets Manager 安全地向 Lambda 函数提供数据库凭证 | 开发人员 |
编写执行计划数据库活动的逻辑。 | 将您在本地使用的调度任务的现有代码迁移到 AWS Lambda 函数。有关更多信息,请参阅部署 Lambda 函数(Lambda 文档)。 | 开发人员 |
任务 | 描述 | 所需技能 |
---|---|---|
创建 Lambda 函数部署包。 | 此数据包包含代码及其依赖项。有关更多信息,请参阅部署包(Lambda 文档)。 | 开发人员 |
创建 Lambda 函数。 | 在 AWS Lambda 控制台中,选择创建函数,输入函数名称,选择运行时环境,然后选择创建函数。 | DevOps |
构建部署程序包。 | 选择您创建的 Lambda 函数,以打开其配置。您可以直接在代码部分编写代码或上传部署包。若要上传数据包,请前往函数代码部分,选择要上传 .zip 文件的代码条目类型,然后选择该数据包。 | DevOps |
根据您的要求配置 Lambda 函数。 | 例如,您可以将超时参数设置为您的 Lambda 函数预计花费的时间。有关更多信息,请参阅配置函数选项(Lambda 文档)。 | DevOps |
为 Lambda 函数角色设置 Secrets Manager 访问权限。 | 有关说明,请参阅在 AWS Lambda 函数中使用密钥(Secrets Manager 文档)。 | DevOps |
测试 Lambda 函数 | 手动启动此函数,以确保其按预期运行。 | DevOps |
任务 | 描述 | 所需技能 |
---|---|---|
创建按计划运行 Lambda 函数的规则。 | 使用 CloudWatch 事件安排 Lambda 函数。有关说明,请参阅使用 CloudWatch 事件安排 Lambda 函数(CloudWatch 事件教程)。 | DevOps |