为什么我的 Secrets Manager Lambda 轮换函数失败并出现“必须将数据库引擎设置为 'postgres'/'mysql'”错误?

1 分钟阅读
0

我的 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: 编辑轮换函数代码

  1. 打开 Lambda 控制台

  2. 在导航窗格中,选择函数,然后选择 Lambda 函数名称。

  3. 选择操作下拉列表,选择导出函数,然后选择下载部署包

  4. 从下载的 .zip 文件中提取文件。

  5. 在 Visual Studio Code IDE 中,打开 lambda_function.py 文件。

  6. get_secret_dict() 辅助函数中,将 if secret_dict['engine'] != 'mysql': 替换为以下代码:

    supported_engines = ["mysql", "aurora-mysql"]
    if secret_dict['engine'] not in supported_engines:
  7. 使用更新后的 lambda_function.py 文件压缩 .zip 文件夹的内容。

  8. 在 Lambda 控制台的代码选项卡上,选择上传自下拉列表,选择 .zip 文件,然后选择步骤 7 中新的 .zip 文件夹。

选项 2: 创建新的轮换函数

  1. 打开 Secrets Manager 控制台
  2. 密钥页面上,选择您的密钥名称。
  3. 密钥详细信息页面的轮换配置部分中,选择编辑轮换
  4. 编辑轮换配置对话框中,按照 步骤 3e. 中的说明为轮换配置密钥
  5. 对于使用单独的凭证轮换此密钥,选择
  6. 密钥中,选择 Amazon RDS 或 Amazon Aurora 主数据库凭证的密钥。
  7. 选择保存
  8. (可选)如果之前的 Lambda 轮换函数被附加到多个密钥,则可以对这些密钥使用新函数。
    对于每个密钥,打开密钥详细信息页面,然后在轮换配置部分中,选择编辑轮换。在编辑轮换配置对话框中,对于 Lambda 轮换函数,选择新的轮换函数,然后选择保存
  9. 将所有密钥切换到新的 Lambda 轮换函数后,在 Lambda 控制台中删除之前的轮换 Lambda 函数。

相关信息

如何使用 AWS Secrets Manager 密钥为不受支持的数据库创建轮换函数?

使用 AWS Secrets Manager 提高 Amazon RDS 主数据库凭证的安全性

AWS 官方
AWS 官方已更新 10 个月前