

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

# 自動連線 Lambda 函數和多可用區域資料庫叢集
<a name="multiaz-lambda-rds-connect"></a>

您可以使用 RDS 主控台，簡化 Lambda 函數與多可用區域資料庫叢集之間的連線設定。您可以使用 RDS 主控台，簡化 Lambda 函數與多可用區域資料庫叢集之間的連線設定。通常，您的多可用區域資料庫叢集位於 VPC 內的私有子網路中。應用程式可使用 Lambda 函數來存取您的私有多可用區資料庫叢集。

下圖顯示多可用區域資料庫叢集與 Lambda 函數之間的直接連線。

![\[自動連線 Lambda 函數和多可用區域資料庫叢集。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/auto-connect-maz-lambda.png)


您可以透過 RDS Proxy 設定 Lambda 函數與資料庫之間的連線來改善資料庫效能和復原能力。通常，Lambda 函數經常進行短暫的資料庫連線，這些連線將受益於 RDS Proxy 提供的連線集區。您可以利用 Lambda 函數中已有的任何 IAM 身分驗證，而不是在 Lambda 應用程式的程式碼中管理資料庫憑證。如需詳細資訊，請參閱[Amazon RDS Proxy ](rds-proxy.md)。

您可以使用主控台自動為您的連線建立代理。您也可以選取現有的代理。主控台會更新代理安全群組，以允許來自資料庫和 Lambda 函數的連線。您可以輸入資料庫憑證，或選取存取資料庫所需的 Secret Manager 密碼。

![\[透過 RDS Proxy 自動將多可用區域資料庫叢集與 Lambda 函數連線。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/auto-connect-maz-lambda-Proxy.png)


**Topics**
+ [使用 Lambda 函數自動連線概觀](#multiaz-lambda-rds-connect-overview)
+ [自動連線 Lambda 函數和多可用區域資料庫叢集](#multiaz-lambda-rds-connect-connecting)
+ [檢視已連線的運算資源](#multiaz-lambda-rds-connect-viewing)

## 使用 Lambda 函數自動連線概觀
<a name="multiaz-lambda-rds-connect-overview"></a>

當您在 Lambda 函數與多可用區域資料庫叢集之間自動設定連線時，Amazon RDS 會為您的 Lambda 函數以及資料庫叢集設定 VPC 安全群組。

以下是將 Lambda 函數與多可用區域資料庫叢集連線的要求：
+ Lambda 函數必須與多可用區域資料庫叢集存在於相同的 VPC 中。

  如果沒有 Lambda 函數存在於相同的 VPC 中，主控台會提供一個連結來建立該執行個體。
+ 設定連線的使用者必須擁有執行下列 Amazon RDS、Amazon EC2、Lambda、Secrets Manager 和 IAM 操作的許可：
  + Amazon RDS
    + `rds:CreateDBProxies`
    + `rds:DescribeDBInstances`
    + `rds:DescribeDBProxies`
    + `rds:ModifyDBInstance`
    + `rds:ModifyDBProxy`
    + `rds:RegisterProxyTargets`
  + Amazon EC2
    + `ec2:AuthorizeSecurityGroupEgress` 
    + `ec2:AuthorizeSecurityGroupIngress` 
    + `ec2:CreateSecurityGroup` 
    + `ec2:DeleteSecurityGroup`
    + `ec2:DescribeSecurityGroups` 
    + `ec2:RevokeSecurityGroupEgress` 
    + `ec2:RevokeSecurityGroupIngress`
  + Lambda
    + `lambda:CreateFunctions`
    + `lambda:ListFunctions`
    + `lambda:UpdateFunctionConfiguration`
  + Secrets Manager
    + `sercetsmanager:CreateSecret`
    + `secretsmanager:DescribeSecret`
  + IAM
    + `iam:AttachPolicy`
    + `iam:CreateRole`
    + `iam:CreatePolicy`
  + AWS KMS
    + `kms:describeKey`

當您在 Lambda 函數與多可用區域資料庫叢集之間設定連線時，Amazon RDS 會為您的函數以及多可用區域資料庫叢集設定 VPC 安全群組。如果您使用 RDS Proxy，則 Amazon RDS 也會為代理設定 VPC 安全群組。Amazon RDS 會根據與安全群組相關聯的目前組態執行動作資料庫執行個體多可用區域資料庫叢集、Lambda 函數和代理，如下表所述。


| 目前 RDS 安全群組組態 | 目前 Lambda 安全群組組態 | 目前代理安全群組組態 | RDS 動作 | 
| --- | --- | --- | --- | 
|  Amazon RDS 不會採取任何動作，因為所有資源的安全群組都遵循正確的命名模式，並且擁有正確的傳入和傳出規則。  |  有一或多個與多可用區域資料庫叢集相關聯的安全群組，其名稱符合模式 `rds-lambda-n` (其中 `n` 是數字)，或者 `TargetHealth` 關聯的代理是 `AVAILABLE`。 符合模式的安全群組尚未修改。此安全群組只有一個傳入規則，其具有 Lambda 函數或代理的 VPC 安全群組做為來源。  |  有一或多個與 Lambda 函數相關聯的安全群組，其名稱符合模式 `lambda-rds-n` 或 `lambda-rdsproxy-n` (其中 `n` 是數字)。 符合模式的安全群組尚未修改。此安全群組只包含一個傳出規則，其使用多可用區域資料庫叢集或代理的 VPC 安全群組做為目的地。  |  有一或多個與代理相關聯的安全群組，其名稱符合模式 `rdsproxy-lambda-n` (其中 `n` 是數字)。 符合模式的安全群組尚未修改。此安全群組包含傳入和傳出規則，其具有 Lambda 函數和多可用區域資料庫叢集的 VPC 安全群組。  | 
|  以下任一種條件均適用： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/multiaz-lambda-rds-connect.html) Amazon RDS 無法使用沒有傳入規則的安全群組，並將 Lambda 函數或代理 VPC 安全群組做為來源。Amazon RDS 也無法使用經過修改的安全群組。修改範例包括新增規則或變更現有規則的連線埠。  |  以下任一種條件均適用： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/multiaz-lambda-rds-connect.html) Amazon RDS 無法使用沒有傳出規則的安全群組，其具有多可用區域資料庫叢集的 VPC 安全群組做為來源。Amazon RDS 也無法使用經過修改的安全群組。  | 以下任一種條件均適用：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/multiaz-lambda-rds-connect.html)Amazon RDS 無法使用沒有傳入和傳出規則的安全群組，並與多可用區域資料庫叢集的 VPC 安全群組和 Lambda 函數搭配使用。Amazon RDS 也無法使用經過修改的安全群組。 | [RDS action: create new security groups](#maz-lam-action-create-new-security-groups)  | 
|  有一或多個與多可用區域資料庫叢集相關聯的安全群組，其名稱符合模式 `rds-lambda-n`，或者 `TargetHealth` 相關聯的代理是 `AVAILABLE`。 符合模式的安全群組尚未修改。此安全群組只有一個傳入規則，其具有 Lambda 函數或代理的 VPC 安全群組做為來源。  |  有一或多個與 Lambda 函數相關聯的安全群組，其名稱符合模式 `lambda-rds-n` 或 `lambda-rdsproxy-n`。 不過，Amazon RDS 無法使用這些安全群組中的任一個與多可用區域資料庫叢集連線。Amazon RDS 無法使用沒有傳出規則的安全群組，其具有多可用區域資料庫叢集或代理的 VPC 安全群組做為目的地。Amazon RDS 也無法使用經過修改的安全群組。  |  有一或多個與代理相關聯的安全群組，其名稱符合模式 `rdsproxy-lambda-n`。 不過，Amazon RDS 無法使用這些安全群組中的任一個與多可用區域資料庫叢集或 Lambda 函數連線。Amazon RDS 無法使用沒有傳入和傳出規則的安全群組，並與多可用區域資料庫叢集的 VPC 安全群組和 Lambda 函數搭配使用。Amazon RDS 也無法使用經過修改的安全群組。  | [RDS action: create new security groups](#maz-lam-action-create-new-security-groups)  | 
|  有一或多個與多可用區域資料庫叢集相關聯的安全群組，其名稱符合模式 `rds-lambda-n`，或者 `TargetHealth` 相關聯的代理是 `AVAILABLE`。 符合模式的安全群組尚未修改。此安全群組只有一個傳入規則，其具有 Lambda 函數或代理的 VPC 安全群組做為來源。  |  存在用於連線的有效 Lambda 安全群組，但與 Lambda 函數沒有相關聯。此安全群組具有符合模式 `lambda-rds-n` 或 `lambda-rdsproxy-n` 的名稱。尚未將其修改。其只包含一個傳出規則，具有多可用區域資料庫叢集或代理的 VPC 安全群組做為目的地。  |  存在用於連線的有效代理安全群組，但與代理沒有相關聯。此安全群組具有符合模式 `rdsproxy-lambda-n` 的名稱。尚未將其修改。包含傳入和傳出規則，其具有多可用區域資料庫叢集和 Lambda 函數的 VPC 安全群組。  |  [RDS action: associate Lambda security group](#maz-lam-action-associate-lam-security-group)  | 
|  以下任一種條件均適用： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/multiaz-lambda-rds-connect.html)  |  有一或多個與 Lambda 函數相關聯的安全群組，其名稱符合模式 `lambda-rds-n` 或 `lambda-rdsproxy-n`。 符合模式的安全群組尚未修改。此安全群組只包含一個傳出規則，其具有多可用區域資料庫叢集的 VPC 安全群組做為目的地。  |  有一或多個與代理相關聯的安全群組，其名稱符合模式 `rdsproxy-lambda-n`。 符合模式的安全群組尚未修改。此安全群組包含傳入和傳出規則，其具有多可用區域資料庫叢集和 Lambda 函數的 VPC 安全群組。  |  [RDS action: create new security groups](#maz-lam-action-create-new-security-groups)  | 
|  有一或多個與多可用區域資料庫叢集相關聯的安全群組，其名稱符合模式 `rds-rdsproxy-n`(其中 `n` 是數字)。  |  以下任一種條件均適用： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/multiaz-lambda-rds-connect.html) Amazon RDS 無法使用沒有傳出規則的安全群組，其具有多可用區域資料庫叢集或代理的 VPC 安全群組做為目的地。Amazon RDS 也無法使用經過修改的安全群組。  | 以下任一種條件均適用：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/multiaz-lambda-rds-connect.html)Amazon RDS 無法使用沒有傳入和傳出規則的安全群組，並與多可用區域資料庫叢集的 VPC 安全群組和 Lambda 函數搭配使用。Amazon RDS 也無法使用經過修改的安全群組。 |  [RDS action: create new security groups](#maz-lam-action-create-new-security-groups)  | 

**RDS 動作：建立新的安全群組**  
Amazon RDS 會採取下列動作：
+ 建立符合模式 `rds-lambda-n` 的新安全群組。此安全群組具有以 Lambda 函數或代理的 VPC 安全群組做為來源的傳入規則。與多可用區域資料庫叢集關聯的此一安全群組可讓函數或代理存取多可用區域資料庫叢集。
+ 建立符合模式 `lambda-rds-n` 的新安全群組。此安全群組包含一個傳出規則，其具有多可用區域資料庫叢集或代理的 VPC 安全群組做為來源。此安全群組與 Lambda 函數相關聯，可讓 Lambda 函數將流量傳送到多可用區域資料庫叢集或透過代理傳送流量。
+ 建立符合模式 `rdsproxy-lambda-n` 的新安全群組。此安全群組包含傳入和傳出規則，其具有多可用區域資料庫叢集和 Lambda 函數的 VPC 安全群組。

**RDS 動作：與 Lambda 相關聯的安全群組**  
Amazon RDS 將有效、現有的 Lambda 安全群組與 Lambda 函數建立關聯。此安全群組允許函數將流量傳送到多可用區域資料庫叢集或透過 Proxy 傳送流量。

## 自動連線 Lambda 函數和多可用區域資料庫叢集
<a name="multiaz-lambda-rds-connect-connecting"></a>

您可以使用 Amazon RDS 主控台將 Lambda 函數自動連線至多可用區域資料庫叢集。簡化資源之間建立連線的過程。

您也可以使用 RDS Proxy 將代理包含在連線中。Lambda 函數經常進行短暫的資料庫連線，這些連線將受益於 RDS Proxy 提供的連線集區。您還可以使用 Lambda 函數中已有的任何 IAM 身分驗證，而不是在 Lambda 應用程式的程式碼中管理資料庫憑證。

您可以使用**設定 Lambda 連線**頁面，將現有的多可用區域資料庫叢集連線至新的和現有的 Lambda 函數。設定程序會自動為您設定所需的安全群組。

在設定 Lambda 函數和多可用區域資料庫叢集之間的連線之前，請確保：
+ 您的 Lambda 函數和多可用區域資料庫叢集位於相同的 VPC 中。
+ 您擁有正確的使用者帳戶權限。有關需求的詳細資訊，請參閱 [使用 Lambda 函數自動連線概觀](lambda-rds-connect.md#lambda-rds-connect-overview)。

如果您在設定連線之後變更安全群組，這些變更可能會影響 Lambda 函數與多可用區域資料庫叢集之間的連線。

**注意**  
您只能在 中自動設定多可用區域資料庫叢集與 Lambda 函數之間的連線 AWS 管理主控台。若要連線 Lambda 函數，多可用區域資料庫叢集中的所有執行個體都必須處於**可用**狀態。

**自動連線 Lambda 函數和多可用區域資料庫叢集**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中選擇**資料庫**，然後選擇您要連線至 Lambda 函數的多可用區域資料庫叢集。

1. 針對**動作**，選擇**設定 Lambda 連線**。

1. 在**設定 Lambda 連線**頁面中的**選取 Lambda 函數**，執行下列任一操作：
   + 如果您在與多可用區域資料庫叢集相同的 VPC 中擁有現有的 Lambda 函數，請選擇**選擇現有函數**，然後選擇函數。
   + 如果您在同一個 VPC 中沒有 Lambda 函數，請選擇**建立新函數**，然後輸入**函數名稱**。預設執行期會設定為 Nodejs.18。完成連線設定後，您可以在 Lambda 主控台中修改新 Lambda 函數的設定。

1. (選用) 在 **RDS Proxy** 中，選取**使用 RDS Proxy 連線**，然後執行下列任一項操作：
   + 若您要使用現有的代理，請選擇**選擇現有的代理**，然後選擇代理。
   + 如果您沒有代理，並且您希望 Amazon RDS 自動為您建立代理，請選擇**建立新的代理**。然後，為**資料庫憑證**，執行下列任一操作：

     1. 選擇**資料庫使用者名稱和密碼**，然後為您的多可用區資料庫叢集輸入**使用者名稱**和**密碼**。

     1. 選擇 **Secrets Manager 密碼**。然後，針對**選取秘密**，選擇 AWS Secrets Manager 秘密。如果您沒有 Secrets Manager 密碼，請選擇**建立新的 Secrets Manager 密碼**，以[建立新的密碼](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)。建立密碼之後，針對**選取密碼**，選擇新的密碼。

     建立新的代理之後，請選擇**選擇現有的代理**，然後選擇代理。請注意，您的代理可能需要一些時間才能用於連線。

1. (選用) 展開**連線摘要**並為您的資源驗證反白顯示的更新。

1. 選擇 **Set up (設定)**。

確認設定後，Amazon RDS 會開始連線至 Lambda 函數、RDS Proxy (如果您使用代理) 和多可用區域資料庫叢集的程序。主控台會顯示**連線詳細資訊**對話方塊，此對話方塊會列出允許資源之間連線的安全群組變更。

## 檢視已連線的運算資源
<a name="multiaz-lambda-rds-connect-viewing"></a>

您可以使用 AWS 管理主控台 檢視連線至多可用區域資料庫叢集的運算資源。顯示的資源包括 Amazon RDS 自動設定的運算資源連線。

列出的運算資源不包含手動連線至多可用區域資料庫叢集的運算資源。例如，您可以透過將規則新增至與叢集關聯的 VPC 安全群組，來允許運算資源手動存取您的多可用區域資料庫。

若要讓主控台列出 Lambda 函數，必須符合下列條件：
+ 與運算資源相關聯的安全群組，其名稱符合模式 `lambda-rds-n` 或 `lambda-rdsproxy-n` (其中 `n` 是數字)。
+ 與運算資源相關聯的安全群組具有傳出規則，其連接埠範圍設為多可用區域資料庫叢集或關聯代理所使用的連接埠。傳出規則目的地必須設定為與多可用區域資料庫叢集或關聯代理相關聯的安全群組。
+ 與資料庫資料庫叢集附加的代理安全群組，其名稱符合模式 `rds-rdsproxy-n` (其中 `n` 是數字)。
+ 與函數相關聯的安全群組具有傳出規則，其中連接埠設定為多可用區域資料庫叢集或相關 Proxy 所使用的連接埠。目的地必須設定為與多可用區域資料庫叢集或關聯代理相關聯的安全群組。

**檢視自動連線至多可用區域資料庫叢集的運算資源**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇**資料庫**，然後選擇多可用區域資料庫叢集。

1. 在**連線與安全性**索引標籤中，檢視**已連線的運算資源**中的運算資源。