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 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 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.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

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

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.

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

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

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: