我的 AWS Lambda 轮换函数在 AWS Secrets Manager 上失败,出现“必须将数据库引擎设置为 'postgres'/'mysql'”错误。
简短描述
如果您将多用户 AWS Lambda 轮换函数用于用户凭证,则可能会收到此错误。
**注意:**此错误仅适用于 Amazon Relational Database Service (Amazon RDS) 的两种数据库类型,即 Amazon Aurora PostgreSQL 兼容版和 Amazon Aurora MySQL 兼容版。
该错误会出现在 Amazon RDS 数据库凭证的 Lambda 轮换函数的 setSecret 步骤中。
解决方法
如果您对函数代码进行了更改,请编辑 Lambda 轮换函数;如果未进行更改,则创建新的轮换。
选项 1: 编辑轮换函数代码
-
打开 Lambda 控制台。
-
在导航窗格中,选择函数,然后选择 Lambda 函数名称。
-
选择操作下拉列表,选择导出函数,然后选择下载部署包。
-
从下载的 .zip 文件中提取文件。
-
在 Visual Studio Code IDE 中,打开 lambda_function.py 文件。
-
在 get_secret_dict() 辅助函数中,将 if secret_dict['engine'] != 'mysql': 替换为以下代码:
supported_engines = ["mysql", "aurora-mysql"]
if secret_dict['engine'] not in supported_engines:
-
使用更新后的 lambda_function.py 文件压缩 .zip 文件夹的内容。
-
在 Lambda 控制台的代码选项卡上,选择上传自下拉列表,选择 .zip 文件,然后选择步骤 7 中新的 .zip 文件夹。
选项 2: 创建新的轮换函数
- 打开 Secrets Manager 控制台。
- 在密钥页面上,选择您的密钥名称。
- 在密钥详细信息页面的轮换配置部分中,选择编辑轮换。
- 在编辑轮换配置对话框中,按照 步骤 3e. 中的说明为轮换配置密钥。
- 对于使用单独的凭证轮换此密钥,选择是。
- 在密钥中,选择 Amazon RDS 或 Amazon Aurora 主数据库凭证的密钥。
- 选择保存。
- (可选)如果之前的 Lambda 轮换函数被附加到多个密钥,则可以对这些密钥使用新函数。
对于每个密钥,打开密钥详细信息页面,然后在轮换配置部分中,选择编辑轮换。在编辑轮换配置对话框中,对于 Lambda 轮换函数,选择新的轮换函数,然后选择保存。
- 将所有密钥切换到新的 Lambda 轮换函数后,在 Lambda 控制台中删除之前的轮换 Lambda 函数。
相关信息
如何使用 AWS Secrets Manager 密钥为不受支持的数据库创建轮换函数?
使用 AWS Secrets Manager 提高 Amazon RDS 主数据库凭证的安全性