為什麼我的 Secrets Manager Lambda 輪換函數失敗,並出現「Database engine must be set to 'postgres'/'mysql'」錯誤?

1 分的閱讀內容
0

AWS Secrets Manager 的 AWS Lambda 輪換函數失敗,並出現「Database engine must be set to '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 個月前