

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
<a name="privatelink-managing-clusters"></a>

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](https://docs.aws.amazon.com/directconnect/latest/UserGuide/) e la [Guida per l’utente della VPN di AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html).

Per informazioni generali sugli endpoint di interfaccia, consulta [Accedere a un AWS servizio utilizzando un endpoint Amazon VPC con interfaccia](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) nella [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink)Guida per l'utente.

## Tipi di endpoint Amazon VPC per Aurora DSQL
<a name="endpoint-types-dsql"></a>

 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](#managing-dsql-clusters-using-privatelink).

1. *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](#privatelink-connecting-clusters). 

## Considerazioni sull'utilizzo AWS PrivateLink per Aurora DSQL
<a name="privatelink-dsql-considerations"></a>

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](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-limits-endpoints.html) VPC di interfaccia](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#vpce-interface-limitations) nella Guida. AWS PrivateLink 

## Gestione dei cluster Aurora DSQL utilizzando AWS PrivateLink
<a name="managing-dsql-clusters-using-privatelink"></a>

È 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
<a name="create-vpc-endpoint"></a>

Per creare un endpoint di interfaccia Amazon VPC, consulta Creare [un endpoint Amazon VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) 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
<a name="list-clusters-endpoint-url"></a>

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`ID 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
<a name="api-operations"></a>

Fai riferimento alla [Guida di riferimento delle API di Aurora DSQL](CHAP_api_reference.md) per la documentazione sulla gestione delle risorse in Aurora DSQL.

### Gestione delle policy degli endpoint
<a name="managing-endpoint-policies"></a>

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

------

## Connessione ai cluster Aurora DSQL tramite AWS PrivateLink
<a name="privatelink-connecting-clusters"></a>

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 

### Configurazione di un endpoint di connessione AWS PrivateLink
<a name="setting-up-privatelink-endpoint"></a>

******Fase 1: recupero del nome del servizio del proprio 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 }}
```

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

------<a name="create-vpc-endpoint"></a>

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

------<a name="additional-setup-for-peering"></a>

**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`

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

1. 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](#connecting-cluster-id-option).

### Connessione a un cluster Aurora DSQL utilizzando un endpoint di connessione AWS PrivateLink
<a name="connecting-endpoints"></a>

Una volta che l' AWS PrivateLink endpoint è configurato e attivo (verifica che lo `State` sia`available`), 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](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/programming-with.html). È necessario modificare l’endpoint del cluster in modo che corrisponda al formato del nome host.

#### Costruzione del nome host
<a name="construct-hostname"></a>

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

1. `Your-cluster-id`

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

1. 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
<a name="connecting-cluster-id-option"></a>

Le istruzioni di connessione riportate sopra si basano su record DNS privati. Se la tua applicazione è in esecuzione nello stesso Amazon VPC dell' AWS PrivateLink endpoint, i record DNS vengono creati automaticamente. In alternativa, se ti connetti da dispositivi locali tramite peering Amazon VPC oppure Direct 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 PrivateLink endpoint come nome host durante la connessione.

**Importante**  
Quando ci si connette con il nome di dominio o l'indirizzo IP completamente qualificato dell' AWS PrivateLink endpoint, 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
```

### Risoluzione dei problemi con AWS PrivateLink
<a name="troubleshooting-privatelink"></a>

#### Problemi e soluzioni comuni
<a name="common-issues"></a>

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

### Risorse correlate
<a name="related-resources"></a>

Per maggiori informazioni, consulta le seguenti risorse:
+ [Guida per l’utente di Amazon Aurora DSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-dsql.html)
+ [Documentazione di AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)
+ [Accedi ai servizi tramite AWSAWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html)