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 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 di 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 maggiori informazioni su come connettere il VPC Amazon alla rete on-premises, consulta la Guida per l’utente di Direct Connect e la Guida per l’utente della VPN di AWS Site-to-Site 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 DSQL

Aurora DSQL richiede due diversi tipi di endpoint. AWS PrivateLink

  1. Endpoint di gestione - Questo endpoint viene utilizzato per operazioni amministrative, come get, create, update, delete e list sui cluster Aurora DSQL. Consulta 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. Per informazioni, consulta 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 PrivateLinkquote 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 disabilitare il DNS privato quando si crea l’endpoint dell’interfaccia Aurora DSQL. Quando il DNS privato è abilitato, le richieste al servizio Aurora DSQL effettuate direttamente dal tuo 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 di Aurora DSQL effettuate direttamente dal tuo 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.

Recupero dell’elenco dei cluster tramite un URL di endpoint

Nell'esempio seguente, sostituisci il nome DNS Regione AWS us-east-1 e il nome DNS dell'vpce-1a2b3c4d-5e6f.dsql.us-east-1.vpce.amazonaws.comID 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

Fai riferimento alla Guida di riferimento delle API di Aurora DSQL per la documentazione sulla gestione delle risorse in Aurora DSQL.

Gestione delle policy degli endpoint

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

Esempio: policy di accesso ad Aurora DSQL completa

Le seguenti policy garantiscono 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: policy di accesso ad Aurora DSQL con restrizioni

La seguente policy consente solo queste operazioni su Aurora DSQL.

  • CreateCluster

  • GetCluster

  • ListClusters

Tutte le altre operazioni Aurora DSQL vengono negate.

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

Una volta che l'AWS PrivateLinkendpoint è 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: recupero del nome del servizio del proprio cluster

Quando si crea un AWS PrivateLink endpoint per la connessione al cluster, è innanzitutto necessario 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

Risposta di esempio

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

Il nome del servizio include un identificatore, come dsql-fnh4 nell’esempio. 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: creazione dell’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 flag --no-private-dns-enabled durante la creazione dell’endpoint, poiché ciò impedirà il corretto funzionamento delle istruzioni di connessione riportate di seguito. Se di disabilita il DNS privato, sarà necessario creare il proprio record DNS privato con 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

Risposta di esempio

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

Configurazione aggiuntiva durante la connessione Direct Connect tramite peering Amazon VPC

Potrebbero essere necessarie alcune configurazioni aggiuntive per connettersi ai cluster Aurora DSQL utilizzando un endpoint di AWS PrivateLink connessione da dispositivi locali tramite peering Amazon VPC o. Direct Connect Questa configurazione non è necessaria se l'applicazione è in esecuzione nello stesso Amazon VPC dell'endpoint. AWS PrivateLink Le voci DNS private create sopra non verranno risolte correttamente al di fuori dell'Amazon VPC dell'endpoint, ma puoi creare i tuoi record DNS privati che si risolvono nell'endpoint di connessione. AWS PrivateLink

Crea un record DNS CNAME privato che punti al nome di dominio completo dell'endpoint. AWS PrivateLink Il nome di dominio del record DNS creato deve essere costruito con i seguenti componenti:

  1. L’identificatore del servizio dal nome del servizio. Ad esempio: dsql-fnh4

  2. Il Regione AWS

Crea il record DNS CNAME con un nome di dominio nel seguente formato: *.service-identifier.region.on.aws

Il formato del nome di dominio è importante per due motivi:

  1. Il nome host utilizzato per connettersi ad Aurora DSQL deve corrispondere al certificato del server di Aurora DSQL quando si utilizza la modalità SSL. verify-full Ciò garantisce il massimo livello di sicurezza della connessione.

  2. Aurora DSQL utilizza la parte relativa all'ID del cluster del nome host utilizzata per connettersi ad Aurora DSQL per identificare il cluster di connessione.

Se non è possibile creare record DNS privati, è comunque possibile connettersi ad Aurora DSQL. Per informazioni, consulta Connessione a un cluster Aurora DSQL utilizzando un AWS PrivateLink endpoint senza DNS privato.

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

Una volta che l'AWS PrivateLinkendpoint è 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.

Costruzione del 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 Ad esempio: us-east-1

Utilizzare 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

Connessione a un cluster Aurora DSQL utilizzando un AWS PrivateLink endpoint senza DNS privato

Le istruzioni di connessione riportate sopra si basano su record DNS privati. Se la tua applicazione è in esecuzione nello stesso Amazon VPC dell'AWS PrivateLinkendpoint, i record DNS vengono creati automaticamente. In alternativa, se ti connetti da dispositivi locali tramite peering Amazon VPC oppureDirect Connect, puoi creare i tuoi record DNS privati. Tuttavia, la configurazione dei record DNS non è sempre possibile a causa delle restrizioni di rete imposte dai team di sicurezza. Se l'applicazione deve connettersi tramite Direct Connect o da un Amazon VPC peered e la configurazione dei record DNS non è possibile, puoi comunque connetterti ad Aurora DSQL.

Aurora DSQL utilizza la parte relativa all'ID del cluster del nome host per identificare il cluster di connessione, ma se la configurazione del record DNS non è possibile, Aurora DSQL supporta la specificazione del cluster di destinazione utilizzando l'opzione di connessione. amzn-cluster-id Con questa opzione, è possibile utilizzare il nome di dominio completo dell'AWS PrivateLinkendpoint come nome host durante la connessione.

Importante

Quando ci si connette con il nome di dominio o l'indirizzo IP completamente qualificato dell'AWS PrivateLinkendpoint, la modalità SSL non è supportata. verify-full Per questo motivo, è preferibile configurare un DNS privato.

Esempio: specificazione dell'opzione di connessione con l'ID del cluster utilizzando PostgreSQL

# Set environment variables export CLUSTERID=your-cluster-id export REGION=us-east-1 export HOSTNAME=vpce-04037adb76c111221-d849uc2p.dsql-fnh4.us-east-1.vpce.amazonaws.com # This should match your endpoint's fully-qualified domain name # Construct the hostname used to generate the authentication token export AUTH_HOSTNAME="$CLUSTERID.dsql.$REGION.on.aws" # Generate authentication token export PGPASSWORD=$(aws dsql --region $REGION generate-db-connect-admin-auth-token --hostname $AUTH_HOSTNAME) # Specify the amzn-cluster-id connection option export PGOPTIONS="-c amzn-cluster-id=$CLUSTERID" # 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 a AWS PrivateLink con Aurora DSQL.

Problema Possibile causa Soluzione

Timeout di connessione

Gruppo di sicurezza non configurato correttamente

Utilizza il sistema di analisi della reperibilità Amazon VPC per assicurarti che la configurazione della rete consenta il traffico sulla porta 5432.

Errore di risoluzione del DNS

DNS privato non abilitato

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

Errori di autenticazione

Credenziali errate o token scaduto

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

Il nome del servizio non è stato trovato

ID del cluster non corretto

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

Per maggiori informazioni, consulta le seguenti risorse: