

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

# 自動連線 Lambda 函數和資料庫執行個體
<a name="lambda-rds-connect"></a>

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

如需詳細了解多可用區域資料庫叢集與 Lambda 函數之間的連線設定，請參閱 [自動連線 Lambda 函數和多可用區域資料庫叢集](multiaz-lambda-rds-connect.md)。

下圖顯示您的資料庫執行個體和 Lambda 函數之間的直接連線。

![\[自動連線資料庫執行個體 與 Lambda 函數\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/auto-connect-rds-lambda.png)


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

當您使用主控台與現有代理連線時，Amazon RDS 會更新代理安全群組，以允許來自資料庫執行個體和 Lambda 函數的連線。

您也可以從相同的主控台頁面建立新的代理。在主控台中建立代理時，若要存取資料庫執行個體，您必須輸入資料庫憑證或選取 AWS Secrets Manager 秘密。

![\[透過 RDS Proxy 自動連線資料庫執行個體 與 Lambda 函數\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/auto-connect-rds-lambda-Proxy.png)


**提示**  
若要快速將 Lambda 函數連線至資料庫執行個體，您也可以使用主控台內引導精靈。若要開啟精靈，請執行下列操作：  
開啟 Lambda 主控台中的[函數頁面](https://console.aws.amazon.com/lambda/home#/functions)。
選取您要連接資料庫的函數。
在**組態**索引標籤，選取 **RDS 資料庫**。
選擇**連接至 RDS 資料庫**。
將函數連接至資料庫之後，您可以選擇**新增代理**來建立代理。

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

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

以下是連線 Lambda 函數與 RDS 資料庫執行個體 的要求：
+ 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
    + `secretsmanager:CreateSecret`
    + `secretsmanager:DescribeSecret`
  + IAM
    + `iam:AttachPolicy`
    + `iam:CreateRole`
    + `iam:CreatePolicy`
  + AWS KMS
    + `kms:describeKey`

**注意**  
如果資料庫執行個體和 Lambda 函數位於不同的可用區域，您的帳戶可能會產生跨可用區域成本。

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


| 目前 RDS 安全群組組態 | 目前 Lambda 安全群組組態 | 目前代理安全群組組態 | RDS 動作 | 
| --- | --- | --- | --- | 
|  有一或多個與資料庫執行個體相關聯的安全群組，其名稱符合模式 `rds-lambda-n`，或者如果代理已連線至您的資料庫執行個體，RDS 將檢查相關聯代理的 `TargetHealth` 是否為 `AVAILABLE`。 符合模式的安全群組尚未修改。此安全群組只有一個傳入規則，其具有 Lambda 函數或代理的 VPC 安全群組做為來源。  |  有一或多個與 Lambda 函數相關聯的安全群組，其名稱符合模式 `lambda-rds-n` 或 `lambda-rdsproxy-n` (其中 `n` 是數字)。 符合模式的安全群組尚未修改。此安全群組只有一個傳出規則，其使用資料庫執行個體的 VPC 安全群組或代理做為目的地。  |  有一或多個與代理相關聯的安全群組，其名稱符合模式 `rdsproxy-lambda-n` (其中 `n` 是數字)。 符合模式的安全群組尚未修改。此安全群組具有傳入和傳出規則，其中包含 Lambda 函數和資料庫執行個體的 VPC 安全群組。  |  Amazon RDS 不會採取任何動作。 Lambda 函數、代理 (選用) 和資料庫執行個體之間已自動設定連線。由於函數、代理與資料庫之間已存在連線，因此不會修改安全群組。  | 
|  以下任一種條件均適用： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/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/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/lambda-rds-connect.html)Amazon RDS 無法使用沒有傳入和傳出規則 (包含資料庫執行個體和 Lambda 函數的 VPC 安全群組) 的安全群組。Amazon RDS 也無法使用經過修改的安全群組。 |  [RDS action: create new security groups](#rds-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 無法使用沒有傳入和傳出規則 (包含資料庫執行個體和 Lambda 函數的 VPC 安全群組) 的安全群組。Amazon RDS 也無法使用經過修改的安全群組。  |  [RDS action: create new security groups](#rds-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` 的名稱。尚未將其修改。具有包含資料庫執行個體的 VPC 安全群組的傳入和傳出規則，和 Lambda 函數。  |  [RDS action: associate Lambda security group](#rds-lam-action-associate-lam-security-group)  | 
|  以下任一種條件均適用： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/lambda-rds-connect.html) Amazon RDS 無法使用沒有一個傳入規則 (使用 Lambda 函數的 VPC 安全群組或代理做為來源) 的安全群組。Amazon RDS 也無法使用經過修改的安全群組。  |  有一或多個與 Lambda 函數相關聯的安全群組，其名稱符合模式 `lambda-rds-n` 或 `lambda-rdsproxy-n`。 符合模式的安全群組尚未修改。此安全群組只有一個輸出規則，其中的 VPC 安全群組資料庫執行個體或代理做為目的地。  |  有一或多個與代理相關聯的安全群組，其名稱符合模式 `rdsproxy-lambda-n`。 符合模式的安全群組尚未修改。此安全群組具有傳入和傳出規則，其中包含資料庫執行個體和 Lambda 函數的 VPC 安全群組。  |  [RDS action: create new security groups](#rds-lam-action-create-new-security-groups) | 
|  以下任一種條件均適用： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/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/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/lambda-rds-connect.html)Amazon RDS 無法使用沒有傳入和傳出規則 (包含資料庫執行個體和 Lambda 函數的 VPC 安全群組) 的安全群組。Amazon RDS 也無法使用經過修改的安全群組。 | [RDS action: create new security groups](#rds-lam-action-create-new-security-groups) | 

**RDS 動作：建立新的安全群組**  
Amazon RDS 會採取下列動作：
+ 建立符合模式的新安全群組 `rds-lambda-n` 或者 `rds-rdsproxy-n` (如果您選擇使用 RDS Proxy)。此安全群組具有一個傳入規則，其具有 Lambda 函數或代理的 VPC 安全群組做為來源。與資料庫執行個體關聯的此一安全群組可讓函數或代理存取資料庫執行個體。
+ 建立符合模式 `lambda-rds-n` 或 `lambda-rdsproxy-n` 的新安全群組。此安全群組有一個輸出規則，其中的 VPC 安全群組資料庫執行個體或代理做為目的地。此安全群組與 Lambda 函數相關聯，並允許函數將流量傳送至資料庫執行個體或通過代理傳送流量。
+ 建立符合模式 `rdsproxy-lambda-n` 的新安全群組。此安全群組具有傳入和傳出規則，其中包含資料庫執行個體和 Lambda 函數的 VPC 安全群組的傳入和傳出規則。

**RDS 動作：與 Lambda 相關聯的安全群組**  
Amazon RDS 將有效、現有的 Lambda 安全群組與 Lambda 函數建立關聯。此安全群組允許函數將流量傳送至資料庫執行個體或通過代理傳送流量。

## 自動連線 Lambda 函數和 RDS 資料庫
<a name="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-overview)。

如果您在設定連線之後變更安全群組，這些變更可能會影響 Lambda 函數與資料庫執行個體之間的連線。

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

**若要自動連線 Lambda 函數和資料庫執行個體**

1. 登入 AWS 管理主控台 ，並在 [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="lambda-rds-connect-viewing"></a>

您可以使用 AWS 管理主控台 檢視連線至資料庫執行個體的 Lambda 函數。顯示的資源包括 Amazon RDS 自動設定的運算資源連線。

列出的運算資源不含手動連線至資料庫執行個體。例如，您可以透過將規則新增至與資料庫關聯的 VPC 安全群組，來允許運算資源手動存取您的資料庫執行個體。

若要讓主控台列出 Lambda 函數，必須符合下列條件：
+ 與運算資源相關聯的安全群組，其名稱符合模式 `lambda-rds-n` 或 `lambda-rdsproxy-n` (其中 `n` 是數字)。
+ 與運算資源相關聯的安全群組具有傳出規則，其連線埠範圍設為資料庫執行個體或關聯代理所使用的連線埠。傳出規則的目的地必須設定為與資料庫執行個體或關聯代理相關聯的安全群組。
+ 如果組態包含代理，則附加到資料庫相關聯代理的安全群組，名稱符合模式 `rdsproxy-lambda-n` (其中 `n` 是數字)。
+ 與函數相關聯的安全群組具有傳出規則，其連線埠設定為資料庫執行個體或相關的代理所使用的連線埠。目的地必須設定為與資料庫執行個體或關聯代理相關聯的安全群組。

**若要檢視自動連線至資料庫執行個體的運算資源**

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

1. 在導覽窗格中，選擇**資料庫**，然後選擇資料庫執行個體。

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