Verwaltung und Verbindung zu Amazon Aurora DSQL-Clustern mithilfe von AWS PrivateLink - Amazon Aurora DSQL

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwaltung und Verbindung zu Amazon Aurora DSQL-Clustern mithilfe von AWS PrivateLink

Mit AWS PrivateLink for Amazon Aurora DSQL können Sie Amazon VPC-Schnittstellenendpunkte (Schnittstellenendpunkte) in Ihrer Amazon Virtual Private Cloud bereitstellen. Auf diese Endpunkte kann direkt von Anwendungen aus zugegriffen werden, die sich vor Ort befinden AWS Direct Connect, über Amazon VPC und/oder auf andere Weise AWS-Region über Amazon VPC Peering. Mithilfe von Endpunkten AWS PrivateLink und Schnittstellen können Sie die private Netzwerkkonnektivität zwischen Ihren Anwendungen und Aurora DSQL vereinfachen.

Anwendungen in Ihrer Amazon VPC können über Amazon VPC-Schnittstellenendpunkte auf Aurora DSQL zugreifen, ohne dass öffentliche IP-Adressen erforderlich sind.

Schnittstellenendpunkte werden durch eine oder mehrere elastische Netzwerkschnittstellen (ENIs) repräsentiert, denen private IP-Adressen aus Subnetzen in Ihrer Amazon VPC zugewiesen wurden. Anfragen an Aurora DSQL über Schnittstellenendpunkte bleiben im AWS Netzwerk. Weitere Informationen darüber, wie Sie Ihre Amazon VPC mit Ihrem lokalen Netzwerk verbinden, finden Sie im AWS Direct Connect Benutzerhandbuch und im AWS Site-to-Site VPN VPN-Benutzerhandbuch.

Allgemeine Informationen zu Schnittstellenendpunkten finden Sie unter Zugreifen auf einen AWS Service mithilfe eines Amazon VPC-Schnittstellenendpunkts im AWS PrivateLinkBenutzerhandbuch.

Arten von Amazon VPC-Endpunkten für Aurora DSQL

Aurora DSQL erfordert zwei verschiedene Arten von AWS PrivateLink Endpunkten.

  1. Verwaltungsendpunkt — Dieser Endpunkt wird für Verwaltungsvorgänge wie,get, create updatedelete, und list auf Aurora SQL-Clustern verwendet. Siehe Verwaltung von Aurora DSQL-Clustern mit AWS PrivateLink.

  2. Verbindungsendpunkt — Dieser Endpunkt wird für die Verbindung zu Aurora DSQL-Clustern über PostgreSQL-Clients verwendet. Siehe Verbindung zu Aurora DSQL-Clustern herstellen mit AWS PrivateLink.

Überlegungen zu Amazon VPC gelten AWS PrivateLink für Aurora DSQL. Weitere Informationen finden Sie im AWS PrivateLink Handbuch unter Zugreifen auf einen AWS Dienst über eine Schnittstelle, VPC-Endpunkt und AWS PrivateLink Kontingente.

Sie können die AWS Command Line Interface oder AWS Software Development Kits (SDKs) verwenden, um Aurora DSQL-Cluster über Aurora DSQL-Schnittstellenendpunkte zu verwalten.

Erstellen eines Amazon VPC-Endpunkts

Informationen zum Erstellen eines Amazon VPC-Schnittstellenendpunkts finden Sie unter Erstellen eines Amazon VPC-Endpunkts im AWS PrivateLink Handbuch.

aws ec2 create-vpc-endpoint \ --region region \ --service-name com.amazonaws.region.dsql \ --vpc-id your-vpc-id \ --subnet-ids your-subnet-id \ --vpc-endpoint-type Interface \ --security-group-ids client-sg-id \

Um den standardmäßigen regionalen DNS-Namen für Aurora DSQL-API-Anfragen zu verwenden, deaktivieren Sie privates DNS nicht, wenn Sie den Aurora DSQL-Schnittstellenendpunkt erstellen. Wenn privates DNS aktiviert ist, werden Anfragen an den Aurora DSQL-Service, die von Ihrer Amazon VPC aus gestellt werden, automatisch auf die private IP-Adresse des Amazon VPC-Endpunkts und nicht auf den öffentlichen DNS-Namen aufgelöst. Wenn privates DNS aktiviert ist, werden Aurora DSQL-Anfragen, die in Ihrer Amazon VPC gestellt werden, automatisch auf Ihren Amazon VPC-Endpunkt aufgelöst.

Wenn privates DNS nicht aktiviert ist, verwenden Sie die --endpoint-url Parameter --region und mit AWS CLI Befehlen, um Aurora DSQL-Cluster über Aurora DSQL-Schnittstellenendpunkte zu verwalten.

Cluster mithilfe einer Endpunkt-URL auflisten

Ersetzen Sie im folgenden Beispiel den AWS-Region us-east-1 und den DNS-Namen der Amazon VPC-Endpunkt-ID vpce-1a2b3c4d-5e6f.dynamodb.us-east-1.vpce.amazonaws.com durch Ihre eigenen Informationen.

aws dsql --region us-east-1 --endpoint-url https://vpce-1a2b3c4d-5e6f.dsql.us-east-1.vpce.amazonaws.com list-clusters

API-Operationen

Dokumentation zur Verwaltung von Ressourcen in Aurora DSQL finden Sie in der Aurora DSQL API-Referenz.

Verwaltung von Endpunktrichtlinien

Durch gründliches Testen und Konfigurieren der Amazon VPC-Endpunktrichtlinien können Sie sicherstellen, dass Ihr Aurora DSQL-Cluster sicher und konform ist und den spezifischen Zugriffskontroll- und Governance-Anforderungen Ihres Unternehmens entspricht.

Beispiel: Vollständige Aurora DSQL-Zugriffsrichtlinie

Die folgende Richtlinie gewährt vollen Zugriff auf alle Aurora DSQL-Aktionen und -Ressourcen über den angegebenen Amazon VPC-Endpunkt.

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": "*" } ] }'

Beispiel: Eingeschränkte Aurora DSQL-Zugriffsrichtlinie

Die folgende Richtlinie erlaubt nur diese Aurora DSQL-Aktionen.

  • CreateCluster

  • GetCluster

  • ListClusters

Alle anderen Aurora DSQL-Aktionen werden verweigert.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": [ "dsql:CreateCluster", "dsql:GetCluster", "dsql:ListClusters" ], "Resource": "*" } ] }

Sobald Ihr AWS PrivateLink Endpunkt eingerichtet und aktiv ist, können Sie mit einem PostgreSQL-Client eine Verbindung zu Ihrem Aurora DSQL-Cluster herstellen. In den folgenden Verbindungsanweisungen werden die Schritte zur Erstellung des richtigen Hostnamens für die Verbindung über den Endpunkt beschrieben. AWS PrivateLink

Schritt 1: Holen Sie sich den Dienstnamen für Ihren Cluster

Wenn Sie einen AWS PrivateLink Endpunkt für die Verbindung zu Ihrem Cluster erstellen, müssen Sie zuerst den clusterspezifischen Dienstnamen abrufen.

AWS CLI
aws dsql get-vpc-endpoint-service-name \ --region us-east-1 \ --identifier your-cluster-id

Beispielantwort

{
    "serviceName": "com.amazonaws.us-east-1.dsql-fnh4"
}

Der Dienstname enthält einen Bezeichner, wie dsql-fnh4 im Beispiel. Diese Kennung wird auch benötigt, wenn der Hostname für die Verbindung zu Ihrem Cluster erstellt wird.

AWS SDK for Python (Boto3)
import boto3 dsql_client = boto3.client('dsql', region_name='us-east-1') response = dsql_client.get_vpc_endpoint_service_name( identifier='your-cluster-id' ) service_name = response['serviceName'] print(f"Service Name: {service_name}")
AWS SDK for Java 2.x
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dsql.DsqlClient; import software.amazon.awssdk.services.dsql.model.GetVpcEndpointServiceNameRequest; import software.amazon.awssdk.services.dsql.model.GetVpcEndpointServiceNameResponse; String region = "us-east-1"; String clusterId = "your-cluster-id"; DsqlClient dsqlClient = DsqlClient.builder() .region(Region.of(region)) .credentialsProvider(DefaultCredentialsProvider.create()) .build(); GetVpcEndpointServiceNameResponse response = dsqlClient.getVpcEndpointServiceName( GetVpcEndpointServiceNameRequest.builder() .identifier(clusterId) .build() ); String serviceName = response.serviceName(); System.out.println("Service Name: " + serviceName);

Schritt 2: Amazon VPC-Endpunkt erstellen

Erstellen Sie mit dem im vorherigen Schritt erhaltenen Servicenamen einen Amazon VPC-Endpunkt.

Wichtig

Die folgenden Verbindungsanweisungen funktionieren nur für Verbindungen zu Clustern, wenn Private DNS aktiviert ist. Verwenden Sie das --no-private-dns-enabled Flag nicht, wenn Sie den Endpunkt erstellen, da dadurch die unten aufgeführten Verbindungsanweisungen nicht ordnungsgemäß funktionieren. Wenn Sie privates DNS deaktivieren, müssen Sie Ihren eigenen privaten DNS-Wildcard-Eintrag erstellen, der auf den erstellten Endpunkt verweist.

AWS CLI
aws ec2 create-vpc-endpoint \ --region us-east-1 \ --service-name service-name-for-your-cluster \ --vpc-id your-vpc-id \ --subnet-ids subnet-id-1 subnet-id-2 \ --vpc-endpoint-type Interface \ --security-group-ids security-group-id

Beispielantwort

{
    "VpcEndpoint": {
        "VpcEndpointId": "vpce-0123456789abcdef0",
        "VpcEndpointType": "Interface",
        "VpcId": "vpc-0123456789abcdef0",
        "ServiceName": "com.amazonaws.us-east-1.dsql-fnh4",
        "State": "pending",
        "RouteTableIds": [],
        "SubnetIds": [
            "subnet-0123456789abcdef0",
            "subnet-0123456789abcdef1"
        ],
        "Groups": [
            {
                "GroupId": "sg-0123456789abcdef0",
                "GroupName": "default"
            }
        ],
        "PrivateDnsEnabled": true,
        "RequesterManaged": false,
        "NetworkInterfaceIds": [
            "eni-0123456789abcdef0",
            "eni-0123456789abcdef1"
        ],
        "DnsEntries": [
            {
                "DnsName": "*.dsql-fnh4.us-east-1.vpce.amazonaws.com",
                "HostedZoneId": "Z7HUB22UULQXV"
            }
        ],
        "CreationTimestamp": "2025-01-01T00:00:00.000Z"
    }
} 
SDK for Python
import boto3 ec2_client = boto3.client('ec2', region_name='us-east-1') response = ec2_client.create_vpc_endpoint( VpcEndpointType='Interface', VpcId='your-vpc-id', ServiceName='com.amazonaws.us-east-1.dsql-fnh4', # Use the service name from previous step SubnetIds=[ 'subnet-id-1', 'subnet-id-2' ], SecurityGroupIds=[ 'security-group-id' ] ) vpc_endpoint_id = response['VpcEndpoint']['VpcEndpointId'] print(f"VPC Endpoint created with ID: {vpc_endpoint_id}")
SDK for Java 2.x

Verwenden Sie eine Endpunkt-URL für Aurora DSQL APIs

import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.ec2.Ec2Client; import software.amazon.awssdk.services.ec2.model.CreateVpcEndpointRequest; import software.amazon.awssdk.services.ec2.model.CreateVpcEndpointResponse; import software.amazon.awssdk.services.ec2.model.VpcEndpointType; String region = "us-east-1"; String serviceName = "com.amazonaws.us-east-1.dsql-fnh4"; // Use the service name from previous step String vpcId = "your-vpc-id"; Ec2Client ec2Client = Ec2Client.builder() .region(Region.of(region)) .credentialsProvider(DefaultCredentialsProvider.create()) .build(); CreateVpcEndpointRequest request = CreateVpcEndpointRequest.builder() .vpcId(vpcId) .serviceName(serviceName) .vpcEndpointType(VpcEndpointType.INTERFACE) .subnetIds("subnet-id-1", "subnet-id-2") .securityGroupIds("security-group-id") .build(); CreateVpcEndpointResponse response = ec2Client.createVpcEndpoint(request); String vpcEndpointId = response.vpcEndpoint().vpcEndpointId(); System.out.println("VPC Endpoint created with ID: " + vpcEndpointId);

Über einen Verbindungsendpunkt eine Verbindung zu einem Aurora DSQL-Cluster herstellen AWS PrivateLink

Sobald Ihr AWS PrivateLink Endpunkt eingerichtet und aktiv ist (stellen Sie sicher, dass dies der Fall State istavailable), können Sie über einen PostgreSQL-Client eine Verbindung zu Ihrem Aurora DSQL-Cluster herstellen. Anweisungen zur Verwendung von finden Sie in den Anleitungen unter Programmieren mit Aurora DSQL. AWS SDKs Sie müssen den Cluster-Endpunkt so ändern, dass er dem Hostnamenformat entspricht.

Den Hostnamen konstruieren

Der Hostname für die Verbindung AWS PrivateLink unterscheidet sich vom öffentlichen DNS-Hostnamen. Sie müssen ihn mit den folgenden Komponenten erstellen.

  1. Your-cluster-id

  2. Die Dienst-ID aus dem Dienstnamen. Beispiel: dsql-fnh4

  3. Der AWS-Region

Verwenden Sie das folgende Format: cluster-id.service-identifier.region.on.aws

Beispiel: Verbindung mit 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

Häufige Probleme und Lösungen

In der folgenden Tabelle sind häufig auftretende Probleme und Lösungen im Zusammenhang AWS PrivateLink mit Aurora DSQL aufgeführt.

Problem Mögliche Ursache Lösung

Verbindungstimeout

Sicherheitsgruppe nicht richtig konfiguriert

Verwenden Sie Amazon VPC Reachability Analyzer, um sicherzustellen, dass Ihr Netzwerk-Setup Datenverkehr auf Port 5432 zulässt.

Fehler bei der DNS-Auflösung

Privates DNS ist nicht aktiviert

Stellen Sie sicher, dass der Amazon VPC-Endpunkt mit aktiviertem privaten DNS erstellt wurde.

Fehler bei der Authentifizierung

Falsche Anmeldeinformationen oder abgelaufenes Token

Generieren Sie ein neues Authentifizierungstoken und überprüfen Sie den Benutzernamen.

Der Dienstname wurde nicht gefunden

Falsche Cluster-ID

Überprüfen Sie Ihre Cluster-ID und AWS-Region beim Abrufen des Dienstnamens noch einmal.

Weitere Informationen finden Sie in den folgenden Ressourcen: