修改 RDS 代理 - Amazon Relational Database Service

修改 RDS 代理

您可以在创建代理后更改与代理关联的特定设置。可通过修改代理本身和/或其关联的目标组来执行此操作。每个代理都有一个关联的目标组。

重要

Client authentication type(客户端身份验证类型)和 IAM authentication(IAM 身份验证)字段中的值适用于与此代理关联的所有 Secrets Manager 密钥。要为每个密钥指定不同的值,请使用 AWS CLI 或改用 API 来修改代理。

修改代理的设置
  1. 登录 AWS Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Proxies (代理)

  3. 在代理列表中,选择要修改其设置的代理或转到其详细信息页面。

  4. 对于 Actions (操作),选择 Modify (修改)

  5. 输入或选择要修改的属性。您可以指定如下内容:

    • 代理标识符 – 通过输入新标识符来重命名代理。

    • 空闲客户端连接超时 - 输入空闲客户端连接超时的时间段。

    • IAM 角色 – 更改用于从 Secrets Manager 中检索密钥的 IAM 角色。

    • Secrets Manager 密钥 - 添加或删除 SSecrets Manager 密钥。这些密钥对应于数据库用户名和密码。

    • Client authentication type(客户端身份验证类型)-(仅限 PostgreSQL)更改客户端与代理的连接的身份验证类型。

    • IAM authentication(IAM 身份验证)– 要求或禁止对与代理的连接进行 IAM 身份验证。

    • 需要传输层安全性 - 打开或关闭传输层安全性 (TLS) 的要求。

    • VPC 安全组 - 添加或删除供代理使用的 VPC 安全组。

    • 启用增强型日志记录 - 启用或禁用增强型日志记录。

  6. 选择修改

如果您找不到要更改的列出设置,请使用以下过程更新代理的目标组。与代理关联的目标组控制与物理数据库连接相关的设置。每个代理都有一个名为 default 的关联目标组,该目标组与代理一起自动创建。

您只能从代理详细信息页面修改目标组,而不能从 Proxies (代理) 页面上的列表中进行修改。

修改代理目标组的设置
  1. Proxies (代理) 页面上,转到代理的详细信息页面。

  2. 对于 Target groups (目标组),选择 default 链接。目前,所有代理都有一个名为 default 的目标组。

  3. 默认目标组的详细信息页面上,选择 Modify (修改)

  4. 为您可以修改的属性选择新设置:

    • 数据库 – 选择不同的 RDS 数据库实例或集群

    • 连接池最大连接数 – 调整代理可使用的最大可用连接的百分比。

    • 会话固定筛选条件 -(可选)选择会话固定筛选条件。这绕过了跨客户端多路复用数据库连接的默认安全措施。目前,PostgreSQL 不支持该设置。唯一的选择是 EXCLUDE_VARIABLE_SETS

      启用此设置可能会导致一个连接的会话变量影响其它连接。如果您的查询依赖于在当前事务之外设置的会话变量值,则可能会导致错误或正确性问题。在确认您的应用程序可以安全地跨客户端连接共享数据库连接之后,请考虑使用此选项。

      可以认为以下模式是安全的:

      • SET 语句,其中有效会话变量值没有更改,即没有更改会话变量。

      • 您可以更改会话变量值并在同一个事务中执行一条语句。

      有关更多信息,请参阅 避免固定 RDS 代理

    • 连接借用超时 - 调整连接借用超时间隔。当最大连接数已用于代理时,此设置适用。该设置确定在返回超时错误之前代理等待连接可用的时间。

    • 初始化查询 - (可选)添加初始化查询或修改当前查询。您可以为代理指定一个或多个 SQL 语句,以便在打开每个新数据库连接时运行。设置通常与 SET 语句一起使用,以确保每个连接具有相同的设置,如时区和字符集。对于多个语句,请使用分号作为分隔符。您还可以在单个 SET 语句中包含多个变量,例如 SET x=1, y=2

    不能更改某些属性,例如,目标组标识符和数据库引擎。

  5. 选择 Modify target group (修改目标组)

要使用 AWS CLI 修改代理,请使用 modify-db-proxymodify-db-proxy-target-groupderegister-db-proxy-targetsregister-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-name the_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-name the-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-targetsregister-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-name the-proxy --db-cluster-identifier cluster-56-2020-02-25-1399 aws rds describe-db-proxy-targets --db-proxy-name the-proxy { "Targets": [] } aws rds register-db-proxy-targets --db-proxy-name the-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 修改代理,请使用 ModifyDBProxyModifyDBProxyTargetGroupDeregisterDBProxyTargetsRegisterDBProxyTargets 操作。

使用 ModifyDBProxy,您可以更改以下属性:

  • 代理使用的一组 Secrets Manager 密钥。

  • 是否需要 TLS。

  • 空闲客户端超时。

  • 是否记录 SQL 语句中的其他信息以进行调试。

  • 用于检索 Secrets Manager 密钥的 IAM 角色。

  • 代理使用的安全组。

使用 ModifyDBProxyTargetGroup,您可以修改与连接相关的设置或重命名目标组。目前,所有代理都有一个名为 default 的目标组。使用此目标组时,请指定代理的名称,并指定 default 作为目标组的名称。

使用 DeregisterDBProxyTargetsRegisterDBProxyTargets,您可以通过相应的目标组来更改代理关联的 RDS 数据库实例。目前,每个代理都可以连接到一个 RDS 数据库实例。目标组可跟踪多可用区配置中的所有 RDS 数据库实例的连接详细信息。