使用 Lambda 和 Secrets Manager 排程亞馬遜 RDS 和 Aurora PostgreSQL 的工作 - AWS Prescriptive Guidance

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Lambda 和 Secrets Manager 排程亞馬遜 RDS 和 Aurora PostgreSQL 的工作

由亞澤拉賈(AWS)創建

R 類型:N/A

來源:資料庫:關聯

目標:AWS 上的 PostgreSQL

建立者:AWS

環境:PoC 或試驗

技術:資料庫

工作負載:開放原始碼

AWS 服務:亞馬遜 RDS; 亞馬遜 AWS Lambda; AWS Secrets Manager 器

Summary

對於託管在 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上託管的內部部署資料庫和資料庫,資料庫管理員通常會使用Cron公用程式來排程工作。

例如,數據提取工作或數據清除工作可以很容易地使用Cron。對於這些工作,資料庫認證通常是硬式編碼或儲存在內容檔中。但是,當您遷移到 Amazon Relational Database Service (Amazon RDS) 或與 Amazon Aurora PostgreQ 相容的版本時,您將失去登入主機執行個體以排程Cron任務。 

此模式說明如何在遷移後使用 AWS Lambda 和 AWS Secrets Manager 排程 Amazon RDS for PostgreSQL 和 Aurora PostgreSQL 相容資料庫的工作。 

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶 

  • Amazon RDS for PostgreSQL 或 Aurora 相容資料庫

限制

Architecture

原始碼技術堆疊

此堆疊的特點是以 Bash、Python 和 Java 等語言編寫的任務。資料庫憑證儲存在屬性檔案中,並使用 Linux 排程工作Cron

目標技術堆疊

這個堆疊具有 Lambda 函式,會使用儲存在 Secrets Manager 中的認證來連線到資料庫,並執行活動。使用亞馬遜 CloudWatch 事件在排定的間隔啟動 Lambda 函數。

目標架構

Tools

  • AWS LambdaAWS Lambda是一項運算服務,可讓您執行程式碼,無需佈建或管理伺服器。AWS Lambda 只有在需要時才會執行程式碼,可自動從每天數項請求擴展成每秒數千項請求。只需為使用的運算時間支付費用,一旦未執行程式碼,就會停止計費。有了 AWS Lambda,您幾乎可以為任何類型的應用程式或後端服務執行程式碼,而且無須管理。AWS Lambda 在高可用性的運算基礎設施上執行您的程式碼,並管理所有運算資源,包括伺服器和作業系統維護,容量佈建與自動擴展、程式碼監控和記錄。您唯一需要做的就是在其中一個語言

  • CloudWatch 活動Amazon CloudWatch Events會交付近乎即時的系統事件串流,描述 AWS 資源中的變更。使用您可以快速設定的簡單規則,您可以比對事件並將它們路由到一或多個目標函數或串流。CloudWatch Events 在操作變更時會查覺到。它會回應這些操作變更並視需要進行修正動作,透過傳送訊息來回應環境、啟用功能、執行變更和擷取狀態資訊。您也可使用 CloudWatch Events 排定自動化動作,讓動作使用CronRATE表達式。

  • Secrets ManagerAWS Secrets Manager可協助您保護存取您的應用程式、服務和 IT 資源的秘密。您能夠在資料庫登入資料、API 金鑰和其他機密的整個生命週期輕鬆進行輪換、管理和擷取。使用者和應用程式藉由呼叫機 Secrets Manager API 擷取機密,這樣就不需要以純文字硬式編碼敏感資訊。Secrets Manager 器為亞馬遜 RDS,Amazon Redshift 和亞馬 Amazon DocumentDB 的內置集成提供了秘密輪替。該服務可擴展到其他類型的秘密,包括 API 密鑰和 OAuth 令牌。Secrets Manager 可讓您使用細微的權限來控制機密的存取,並針對 AWS 雲端、第三方服務和內部部署集中稽核機密輪換。

Epics

任務描述所需技能
建立 Lambda 函數的資料庫使用者。

這是使用單獨的資料庫使用者為您的應用程式的不同部分的最佳實務。如果您的 cron 作業已經存在一個單獨的數據庫用戶,請使用它; 否則,請創建一個新的數據庫用戶。如需有關使用者和權限的詳細資訊,請參閱 < 參考及說明 > 一節中的連結。

DBA
在 Secrets Manager 秘密存放資料庫登入資料

遵循 Secrets Manager 教學課程中的步驟。如需連結,請參閱 < 相關資源 > 一節。

DBA, DevOps
任務描述所需技能
選擇 AWS Lambda 支援的程式設計語言。

如需支援語言清單的連結,請參閱 < 相關資源 > 一節。

開發人員
編寫邏輯從 Secrets Manager 獲取數據庫憑據。

如需範例程式碼,請參閱 < 相關資源 > 一節中的連結。

開發人員
撰寫邏輯以執行排定的資料庫活動。

將您在內部部署使用的排程工作的現有程式碼移轉至 AWS Lambda 函數。

開發人員
任務描述所需技能
建立 Lambda 函數部署套件。

此套件包含程式碼和相依項目。如需詳細資訊,請參閱 < 相關資源 > 一節中的連結。

開發人員
建立 Lambda 函數。

在 AWS Lambda 主控台中,選擇「建立函數」,輸入函數名稱,選擇執行階段環境,然後選擇「建立函數」。

DevOps
上傳部署套件。

選擇您建立的 Lambda 函數以開啟其組態。您可以直接在程式碼區段中撰寫程式碼,或上傳您的部署套件。若要上傳套件,請移至「函數碼」區段,選擇「程式碼輸入類型」以上傳 .zip 檔案,然後選取套件。

DevOps
根據您的需求配置 Lambda 函數。

例如,您可以將「Timeout」參數設定為您期望 Lambda 函數採用的持續時間。如需有關 Lambda 組態的詳細資訊,請參閱 < 相關資源 > 一節中的連結。

DevOps
設定 Lambda 函數角色存取 Secrets Manager 的權限。

如需指示,請參閱 < 相關資源 > 一節中的連結。

DevOps
測試 Lambda 函數。

手動起始函數,以確定函數如預期般運作。

DevOps
任務描述所需技能
建立規則以依排程執行 Lambda 函數。

使用 CloudWatch 事件排程 Lambda 函數。如需指示,請參閱 < 相關資源 > 一節中的連結。

DevOps

史詩和任務的說明

其他資源