Gestione e connessione ai cluster SQL di Amazon Aurora tramite AWS PrivateLink - Amazon Aurora DSQL

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Gestione e connessione ai cluster SQL di Amazon Aurora tramite AWS PrivateLink

Con AWS PrivateLink Amazon Aurora DSQL, puoi effettuare il provisioning degli endpoint Amazon VPC di interfaccia (endpoint di interfaccia) nel tuo Amazon Virtual Private Cloud. Questi endpoint sono accessibili direttamente dalle applicazioni locali tramite Amazon VPC AWS Direct Connect e/o in un altro modo di peering Regione AWS tramite Amazon VPC. Utilizzando AWS PrivateLink e interfacciando gli endpoint, puoi semplificare la connettività di rete privata dalle tue applicazioni ad Aurora DSQL.

Le applicazioni all'interno di Amazon VPC possono accedere ad Aurora DSQL utilizzando gli endpoint dell'interfaccia Amazon VPC senza richiedere indirizzi IP pubblici.

Gli endpoint dell'interfaccia sono rappresentati da una o più interfacce di rete elastiche (ENIs) a cui vengono assegnati indirizzi IP privati dalle sottoreti del tuo Amazon VPC. Le richieste ad Aurora DSQL tramite endpoint di interfaccia rimangono sulla rete. AWS Per ulteriori informazioni su come connettere Amazon VPC alla rete locale, consulta la Guida per l'utente e la Guida per AWS Direct Connect l'utente AWS Site-to-Site VPN VPN.

Per informazioni generali sugli endpoint di interfaccia, consulta Accedere a un AWS servizio utilizzando un endpoint Amazon VPC con interfaccia nella AWS PrivateLinkGuida per l'utente.

Tipi di endpoint Amazon VPC per Aurora SQL

Aurora DSQL richiede due diversi tipi di endpoint. AWS PrivateLink

  1. Endpoint di gestione: questo endpoint viene utilizzato per operazioni amministrative, comeget, create updatedelete, e sui cluster SQL list Aurora. Consultare Gestione dei cluster Aurora DSQL utilizzando AWS PrivateLink.

  2. Endpoint di connessione: questo endpoint viene utilizzato per la connessione ai cluster Aurora DSQL tramite client PostgreSQL. Consultare Connessione ai cluster Aurora DSQL tramite AWS PrivateLink.

Le considerazioni relative ad Amazon VPC valgono per AWS PrivateLink Aurora DSQL. Per ulteriori informazioni, consulta Accedere a un AWS servizio utilizzando un endpoint e AWS PrivateLink quote VPC di interfaccia nella Guida. AWS PrivateLink

È possibile utilizzare AWS Command Line Interface o AWS Software Development Kit (SDKs) per gestire i cluster Aurora DSQL tramite gli endpoint dell'interfaccia Aurora DSQL.

Creazione di un endpoint Amazon VPC

Per creare un endpoint di interfaccia Amazon VPC, consulta Creare un endpoint Amazon VPC nella Guida. AWS PrivateLink

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 \

Per utilizzare il nome DNS regionale predefinito per le richieste API Aurora DSQL, non disabilitate il DNS privato quando create l'endpoint dell'interfaccia Aurora DSQL. Quando il DNS privato è abilitato, le richieste al servizio Aurora DSQL effettuate dall'interno di Amazon VPC verranno risolte automaticamente nell'indirizzo IP privato dell'endpoint Amazon VPC, anziché nel nome DNS pubblico. Quando il DNS privato è abilitato, le richieste DSQL di Aurora effettuate all'interno di Amazon VPC verranno risolte automaticamente nell'endpoint Amazon VPC.

Se il DNS privato non è abilitato, utilizzate i --endpoint-url parametri --region and con AWS CLI i comandi per gestire i cluster Aurora DSQL tramite gli endpoint dell'interfaccia Aurora DSQL.

Elencare i cluster utilizzando l'URL di un endpoint

Nell'esempio seguente, sostituisci il nome DNS Regione AWS us-east-1 e il nome DNS dell'vpce-1a2b3c4d-5e6f---dynamodb---us-east-1---vpce.amazonaws.com.rproxy.govskope.caID dell'endpoint Amazon VPC con le tue informazioni.

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

Operazioni API

Fate riferimento al riferimento sull'API Aurora DSQL per la documentazione sulla gestione delle risorse in Aurora DSQL.

Gestione delle politiche degli endpoint

Testando e configurando a fondo le policy degli endpoint di Amazon VPC, puoi contribuire a garantire che il tuo cluster Aurora DSQL sia sicuro, conforme e allineato ai requisiti di governance e controllo degli accessi specifici della tua organizzazione.

Esempio: policy di accesso SQL Aurora completa

La seguente policy garantisce l'accesso completo a tutte le azioni e le risorse di Aurora DSQL tramite l'endpoint Amazon VPC specificato.

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

Esempio: politica di accesso SQL Aurora con restrizioni

La seguente politica consente solo queste azioni Aurora DSQL.

  • CreateCluster

  • GetCluster

  • ListClusters

Tutte le altre azioni Aurora DSQL vengono negate.

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

Una volta che l' AWS PrivateLink endpoint è configurato e attivo, puoi connetterti al tuo cluster Aurora DSQL utilizzando un client PostgreSQL. Le istruzioni di connessione riportate di seguito descrivono i passaggi per creare il nome host corretto per la connessione tramite l'endpoint. AWS PrivateLink

Fase 1: Ottieni il nome del servizio per il tuo cluster

Quando crei un AWS PrivateLink endpoint per la connessione al cluster, devi prima recuperare il nome del servizio specifico del cluster.

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

Example response

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

Il nome del servizio include un identificatore, come nell'esempio. dsql-fnh4 Questo identificatore è necessario anche per creare il nome host per la connessione al cluster.

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);

Fase 2: Creare l'endpoint Amazon VPC

Utilizzando il nome del servizio ottenuto nel passaggio precedente, crea un endpoint Amazon VPC.

Importante

Le istruzioni di connessione riportate di seguito funzionano solo per la connessione ai cluster quando il DNS privato è abilitato. Non utilizzare il --no-private-dns-enabled flag durante la creazione dell'endpoint, poiché ciò impedirà il corretto funzionamento delle istruzioni di connessione riportate di seguito. Se disabiliti il DNS privato, dovrai creare il tuo record DNS privato wildcard che punti all'endpoint creato.

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

Example response

{
    "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

Usa un URL endpoint per 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);

Connessione a un cluster Aurora DSQL utilizzando un endpoint di connessione AWS PrivateLink

Una volta che l' AWS PrivateLink endpoint è configurato e attivo (verifica che lo State siaavailable), puoi connetterti al tuo cluster Aurora DSQL utilizzando un client PostgreSQL. Per istruzioni sull'uso di AWS SDKs, puoi seguire le guide in Programmazione con Aurora DSQL. È necessario modificare l'endpoint del cluster in modo che corrisponda al formato del nome host.

Costruire il nome host

Il nome host per la connessione è AWS PrivateLink diverso dal nome host DNS pubblico. È necessario costruirlo utilizzando i seguenti componenti.

  1. Your-cluster-id

  2. L'identificatore del servizio dal nome del servizio. Ad esempio: dsql-fnh4

  3. Il Regione AWS

Utilizza il seguente formato: cluster-id.service-identifier.region.on.aws

Esempio: connessione tramite 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

Problemi e soluzioni comuni

La tabella seguente elenca i problemi e le soluzioni comuni relativi AWS PrivateLink ad Aurora DSQL.

Problema Causa possibile Soluzione

Timeout di connessione

Gruppo di sicurezza non configurato correttamente

Usa Amazon VPC Reachability Analyzer per assicurarti che la configurazione della rete consenta il traffico sulla porta 5432.

Errore di risoluzione DNS

DNS privato non abilitato

Verifica che l'endpoint Amazon VPC sia stato creato con DNS privato abilitato.

Errore di autenticazione

Credenziali errate o token scaduto

Genera un nuovo token di autenticazione e verifica il nome utente.

Nome del servizio non trovato

ID cluster errato

Ricontrolla l'ID del cluster e Regione AWS quando recuperi il nome del servizio.

Per ulteriori informazioni, consulta le seguenti risorse: