如何將我的 Lambda 函數設定為使用 Amazon RDS Proxy 連接到 Amazon RDS 資料庫?

2 分的閱讀內容
0

我想將我的 AWS Lambda 函數設定為使用 Amazon RDS Proxy 連接到 Amazon Relational Database Service (Amazon RDS) 資料庫。

簡短描述

您可以為您的 Lambda 函數建立 Amazon RDS Proxy 資料庫。資料庫代理會管理資料庫連接池,並從函數轉送查詢。如此可讓函數達到高並行級別,而又不會耗盡資料庫連接。

如需詳細資訊,請參閱設定 Lambda 函數的資料庫存取

解決方案

請按照以下說明使用 Lambda 函數設定 Amazon RDS Proxy。

**注意:**Amazon RDS Proxy 必須與 Amazon RDS 資料庫位於相同的 Amazon Virtual Private Cloud (Amazon VPC) 中。使用 Amazon VPC 設定 Lambda 函數,以存取 Amazon RDS Proxy。

步驟 1:建立 AWS Secrets Manager 中的資料庫憑證

1.    開啟 Secrets Manager 主控台,然後選擇 Store a new secret (儲存新密碼)。

2.    針對 Secret type (密碼類型),選擇 Credentials for RDS Database (RDS 資料庫的憑證)。

3.    輸入 Amazon RDS 資料庫執行個體的使用者名稱密碼

4.    針對 Encryption key (加密金鑰),選擇 Secrets Manager 用來加密密碼值的 AWS Key Management Service (KMS) 金鑰**。**

5.    針對 Database (資料庫),選擇您的資料庫,然後選擇 Next (下一步)。

6.    針對 Secret name (密碼名稱),輸入名稱,選擇 Next (下一步),再次選擇 Next (下一步),然後選擇 Store (儲存)。

7.    在 Secrets (密碼) 中,選擇您所建立的 Secrets Manager 密碼。

8.    在 Secret ARN (密碼 ARN) 中,複製 ARN,以便在另一個步驟中使用。

如需詳細資訊,請參閱建立 AWS Secrets Manager 資料庫密碼

步驟 2:為 Amazon RDS Proxy 建立 AWS Identity and Access Management (IAM) 政策和角色

建立具有使用密碼許可的 IAM 角色,然後建立允許 Amazon RDS 擔任該角色的信任政策

IAM Secrets Manager 政策範例

注意:Secret_ARN 替換為您之前複製的 Secrets Manager ARN

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetResourcePolicy",
        "secretsmanager:GetSecretValue",
        "secretsmanager:DescribeSecret",
        "secretsmanager:ListSecretVersionIds"
      ],
      "Resource": [
        "[Secret_ARN]"
      ]
    },
    {
      "Sid": "VisualEditor1",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetRandomPassword",
        "secretsmanager:ListSecrets"
      ],
      "Resource": "*"
    }
  ]
}

IAM RDS 信任政策範例

{
 "Version": "2012-10-17",
 "Statement": [
  {
   "Sid": "",
   "Effect": "Allow",
   "Principal": {
    "Service": "rds.amazonaws.com"
   },
   "Action": "sts:AssumeRole"
  }
 ]
}

步驟 3:建立 RDS Proxy,並將其連接至 Lambda 函數

1.    在 Lambda 主控台中開啟函數頁面

2.    在 Functions (函數) 中,選擇您的 Lambda 函數。

3.    選擇 Configuration (組態),然後選擇 Add database proxies (新增資料庫代理)。

4.    輸入以下變數:
代理識別碼:代理的名稱。
RDS 資料庫執行個體支援的 MySQL 或 PostgreSQL 資料庫執行個體或叢集。
密碼:您建立的 Secrets Manager。
IAM 角色:您建立的 IAM 角色。
身分驗證:選擇 Password (密碼) 以連接資料庫憑證,或選擇 Execution role (執行角色) 以使用函數的 IAM 憑證進行身分驗證

5.    選擇 Add (新增)。

完成代理建立需要幾分鐘。當代理可用時,請將您的函數設定為連接到代理端點,而不是資料庫端點。如需詳細資訊,請參閱建立資料庫代理 (主控台)

步驟 4:(選用) 確認您的 Amazon RDS Proxy 正在使用 IAM 身分驗證

僅當您使用 Lambda 執行角色向 Amazon RDS Proxy 進行身分驗證時,才需要執行以下步驟。

1.    開啟 Amazon RDS 主控台

2.    在導覽窗格中,選擇 Proxies (代理),然後選擇您的代理。

3.    選擇 Actions (動作),然後選擇 Modify (修改)。

4.    在 Connectivity (連接) 模組中,確定 IAM Authentication (IAM 身分驗證) 已設定為 Required (必要)。

**注意:**如果您遇到連接問題,請參閱 為什麼我無法使用 RDS Proxy 連線到我的 Amazon RDS 資料庫或 Amazon Aurora 資料庫執行個體? 如需詳細資訊,請參閱搭配使用 Amazon RDS Proxy 和 AWS Lambda


相關資訊

嘗試存取 Amazon RDS 資料庫執行個體時,如何解決來自 Lambda 的連線逾時錯誤?

如何設定 Lambda 函數以連線到 RDS 執行個體?

將 Amazon RDS Proxy 連接到 Lambda 函數時,如何解決 "Lambda could not update the function's execution role (Lambda 無法更新函數的執行角色)" 錯誤?

AWS 官方
AWS 官方已更新 1 年前