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: 編輯輪換函數程式碼
-
開啟 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 主要資料庫憑證的安全性