选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

使用 Lambda 和 Secrets M RDS anager 为亚马逊安排 Postgre SQL 和 Aurora Postgre SQL 的作业 - AWS Prescriptive Guidance

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

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

使用 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 事件按计划的时间间隔启动。

目标架构

CloudWatch 事件启动用于为数据库实例安排任务的 Lamb RDS da 函数。

工具

  • 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 用户和角色(AWS博客文章)。

DBA

将数据库凭证作为密钥存储至 Secrets Manager。

按照创建数据库密钥(Secrets Manager 文档)中的说明。

DBA, DevOps

将数据库凭证存储至 Secrets Manager

任务描述所需技能

为 Lambda 函数 创建数据库用户。

最好将不同的数据库用户用于不同的应用程序部分。如果您的 cron 任务已有单独的数据库用户,请使用该用户。否则,创建一个新数据库用户。有关更多信息,请参阅管理 Postgre SQL 用户和角色(AWS博客文章)。

DBA

将数据库凭证作为密钥存储至 Secrets Manager。

按照创建数据库密钥(Secrets Manager 文档)中的说明。

DBA, DevOps
任务描述所需技能

选择 AWS Lambda 支持的编程语言。

有关支持的语言列表,请参阅 Lambda 运行时系统(Lambd 文档)。

开发人员

编写从 Secrets Manager 获取数据库凭证的逻辑。

有关示例代码,请参阅如何使用 S AWS ecrets Manager 安全地向 Lambda 函数提供数据库凭证(AWS博客文章)。

开发人员

编写执行计划数据库活动的逻辑。

将您在本地使用的调度任务的现有代码迁移到 AWS Lambda 函数。有关更多信息,请参阅部署 Lambda 函数(Lambda 文档)。

开发人员

编写 Lambda 函数的代码。

任务描述所需技能

选择 AWS Lambda 支持的编程语言。

有关支持的语言列表,请参阅 Lambda 运行时系统(Lambd 文档)。

开发人员

编写从 Secrets Manager 获取数据库凭证的逻辑。

有关示例代码,请参阅如何使用 S AWS ecrets Manager 安全地向 Lambda 函数提供数据库凭证(AWS博客文章)。

开发人员

编写执行计划数据库活动的逻辑。

将您在本地使用的调度任务的现有代码迁移到 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 函数

任务描述所需技能

创建 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

使用事件安排 Lambda 函数 CloudWatch

任务描述所需技能

创建按计划运行 Lambda 函数的规则。

使用 CloudWatch 事件安排 Lambda 函数。有关说明,请参阅使用 CloudWatch 事件安排 Lambda 函数(CloudWatch 事件教程)。

DevOps

相关资源

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。