自動連線 Lambda 函數和Aurora 資料庫叢集 - Amazon Aurora

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

自動連線 Lambda 函數和Aurora 資料庫叢集

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

下圖顯示您的資料庫叢集和 Lambda 函數之間的直接連線。

自動連線 Aurora 資料庫叢集與 Lambda 函數

您可以透過 RDS Proxy 設定 Lambda 函數與資料庫叢集之間的連線,以提高資料庫效能和彈性。Lambda 函數通常會頻繁進行短資料庫連線,而這些連線會受益於 RDS Proxy 提供的連線集區。您可以利用 Lambda 函數已擁有的任何 AWS Identity and Access Management (IAM) 身分驗證,而不是管理 Lambda 應用程式程式碼中的資料庫登入資料。如需詳細資訊,請參閱Amazon RDS Proxy for Aurora

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

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

透過 RDS Proxy 自動將 Aurora 資料庫叢集與 Lambda 函數連線
提示

若要將 Lambda 函數快速連線至 Aurora 資料庫叢集,您也可以使用主控台內引導精靈。若要開啟精靈,請執行下列動作:

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

  2. 選取您要連接資料庫的 函數。

  3. 組態索引標籤上,選取RDS資料庫

  4. 選擇連線至RDS資料庫

將函數連線至資料庫後,您可以選擇新增代理來建立代理

使用 Lambda 函數自動連線概觀

以下是將 Lambda 函數與 Aurora 資料庫叢集連線的要求:

  • Lambda 函數必須存在於與資料庫叢集VPC相同的 中。

  • 目前,資料庫叢集不能是 Aurora Serverless 資料庫叢集或 Aurora 全域資料庫的一部分。

  • 設定連線的使用者必須具有執行下列 Amazon RDS、Amazon EC2、Lambda、Secrets Manager 和 IAM 操作的許可:

    • Amazon RDS

      • rds:CreateDBProxies

      • rds:DescribeDBClusters

      • rds:DescribeDBProxies

      • rds:ModifyDBCluster

      • 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 函數與 Aurora 資料庫叢集之間的連線時,Amazon 會為您的函數和資料庫叢集RDS設定VPC安全群組。如果您使用 RDS Proxy,Amazon RDS也會設定代理VPC的安全群組。Amazon 會根據與資料庫叢集、Lambda 函數和 Proxy 相關聯的安全群組的目前組態來RDS運作,如下表所述。

目前的RDS安全群組組態 目前 Lambda 安全群組組態 目前代理安全群組組態 RDS 動作

有一或多個與資料庫叢集相關聯的安全群組,其名稱符合模式,rds-lambda-n或者如果代理已連接至資料庫資料庫叢集, 會RDS檢查相關聯的代理TargetHealth的 是否為 AVAILABLE

符合模式的安全群組尚未修改。此安全群組只有一個傳入規則,其中 Lambda 函數或代理VPC的安全群組做為來源。

有一或多個與 Lambda 函數相關聯的安全群組,其名稱符合模式 lambda-rds-nlambda-rdsproxy-n (其中 n 是數字)。

符合模式的安全群組尚未修改。此安全群組只有一個傳出規則,其中資料庫叢集VPC的安全群組或代理做為目的地。

有一或多個與代理相關聯的安全群組,其名稱符合模式 rdsproxy-lambda-n (其中 n 是數字)。

符合模式的安全群組尚未修改。此安全群組具有傳入和傳出規則,其中包含 Lambda 函數和資料庫叢集VPC的安全群組。

Amazon 不RDS採取任何動作。

Lambda 函數、代理 (選用) 和資料庫叢集之間已自動設定連線。由於函數、代理與資料庫之間已存在連線,因此不會修改安全群組。

以下任一種條件均適用:

  • 沒有與資料庫叢集相關聯的安全群組,其名稱符合模式 rds-lambda-n,或者如果相關聯代理的 TargetHealthAVAILABLE

  • 有一或多個與資料庫叢集相關聯的安全群組,其名稱符合模式 rds-lambda-n,或者如果相關聯代理的 TargetHealthAVAILABLE。不過,這些安全群組都不能用於與 Lambda 函數的連線。

Amazon RDS無法使用沒有一個傳入規則的安全群組,搭配 Lambda 函數或代理VPC的安全群組做為來源。Amazon RDS也無法使用已修改的安全群組。修改範例包括新增規則或變更現有規則的連線埠。

以下任一種條件均適用:

  • 沒有與 Lambda 函數相關聯的安全群組,其名稱符合模式 lambda-rds-nlambda-rdsproxy-n

  • 有一或多個與 Lambda 函數相關聯的安全群組,其名稱符合模式 lambda-rds-nlambda-rdsproxy-n。不過,Amazon RDS無法使用任何這些安全群組來與資料庫叢集連線。

Amazon RDS無法使用沒有一個傳出規則的安全群組,並將資料庫叢集或代理VPC的安全群組做為目的地。Amazon RDS也無法使用已修改的安全群組。

以下任一種條件均適用:

  • 沒有與代理相關聯的安全群組,其名稱符合模式 rdsproxy-lambda-n

  • 有一或多個與代理相關聯的安全群組,其名稱符合 rdsproxy-lambda-n。不過,Amazon RDS無法將這些安全群組用於與資料庫叢集或 Lambda 函數的連線。

Amazon RDS 無法使用沒有傳入和傳出規則的安全群組,搭配資料庫叢集的 VPC 安全群組和 Lambda 函數。Amazon RDS 也無法使用已修改的安全群組。
RDS action: create new security groups

有一或多個與資料庫叢集相關聯的安全群組,其名稱符合模式 rds-lambda-n,或者如果相關聯代理的 TargetHealthAVAILABLE

符合模式的安全群組尚未修改。此安全群組只有一個傳入規則,其中 Lambda 函數或代理VPC的安全群組做為來源。

有一或多個與 Lambda 函數相關聯的安全群組,其名稱符合模式 lambda-rds-nlambda-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-lambda-n,或者如果相關聯代理的 TargetHealthAVAILABLE

符合模式的安全群組尚未修改。此安全群組只有一個傳入規則,其中 Lambda 函數或代理VPC的安全群組做為來源。

存在用於連線的有效 Lambda 安全群組,但與 Lambda 函數沒有相關聯。此安全群組具有符合模式 lambda-rds-nlambda-rdsproxy-n 的名稱。尚未將其修改。它只有一個傳出規則,且資料庫叢集或代理VPC的安全群組為目的地。

存在用於連線的有效代理安全群組,但與代理沒有相關聯。此安全群組具有符合模式 rdsproxy-lambda-n 的名稱。尚未將其修改。它具有傳入和傳出規則,具有資料庫叢集和 Lambda 函數VPC的安全群組。

RDS action: associate Lambda security group

以下任一種條件均適用:

  • 沒有與資料庫叢集相關聯的安全群組,其名稱符合模式 rds-lambda-n,或者如果相關聯代理的 TargetHealthAVAILABLE

  • 有一或多個與資料庫叢集相關聯的安全群組,其名稱符合模式 rds-lambda-n,或者如果相關聯代理的 TargetHealthAVAILABLE。不過,Amazon RDS無法將這些安全群組用於與 Lambda 函數或代理的連線。

Amazon RDS無法使用沒有一個傳入規則的安全群組,搭配 Lambda 函數或代理VPC的安全群組做為來源。Amazon RDS也無法使用已修改的安全群組。

有一或多個與 Lambda 函數相關聯的安全群組,其名稱符合模式 lambda-rds-nlambda-rdsproxy-n

符合模式的安全群組尚未修改。此安全群組只有一個傳出規則,且資料庫執行個體或代理VPC的安全群組為目的地。

有一或多個與代理相關聯的安全群組,其名稱符合模式 rdsproxy-lambda-n

符合模式的安全群組尚未修改。此安全群組具有傳入和傳出規則,其中包含資料庫叢集和 Lambda 函數VPC的安全群組。

RDS action: create new security groups

以下任一種條件均適用:

  • 沒有與資料庫叢集相關聯的安全群組,其名稱符合模式 rds-lambda-n,或者如果相關聯代理的 TargetHealthAVAILABLE

  • 有一或多個與資料庫叢集相關聯的安全群組,其名稱符合模式 rds-lambda-n,或者如果相關聯代理的 TargetHealthAVAILABLE。不過,Amazon RDS無法將這些安全群組用於與 Lambda 函數或代理的連線。

Amazon RDS無法使用沒有一個傳入規則的安全群組,搭配 Lambda 函數或代理VPC的安全群組做為來源。Amazon RDS也無法使用已修改的安全群組。

以下任一種條件均適用:

  • 沒有與 Lambda 函數相關聯的安全群組,其名稱符合模式 lambda-rds-nlambda-rdsproxy-n

  • 有一或多個與 Lambda 函數相關聯的安全群組,其名稱符合模式 lambda-rds-nlambda-rdsproxy-n。不過,Amazon RDS無法將這些安全群組用於與資料庫叢集的連線。

Amazon RDS無法使用沒有一個傳出規則的安全群組,搭配資料庫叢集或代理VPC的安全群組做為來源。Amazon RDS也無法使用已修改的安全群組。

以下任一種條件均適用:

  • 沒有與代理相關聯的安全群組,其名稱符合模式 rdsproxy-lambda-n

  • 有一或多個與代理相關聯的安全群組,其名稱符合 rdsproxy-lambda-n。不過,Amazon RDS無法將這些安全群組用於與資料庫叢集或 Lambda 函數的連線。

Amazon RDS 無法使用沒有傳入和傳出規則的安全群組,搭配資料庫叢集的 VPC 安全群組和 Lambda 函數。Amazon RDS 也無法使用已修改的安全群組。
RDS action: create new security groups
RDS 動作:建立新的安全群組

Amazon RDS會採取下列動作:

  • 建立新的符合模式 rds-lambda-n或 的安全群組 rds-rdsproxy-n(如果您選擇使用 RDS Proxy)。此安全群組具有傳入規則,並以 Lambda 函數或代理VPC的安全群組做為來源。與資料庫叢集關聯的此一安全群組可讓函數或代理存取資料庫叢集

  • 建立符合模式 lambda-rds-nlambda-rdsproxy-n 的新安全群組。此安全群組有一個傳出規則,其資料庫叢集或代理VPC的安全群組為目的地。此安全群組與 Lambda 函數相關聯,並允許函數將流量傳送至資料庫叢集或通過代理傳送流量。

  • 建立符合模式 rdsproxy-lambda-n 的新安全群組。此安全群組具有傳入和傳出規則,其中包含資料庫叢集和 Lambda 函數VPC的安全群組。

RDS 動作:關聯 Lambda 安全群組

Amazon 會將有效的現有 Lambda 安全群組與 Lambda 函數建立RDS關聯。此安全群組允許函數將流量傳送至資料庫叢集或通過代理傳送流量。

自動連接 Lambda 函數和 Aurora 資料庫叢集

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

您也可以使用 RDS Proxy 在連線中包含代理。Lambda 函數經常進行短期資料庫連線,這些連線可從 RDS Proxy 提供的連線集區中受益。您也可以使用您已為 Lambda 函數設定的任何IAM身分驗證,而不是管理 Lambda 應用程式程式碼中的資料庫登入資料。

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

在設定 Lambda 函數和資料庫叢集之間的連線之前,請確定:

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

注意

您只能在 中自動設定資料庫叢集與 Lambda 函數之間的連線 AWS Management Console。若要連線一個 Lambda 函數,資料庫叢集中的所有執行個體必須處於可用狀態。

若要自動連線 Lambda 函數和資料庫叢集
  1. 登入 AWS Management Console 並在 開啟 Amazon RDS主控台https://console.aws.amazon.com/rds/

  2. 在導覽窗格中,選擇資料庫,然後選擇您要將其連線至 Lambda 函數的資料庫叢集

  3. 針對動作,選擇設定 Lambda 連線

  4. 設定 Lambda 連線頁面中的選取 Lambda 函數,執行下列任一操作:

    • 如果您在與資料庫叢集相同的 中具有現有的 Lambda VPC 函數,請選擇選擇現有函數,然後選擇該函數。

    • 如果您在相同的 中沒有 Lambda 函數VPC,請選擇建立新函數,然後輸入函數名稱。預設執行期會設定為 Nodejs.18。完成連線設定後,您可以在 Lambda 主控台中修改新 Lambda 函數的設定。

  5. (選用) 在 RDS Proxy 下,選取使用 RDS Proxy 連線,然後執行下列任一動作:

    • 若您要使用現有的代理,請選擇選擇現有的代理,然後選擇代理。

    • 如果您沒有代理,而且您希望 Amazon RDS 自動為您建立代理,請選擇建立新代理。然後,為資料庫憑證,執行下列任一操作:

      1. 選擇資料庫使用者名稱和密碼,然後為您的資料庫叢集輸入使用者名稱密碼

      2. 選擇 Secrets Manager 密碼。然後,針對選取秘密,選擇 AWS Secrets Manager 秘密。如果您沒有 Secrets Manager 密碼,請選擇建立新的 Secrets Manager 密碼,以建立新的密碼。建立密碼之後,針對選取密碼,選擇新的密碼。

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

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

  7. 選擇 Set up (設定)

檢視已連線的運算資源

您可以使用 AWS Management Console 檢視連線至資料庫叢集的 Lambda 函數。顯示的資源包括 Amazon 自動RDS設定的運算資源連線。

列出的運算資源不含手動連線至資料庫叢集。例如,您可以將規則新增至與資料庫相關聯的VPC安全群組,以允許運算資源手動存取資料庫資料庫叢集

若要讓主控台列出 Lambda 函數,必須符合下列條件:

  • 與運算資源相關聯的安全群組,其名稱符合模式 lambda-rds-nlambda-rdsproxy-n (其中 n 是數字)。

  • 與運算資源相關聯的安全群組具有傳出規則,其連線埠範圍設為資料庫叢集或關聯代理所使用的連線埠。傳出規則的目的地必須設定為與資料庫叢集或關聯代理相關聯的安全群組。

  • 如果組態包含代理,則附加到資料庫相關聯代理的安全群組,名稱符合模式 rdsproxy-lambda-n (其中 n 是數字)。

  • 與函數相關聯的安全群組具有傳出規則,其連線埠設定為資料庫叢集或相關的代理所使用的連線埠。目的地必須設定為與資料庫叢集或關聯代理相關聯的安全群組。

若要檢視自動連線至資料庫叢集的運算資源
  1. 登入 AWS Management Console 並在 開啟 Amazon RDS主控台https://console.aws.amazon.com/rds/

  2. 在導覽窗格中,選擇資料庫,然後選擇資料庫叢集

  3. 連線與安全性索引標籤中,檢視已連線的運算資源中的運算資源。