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

3 分的閱讀內容
0

我希望將 AWS Lambda 函數設定為使用 Amazon Relational Database Service (Amazon RDS) Proxy,以連線到 Amazon RDS 資料庫。

解決方法

先決條件: Amazon RDS Proxy 服器必須與 Amazon RDS 資料庫位於相同的 Amazon Virtual Private Cloud (Amazon VPC) VPC 中。

若要將 Lambda 函數設定為使用 Amazon RDS Proxy 連線至 Amazon RDS 資料庫,請完成下列步驟。

在 Secrets Manager 中建立資料庫憑證

請完成下列步驟:

  1. 開啟 AWS Secrets Manager console (AWS Secrets Manager 主控台)。
  2. 選擇 Store a new secret (儲存新密碼)。
  3. 對於 Secret type (密碼類型),選取 Credentials for RDS database (RDS 資料庫的憑證)。
  4. 輸入您的 RDS 資料庫執行個體 username (使用者名稱) 和password (密碼)。
  5. 對於 Encryption key (加密金鑰),選擇 Secrets Manager 用來加密密碼值的 AWS Key Management Service (KMS) 金鑰。
  6. 對於 Database (資料庫) 中,選擇您的資料庫,然後選擇 Next (下一步)。
  7. 對於 Secret name (密碼名稱),輸入名稱,然後選擇Next (下一步)。
  8. 選擇 Next (下一步),然後選擇 Store (儲存)。
  9. Secrets (密碼) 中,選取 Secrets Manager 密碼。
  10. Secret ARN (密碼 ARN) 中,備註密碼 ARN。

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

為 Amazon RDS Proxy 建立 IAM 政策和角色

建立具有使用密碼許可的 AWS Identity and Access Management (IAM) 角色。範例:

{
  "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": "*"
    }
  ]
}

注意:Secret_ARN 替換為您的密碼 ARN。

然後建立信任政策,該政策允許 Amazon RDS 擔任該角色。範例:

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

創建 Proxy 並附加到 Lambda 函數

首先,建立 RDS Proxy。然後,完成下列步驟,將函數設定為連線到 Proxy 端點而不是資料庫端點:

  1. 開啟 Lambda console (Lambda 主控台)。
  2. 選擇 Functions (函數),然後選取您的 Lambda 函數。
  3. 選擇 Configuration (組態),然後選擇 RDS databases (RDS 資料庫)。
  4. 選擇 Connect to RDS database (連線至 RDS 資料庫)。
  5. 選取您的 RDS 資料庫。或者,選取 Create a new database (建立新資料庫),然後設定下列設定:
    對於 Engine type (引擎類型),選取引擎類型。
    對於 DB instance identifier (資料庫執行個體識別碼),輸入資料庫執行個體的名稱。
    對於 Master username (主使用者名稱),輸入主要使用者登入 ID。
    對於 VPC,請使用預設設定。依預設,Lambda 會在與函數相同的 VPC 中設定 RDS 資料庫。
  6. 選擇資料庫連線,然後選擇 Add proxy (新增代理)。
  7. 對於 Existing proxies (現有 Proxy),選取您的 RDS Proxy。
  8. 選擇 Add (新增)。

Proxy 連線需要幾分鐘才能完成。如需如何設定 RDS 資料庫執行個體以搭配 Lambda 使用的詳細資訊,請參閱設定函數以使用 RDS 資源

(選用) 驗證您的 Amazon RDS Proxy 是否使用 IAM 驗證

如果您使用 Lambda 執行角色對 Amazon RDS Proxy 進行驗證,請完成下列步驟:

  1. 開啟 Amazon RDS console (Amazon RDS 主控台)。
  2. 在導覽窗格中,選擇 Proxies,然後選取您的 Proxy。
  3. 選擇 Actions (動作),然後選擇 Modify (修改)。
  4. Authentication (驗證) 下,確認 IAM Authentication (IAM 驗證) 設定為 Required (必要)。

如果遇到連線問題,請參閱為什麼我無法使用 Amazon 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 官方已更新 6 個月前