使用 AWS PrivateLink 管理和连接到 Amazon Aurora DSQL 集群
借助适用于 Amazon Aurora DSQL 的 AWS PrivateLink,您可以在 Amazon Virtual Private Cloud 中预置接口 Amazon VPC 端点(接口端点)。这些端点可从位于本地(通过 Amazon VPC 及 AWS Direct Connect)或其它 AWS 区域(通过 Amazon VPC 对等连接)中的应用程序直接访问。使用 AWS PrivateLink 和接口端点,您可以简化应用程序与 Aurora DSQL 之间的私有网络连接。
Amazon VPC 中的应用程序无需公有 IP 地址,即可使用 Amazon VPC 接口端点访问 Aurora DSQL。
接口端点由一个或多个弹性网络接口(ENI)表示,这些接口是从 Amazon VPC 中的子网分配的私有 IP 地址。通过接口端点向 Aurora DSQL 发出的请求仍留在 AWS 网络上。有关如何将 Amazon VPC 与本地网络连接的更多信息,请参阅 AWS Direct Connect User Guide 和《AWS Site-to-Site VPN VPN User Guide》。
有关接口端点的一般信息,请参阅《AWS PrivateLink User Guide》中的 Access an AWS service using an interface Amazon VPC endpoint。
适用于 Aurora DSQL 的 Amazon VPC 端点类型
Aurora DSQL 需要两种不同类型的 AWS PrivateLink 端点。
-
管理端点:此端点用于 Aurora DSQL 集群上的管理操作,例如
get
、create
、update
、delete
和list
。请参阅使用 AWS PrivateLink 管理 Aurora DSQL 集群。 -
连接端点:此端点用于通过 PostgreSQL 客户端连接到 Aurora DSQL 集群。请参阅使用 AWS PrivateLink 连接到 Aurora DSQL 集群。
使用适用于 Aurora DSQL 的 AWS PrivateLink 时的注意事项
Amazon VPC 注意事项面向适用于 Aurora DSQL 的 AWS PrivateLink。有关更多信息,请参阅《AWS PrivateLink Guide》中的 Access an AWS service using an interface VPC endpoint 和 AWS PrivateLink quotas。
使用 AWS PrivateLink 管理 Aurora DSQL 集群
您可以使用 AWS Command Line Interface或 AWS 软件开发工具包(SDK)通过 Aurora DSQL 接口端点管理 Aurora DSQL 集群。
创建 Amazon VPC 端点
要创建 Amazon VPC 接口端点,请参阅《AWS PrivateLink Guide》中的 Create an Amazon VPC endpoint。
aws ec2 create-vpc-endpoint \ --region
region
\ --service-name com.amazonaws.region
.dsql \ --vpc-idyour-vpc-id
\ --subnet-idsyour-subnet-id
\ --vpc-endpoint-type Interface \ --security-group-idsclient-sg-id
\
要对 Aurora DSQL API 请求使用默认区域 DNS 名称,请在创建 Aurora DSQL 接口端点时不要禁用私有 DNS。启用私有 DNS 后,从 Amazon VPC 内向 Aurora DSQL 服务发出的请求将自动解析到 Amazon VPC 端点的私有 IP 地址,而不是公有 DNS 名称。启用私有 DNS 后,在 Amazon VPC 内发出的 Aurora DSQL 请求将自动解析到 Amazon VPC 端点。
如果未启用私有 DNS,请使用 --region
和 --endpoint-url
参数以及 AWS CLI 命令,通过 Aurora DSQL 接口端点来管理 Aurora DSQL 集群。
使用端点 URL 列出集群
在以下示例中,将 AWS 区域 us-east-1
和 Amazon VPC 端点 ID vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com
的 DNS 名称替换为您自己的信息。
aws dsql --region
us-east-1
--endpoint-url https://vpce-1a2b3c4d-5e6f.dsql.us-east-1.vpce.amazonaws.com
list-clusters
API 操作
有关在 Aurora DSQL 中管理资源的文档,请参阅 Aurora DSQL API 参考。
管理端点策略
通过全面测试和配置 Amazon VPC 端点策略,有助于确保 Aurora DSQL 集群安全、合规,并符合组织的特定访问控制和治理要求。
示例:完整的 Aurora DSQL 访问策略
以下策略将授予通过指定的 Amazon VPC 端点访问所有 Amazon DSQL 操作和资源的完全访问权限。
aws ec2 modify-vpc-endpoint \ --vpc-endpoint-id vpce-xxxxxxxxxxxxxxxxx \ --region region \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "dsql:*", "Resource": "*" } ] }'
示例:受限的 Aurora DSQL 访问策略
以下策略仅允许这些 Aurora DSQL 操作。
-
CreateCluster
-
GetCluster
-
ListClusters
所有其它 Aurora DSQL 操作均会遭拒绝。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": [ "dsql:CreateCluster", "dsql:GetCluster", "dsql:ListClusters" ], "Resource": "*" } ] }
使用 AWS PrivateLink 连接到 Aurora DSQL 集群
AWS PrivateLink 端点设置完毕并处于活动状态后,就可以使用 PostgreSQL 客户端连接到 Aurora DSQL 集群了。以下连接说明概述了为通过 AWS PrivateLink 端点进行连接而构造正确的主机名的步骤。
设置 AWS PrivateLink 连接端点
步骤 1:获取集群的服务名称
在创建用于连接到集群的 AWS PrivateLink 端点时,首先需要获取特定于集群的服务名称。
步骤 2:创建 Amazon VPC 端点
使用在上一步中获得的服务名称,创建 Amazon VPC 端点。
重要
以下连接说明仅适用于在启用私有 DNS 时连接到集群。创建端点时请勿使用 --no-private-dns-enabled
标志,因为这会使下面的连接说明无法正常发挥作用。如果您禁用私有 DNS,则需要创建自己的通配符私有 DNS 记录,该记录指向已创建的端点。
使用 AWS PrivateLink 连接端点连接到 Aurora DSQL 集群
AWS PrivateLink 端点设置完毕并处于活动状态(检查 State
是否为 available
)后,就可以使用 PostgreSQL 客户端连接到 Aurora DSQL 集群了。有关使用 AWS SDK 的说明,您可以按照 Programming with Aurora DSQL 中的指导进行操作。您必须更改集群端点以匹配主机名格式。
构造主机名
通过 AWS PrivateLink 进行连接的主机名不同于公有 DNS 主机名。您需要使用以下组件来构造它。
-
Your-cluster-id
-
服务名称中的服务标识符。例如:
dsql-fnh4
-
这些区域有:AWS 区域
采用以下格式:cluster-id
.service-identifier
.region
.on.aws
示例:使用 PostgreSQL 进行连接
# Set environment variables export CLUSTERID=
your-cluster-id
export REGION=us-east-1 export SERVICE_IDENTIFIER=dsql-fnh4 # This should match the identifier in your service name # Construct the hostname export HOSTNAME="$CLUSTERID.$SERVICE_IDENTIFIER.$REGION.on.aws" # Generate authentication token export PGPASSWORD=$(aws dsql --region $REGION generate-db-connect-admin-auth-token --hostname $HOSTNAME) # Connect using psql psql -d postgres -h $HOSTNAME -U admin
排查 AWS PrivateLink 问题
常见问题和解决方案
下表列出了将 AWS PrivateLink 与 Aurora DSQL 结合使用时相关的常见问题和解决方案。
事务 | 可能的原因 | 解决方案 |
---|---|---|
连接超时 |
安全组配置不正确 |
使用 Amazon VPC Reachability Analyzer 可确保网络设置支持端口 5432 上的流量。 |
DNS 解析失败 |
未启用私有 DNS |
确认 Amazon VPC 端点是在启用私有 DNS 的情况下创建的。 |
身份验证失败 |
凭证不正确或令牌过期 |
生成新的身份验证令牌并验证用户名。 |
找不到服务名称 |
集群 ID 不正确 |
在获取服务名称时,请仔细检查您的集群 ID 和 AWS 区域。 |
相关资源
有关更多信息,请参阅以下资源: