修改 RDS 代理
您可以在创建代理后更改与代理关联的特定设置。可通过修改代理本身和/或其关联的目标组来执行此操作。每个代理都有一个关联的目标组。
重要
Client authentication type(客户端身份验证类型)和 IAM authentication(IAM 身份验证)字段中的值适用于与此代理关联的所有 Secrets Manager 密钥。要为每个密钥指定不同的值,请使用 AWS CLI 或改用 API 来修改代理。
修改代理的设置
-
登录 AWS Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在导航窗格中,选择 Proxies (代理)。
-
在代理列表中,选择要修改其设置的代理或转到其详细信息页面。
-
对于 Actions (操作),选择 Modify (修改)。
-
输入或选择要修改的属性。您可以指定如下内容:
-
代理标识符 – 通过输入新标识符来重命名代理。
-
空闲客户端连接超时 - 输入空闲客户端连接超时的时间段。
-
IAM 角色 – 更改用于从 Secrets Manager 中检索密钥的 IAM 角色。
-
Secrets Manager 密钥 - 添加或删除 SSecrets Manager 密钥。这些密钥对应于数据库用户名和密码。
-
Client authentication type(客户端身份验证类型)-(仅限 PostgreSQL)更改客户端与代理的连接的身份验证类型。
-
IAM authentication(IAM 身份验证)– 要求或禁止对与代理的连接进行 IAM 身份验证。
-
需要传输层安全性 - 打开或关闭传输层安全性 (TLS) 的要求。
-
VPC 安全组 - 添加或删除供代理使用的 VPC 安全组。
-
启用增强型日志记录 - 启用或禁用增强型日志记录。
-
-
选择修改。
如果您找不到要更改的列出设置,请使用以下过程更新代理的目标组。与代理关联的目标组控制与物理数据库连接相关的设置。每个代理都有一个名为 default
的关联目标组,该目标组与代理一起自动创建。
您只能从代理详细信息页面修改目标组,而不能从 Proxies (代理) 页面上的列表中进行修改。
修改代理目标组的设置
-
在 Proxies (代理) 页面上,转到代理的详细信息页面。
-
对于 Target groups (目标组),选择
default
链接。目前,所有代理都有一个名为default
的目标组。 -
在默认目标组的详细信息页面上,选择 Modify (修改)。
-
为您可以修改的属性选择新设置:
-
数据库 – 选择不同的 RDS 数据库实例或集群。
-
连接池最大连接数 – 调整代理可使用的最大可用连接的百分比。
-
会话固定筛选条件 -(可选)选择会话固定筛选条件。这绕过了跨客户端多路复用数据库连接的默认安全措施。目前,PostgreSQL 不支持该设置。唯一的选择是
EXCLUDE_VARIABLE_SETS
。启用此设置可能会导致一个连接的会话变量影响其它连接。如果您的查询依赖于在当前事务之外设置的会话变量值,则可能会导致错误或正确性问题。在确认您的应用程序可以安全地跨客户端连接共享数据库连接之后,请考虑使用此选项。
可以认为以下模式是安全的:
-
SET
语句,其中有效会话变量值没有更改,即没有更改会话变量。 -
您可以更改会话变量值并在同一个事务中执行一条语句。
有关更多信息,请参阅 避免固定 RDS 代理。
-
-
连接借用超时 - 调整连接借用超时间隔。当最大连接数已用于代理时,此设置适用。该设置确定在返回超时错误之前代理等待连接可用的时间。
-
初始化查询 - (可选)添加初始化查询或修改当前查询。您可以为代理指定一个或多个 SQL 语句,以便在打开每个新数据库连接时运行。设置通常与
SET
语句一起使用,以确保每个连接具有相同的设置,如时区和字符集。对于多个语句,请使用分号作为分隔符。您还可以在单个SET
语句中包含多个变量,例如SET x=1, y=2
。
不能更改某些属性,例如,目标组标识符和数据库引擎。
-
-
选择 Modify target group (修改目标组)。
要使用 AWS CLI 修改代理,请使用 modify-db-proxy、modify-db-proxy-target-group、deregister-db-proxy-targets 和 register-db-proxy-targets 命令。
使用 modify-db-proxy
命令,您可以更改以下属性:
-
代理使用的一组 Secrets Manager 密钥。
-
是否需要 TLS。
-
空闲客户端超时。
-
是否记录 SQL 语句中的其他信息以进行调试。
-
用于检索 Secrets Manager 密钥的 IAM 角色。
-
代理使用的安全组。
以下示例演示了如何重命名现有代理。
aws rds modify-db-proxy --db-proxy-name
the-proxy
--new-db-proxy-namethe_new_name
要修改与连接相关的设置或重命名目标组,请使用 modify-db-proxy-target-group
命令。目前,所有代理都有一个名为 default
的目标组。使用此目标组时,请指定代理的名称,并指定 default
作为目标组的名称。
以下示例演示了如何首先检查代理的 MaxIdleConnectionsPercent
设置,然后使用目标组对其进行更改。
aws rds describe-db-proxy-target-groups --db-proxy-name
the-proxy
{ "TargetGroups": [ { "Status": "available", "UpdatedDate": "2019-11-30T16:49:30.342Z", "ConnectionPoolConfig": { "MaxIdleConnectionsPercent": 50, "ConnectionBorrowTimeout": 120, "MaxConnectionsPercent": 100, "SessionPinningFilters": [] }, "TargetGroupName": "default", "CreatedDate": "2019-11-30T16:49:27.940Z", "DBProxyName": "the-proxy", "IsDefault": true } ] } aws rds modify-db-proxy-target-group --db-proxy-namethe-proxy
--target-group-name default --connection-pool-config ' { "MaxIdleConnectionsPercent": 75 }' { "DBProxyTargetGroup": { "Status": "available", "UpdatedDate": "2019-12-02T04:09:50.420Z", "ConnectionPoolConfig": { "MaxIdleConnectionsPercent": 75, "ConnectionBorrowTimeout": 120, "MaxConnectionsPercent": 100, "SessionPinningFilters": [] }, "TargetGroupName": "default", "CreatedDate": "2019-11-30T16:49:27.940Z", "DBProxyName": "the-proxy", "IsDefault": true } }
使用 deregister-db-proxy-targets
和 register-db-proxy-targets
命令,您可以通过相应的目标组来更改代理关联的 RDS 数据库实例。目前,每个代理都可以连接到一个 RDS 数据库实例。目标组可跟踪多可用区配置中所有 RDS 数据库实例的连接详细信息。
以下示例首先介绍了与名为 cluster-56-2020-02-25-1399
的 Aurora MySQL 集群关联的代理。该示例演示了如何更改代理,以便连接到名为 provisioned-cluster
的不同集群。
使用 RDS 数据库实例时,请指定 --db-instance-identifier
选项。
以下示例修改 Aurora MySQL 代理。Aurora PostgreSQL 代理具有端口 5432。
aws rds describe-db-proxy-targets --db-proxy-name
the-proxy
{ "Targets": [ { "Endpoint": "instance-9814.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "instance-9814" }, { "Endpoint": "instance-8898.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "instance-8898" }, { "Endpoint": "instance-1018.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "instance-1018" }, { "Type": "TRACKED_CLUSTER", "Port": 0, "RdsResourceId": "cluster-56-2020-02-25-1399" }, { "Endpoint": "instance-4330.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "instance-4330" } ] } aws rds deregister-db-proxy-targets --db-proxy-namethe-proxy
--db-cluster-identifier cluster-56-2020-02-25-1399 aws rds describe-db-proxy-targets --db-proxy-namethe-proxy
{ "Targets": [] } aws rds register-db-proxy-targets --db-proxy-namethe-proxy
--db-cluster-identifier provisioned-cluster { "DBProxyTargets": [ { "Type": "TRACKED_CLUSTER", "Port": 0, "RdsResourceId": "provisioned-cluster" }, { "Endpoint": "gkldje.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "gkldje" }, { "Endpoint": "provisioned-1.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "provisioned-1" } ] }
要使用 RDS API 修改代理,请使用 ModifyDBProxy、ModifyDBProxyTargetGroup、DeregisterDBProxyTargets 和 RegisterDBProxyTargets 操作。
使用 ModifyDBProxy
,您可以更改以下属性:
-
代理使用的一组 Secrets Manager 密钥。
-
是否需要 TLS。
-
空闲客户端超时。
-
是否记录 SQL 语句中的其他信息以进行调试。
-
用于检索 Secrets Manager 密钥的 IAM 角色。
-
代理使用的安全组。
使用 ModifyDBProxyTargetGroup
,您可以修改与连接相关的设置或重命名目标组。目前,所有代理都有一个名为 default
的目标组。使用此目标组时,请指定代理的名称,并指定 default
作为目标组的名称。
使用 DeregisterDBProxyTargets
和 RegisterDBProxyTargets
,您可以通过相应的目标组来更改代理关联的 RDS 数据库实例。目前,每个代理都可以连接到一个 RDS 数据库实例。目标组可跟踪多可用区配置中的所有 RDS 数据库实例的连接详细信息。