自动连接 Lambda 函数和多可用区数据库集群
您可以使用 RDS 控制台来简化在 Lambda 函数和多可用区数据库集群之间设置连接的过程。您可以使用 RDS 控制台来简化在 Lambda 函数和多可用区数据库集群之间设置连接的过程。通常,多可用区数据库集群位于 VPC 内的私有子网中。应用程序可以使用 Lambda 函数访问您的私有多可用区数据库集群。
下图显示了您的多可用区数据库集群与 Lambda 函数之间的直接连接。
您可以通过 RDS 代理在 Lambda 函数和数据库之间设置连接,以提高数据库性能和弹性。通常,Lambda 函数会进行频繁的短期数据库连接,此类连接受益于 RDS 代理提供的连接池。您可以利用已为 Lambda 函数提供的任何 IAM 身份验证,而不是在 Lambda 应用程序代码中管理数据库凭证。有关更多信息,请参阅将 Amazon RDS 代理。
您可以使用控制台为您的连接自动创建代理。您也可以选择现有代理。控制台更新代理安全组,以允许来自您的数据库和 Lambda 函数的连接。您可以输入数据库凭证或选择访问数据库所需的 Secrets Manager 密钥。
与 Lambda 函数的自动连接概述
当您自动在 Lambda 函数和多可用区数据库集群之间设置连接时,Amazon RDS 会为您的 Lambda 函数和数据库集群配置 VPC 安全组。
以下是将 Lambda 函数与多可用区数据库集群连接的要求:
-
Lambda 函数必须与多可用区数据库集群存在于同一 VPC 中。
如果同一 VPC 中不存在任何 Lambda 函数,控制台将提供创建一个此类函数的链接。
-
设置连接的用户必须具有执行以下 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
-
-
Amazon KMS
-
kms:describeKey
-
-
当您在 Lambda 函数和多可用区数据库集群之间设置连接时,Amazon RDS 会为您的函数和多可用区数据库集群配置 VPC 安全组。如果您使用 RDS 代理,则 Amazon RDS 还会为代理配置 VPC 安全组。Amazon RDS 根据与多可用区数据库集群、Lambda 函数和代理关联的安全组的当前配置执行操作,如下表所述。
当前 RDS 安全组配置 | 当前 Lambda 安全组配置 | 当前代理安全组配置 | RDS 操作 |
---|---|---|---|
Amazon RDS 不采取任何措施,因为所有资源的安全组都遵循正确的命名模式并具有正确的入站和出站规则。 |
有一个或多个安全组与多可用区数据库集群 [其名称与模式 尚未修改与此模式匹配的安全组。该安全组只具有一条以 Lambda 函数或代理的 VPC 安全组作为源的入站规则。 |
有一个或多个安全组与 Lambda 函数关联,此函数的名称与模式 尚未修改与此模式匹配的安全组。此安全组只有一条出站规则,此规则以多可用区数据库集群或代理的 VPC 安全组作为目标。 |
有一个或多个安全组与代理关联,此代理的名称与模式 尚未修改与此模式匹配的安全组。此安全组具有入站和出站规则,这些规则具有 Lambda 函数和多可用区数据库集群的 VPC 安全组。 |
以下任一条件适用:
如果安全组没有一条以 Lambda 函数或代理的 VPC 安全组作为源的入站规则,则 Amazon RDS 无法使用该安全组。Amazon RDS 也无法使用经过修改的安全组。修改示例包括添加规则或更改现有规则的端口。 |
以下任一条件适用:
如果安全组没有一条以多可用区数据库集群或代理的 VPC 安全组作为源的出站规则,则 Amazon RDS 无法使用该安全组。Amazon RDS 也无法使用经过修改的安全组。 |
以下任一条件适用:
|
RDS action: create new security groups |
有一个或多个与多可用区数据库集群(名称与模式 尚未修改与此模式匹配的安全组。该安全组只具有一条以 Lambda 函数或代理的 VPC 安全组作为源的入站规则。 |
有一个或多个安全组与 Lambda 函数关联,此函数的名称与模式 但是,Amazon RDS 不能使用这些安全组中的任何一个来连接多可用区数据库集群。如果安全组没有一条以多可用区数据库集群或代理的 VPC 安全组作为目标的出站规则,则 Amazon RDS 无法使用该安全组。Amazon RDS 也无法使用经过修改的安全组。 |
有一个或多个安全组与代理关联,此代理的名称与模式 但是,Amazon RDS 不能使用这些安全组中的任何一个来连接多可用区数据库集群或 Lambda 函数。如果安全组没有入站和出站规则(这些规则具有多可用区数据库集群和 Lambda 函数的 VPC 安全组),则 Amazon RDS 无法使用该安全组。Amazon RDS 也无法使用经过修改的安全组。 |
RDS action: create new security groups |
有一个或多个与多可用区数据库集群(名称与模式 尚未修改与此模式匹配的安全组。该安全组只具有一条以 Lambda 函数或代理的 VPC 安全组作为源的入站规则。 |
存在用于连接的有效 Lambda 安全组,但它与 Lambda 函数不关联。此安全组的名称与模式 |
存在用于连接的有效代理安全组,但它与代理不关联。此安全组的名称与模式 |
RDS action: associate Lambda security group |
以下任一条件适用:
|
有一个或多个安全组与 Lambda 函数关联,此函数的名称与模式 尚未修改与此模式匹配的安全组。此安全组只有一条出站规则,此规则以多可用区数据库集群或代理的 VPC 安全组作为目标。 |
有一个或多个安全组与代理关联,此代理的名称与模式 尚未修改与此模式匹配的安全组。此安全组具有入站和出站规则,这些规则具有多可用区数据库集群和 Lambda 函数的 VPC 安全组。 |
RDS action: create new security groups |
有一个或多个安全组与多可用区数据库集群 [其名称与模式 |
以下任一条件适用:
如果安全组没有一条以多可用区数据库集群或代理的 VPC 安全组作为目标的出站规则,则 Amazon RDS 无法使用该安全组。Amazon RDS 也无法使用经过修改的安全组。 |
以下任一条件适用:
|
RDS action: create new security groups |
RDS 操作:创建新的安全组
Amazon RDS 执行以下操作:
-
创建与模式
rds-lambda-
匹配的新安全组。该安全组具有一条以 Lambda 函数或代理的 VPC 安全组作为源的入站规则。该安全组与多可用区数据库集群关联,并允许函数或代理访问多可用区数据库集群。n
-
创建与模式
lambda-rds-
匹配的新安全组。此安全组具有一条出站规则,此规则以多可用区数据库集群或代理的 VPC 安全组作为目标。此安全组与 Lambda 函数相关联,并允许 Lambda 函数将流量发送到多可用区数据库集群或者通过代理发送流量。n
-
创建与模式
rdsproxy-lambda-
匹配的新安全组。此安全组具有入站和出站规则,这些规则具有多可用区数据库集群和 Lambda 函数的 VPC 安全组。n
RDS 操作:关联 Lambda 安全组
Amazon RDS 将有效的现有的 Lambda 安全组与 Lambda 函数关联。此安全组允许该函数向多可用区数据库集群发送流量或通过代理发送流量。
自动连接 Lambda 函数和多可用区数据库集群
您可以使用 Amazon RDS 控制台将 Lambda 函数自动连接到您的多可用区数据库集群。这简化了在这些资源之间设置连接的过程。
您也可以使用 RDS 代理在连接中包含代理。Lambda 函数会进行频繁的短期数据库连接,此类连接受益于 RDS 代理提供的连接池。您还可以使用已经为 Lambda 函数设置的任何 IAM 身份验证,而不是在 Lambda 应用程序代码中管理数据库凭证。
您可以使用设置 Lambda 连接页面将现有的多可用区数据库集群连接到新的和现有 Lambda 函数。设置过程会自动为您设置所需的安全组。
在 Lambda 函数和多可用区数据库集群之间设置连接之前,请确保:
-
您的 Lambda 函数和多可用区数据库集群位于同一 VPC 中。
-
您拥有用户账户的相应权限。有关要求的更多信息,请参阅与 Lambda 函数的自动连接概述。
如果您在配置连接后更改安全组,则这些更改可能会影响 Lambda 函数与多可用区数据库集群之间的连接。
注意
您只能在 Amazon Web Services Management Console中自动设置多可用区数据库集群和 Lambda 函数之间的连接。要连接 Lambda 函数,多可用区数据库集群中的所有实例都必须处于可用状态。
自动连接 Lambda 函数和多可用区数据库集群
登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在导航窗格中,选择数据库,然后选择要连接到 Lambda 函数的多可用区数据库集群。
-
对于操作,选择设置 Lambda 连接。
-
在设置 Lambda 连接页面上,在选择 Lambda 函数下方,执行以下任一操作:
-
如果您在与多可用区数据库集群相同的 VPC 中有一个现有的 Lambda 函数,请选择选择现有函数,然后选择该函数。
-
如果您在同一 VPC 中没有 Lambda 函数,请选择创建新函数,然后输入函数名称。原定设置运行时系统设置为 Nodejs.18。完成连接设置后,您可以在 Lambda 控制台中修改新 Lambda 函数的设置。
-
-
(可选)在 RDS 代理下,选择使用 RDS 代理进行连接,然后执行以下任一操作:
-
如果您有要使用的现有代理,请选择选择现有代理,然后选择此代理。
-
如果您没有代理,并且希望 Amazon RDS 自动为您创建代理,请选择创建新代理。然后,对于数据库凭证,执行以下任一操作:
-
选择数据库用户名和密码,然后输入多可用区数据库集群的用户名和密码。
-
选择 Secrets Manager 密钥。然后,对于选择密钥,选择一个 Amazon Secrets Manager 密钥。如果您没有 Secrets Manager 密钥,请选择创建新的 Secrets Manager 密钥以创建新密钥。创建密钥后,对于选择密钥,选择新密钥。
创建新代理后,选择选择现有代理,然后选择该代理。请注意,您的代理可能需要一些时间才能用于连接。
-
-
-
(可选)扩展连接摘要并验证您的资源的突出显示更新。
-
选择 Set up (设置)。
查看连接的计算资源
您可以使用 Amazon Web Services Management Console查看连接到多可用区数据库集群的计算资源。显示的资源包括 Amazon RDS 自动设置的计算资源连接。
列出的计算资源不包括那些手动连接到多可用区数据库集群的计算资源。例如,您可以通过向与多可用区数据库集群关联的 VPC 安全组添加规则,来允许计算资源手动访问该集群。
要使控制台列出 Lambda 函数,必须满足以下条件:
-
与计算资源关联的安全组的名称与模式
lambda-rds-
或n
lambda-rdsproxy-
(其中n
是数字)相匹配。n
-
与计算资源关联的安全组具有出站规则,其端口范围设置为多可用区数据库集群或关联代理的端口。出站规则的目标必须设置为与多可用区数据库集群或关联代理关联的安全组。
-
连接到与您数据库关联的代理的安全组名称与模式
rds-rdsproxy-
(其中n
是一个数字)相匹配。n
-
与该函数关联的安全组有一条出站规则,其端口设置为多可用区数据库集群或关联代理使用的端口。目标必须设置为与多可用区数据库集群或关联代理关联的安全组。
查看自动连接到多可用区数据库集群的计算资源
登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在导航窗格中,选择数据库,然后选择多可用区数据库集群。
-
在连接和安全选项卡上,在连接的计算资源下查看计算资源。