Perché la mia connessione di prova AWS Glue non va a buon fine?

7 minuti di lettura
0

Desidero risolvere un problema con una connessione di prova non riuscita in AWS Glue.

Risoluzione

Verifica i seguenti problemi comuni.

Problemi di rete

  • Verifica la connettività ai datastore JDBC: AWS Glue crea interfacce di rete elastiche con indirizzi IP privati nella sottorete della connessione. Ciò significa che AWS Glue non può utilizzare la rete Internet pubblica per connettersi al datastore.

  • Se il datastore si trova all'esterno dell'Amazon Virtual Private Cloud (Amazon VPC), la tabella di routing della sottorete deve essere instradata verso un gateway NAT in una sottorete pubblica. In caso contrario, la connessione scade.
    Nota: il datastore esterno all'Amazon VPC potrebbe essere un datastore on-premises o una risorsa Amazon Relational Database Service (Amazon RDS) con un nome host pubblico.

  • Se il datastore si trova nell'Amazon VPC, conferma che i gruppi di sicurezza della connessione e la lista di controllo degli accessi alla rete (ACL) consentano il traffico verso il datastore.

  • Controlla i gruppi di sicurezza della connessione: uno dei gruppi di sicurezza associati alla connessione deve disporre di una regola in entrata autoreferenziale aperta a tutte le porte TCP. Allo stesso modo, anche uno dei gruppi di sicurezza deve essere aperto a tutto il traffico in uscita. Puoi utilizzare una regola di autoreferenziazione che limiti il traffico in uscita verso l'Amazon VPC. Per ulteriori informazioni, consulta la pagina Setting up a VPC to connect to JDBC Data Stores.

  • Verifica il numero di indirizzi IP liberi: il numero di indirizzi IP liberi nella sottorete deve essere maggiore del numero di unità di elaborazione dati (DPU) specificate per il processo. Ciò consentirà ad AWS Glue di creare interfacce di rete elastiche nella sottorete specificata.

  • Verifica che la sottorete possa accedere ad Amazon Simple Storage Service (Amazon S3): fornisci un endpoint Amazon S3 o una route instradata verso un gateway NAT nella tabella di routing della tua sottorete. Per ulteriori informazioni, consulta la pagina Errore: impossibile trovare l'endpoint S3 o il gateway NAT per il subnetId in VPC.

  • Verifica se disponi di un endpoint VPC AWS KMS: se il tuo Catalogo dati AWS Glue sta crittografando le connessioni, assicurati di avere una route instradata verso AWS KMS. Ad esempio, la route può essere un endpoint dell'interfaccia VPC di AWS KMS. Per ulteriori informazioni, consulta la pagina Connessione a AWS KMS mediante un endpoint VPC.

  • Verifica se la connessione AWS Glue e il database utilizzano VPC diversi: la connessione di prova fallisce e restituisce un errore di timeout quando sono vere le seguenti condizioni:
    Il database non è accessibile al pubblico.
    Il processo AWS Glue è collegato a una connessione che utilizza un VPC diverso senza peering VPC.
    Questo problema può essere risolto creando un VPC AWS Glue dedicato e configurando i peering VPC corrispondenti con gli altri VPC, se necessario. Per ulteriori informazioni, consulta la pagina Connect to and run ETL jobs across multiple VPCs using a dedicated AWS Glue VPC.

  • Verifica la connettività al datastore on-premises: se stai testando la connessione AWS Glue a un database on-premises, è consigliabile connettersi a un'istanza Amazon Elastic Compute Cloud (Amazon EC2) nello stesso VPC, nella stessa sottorete e nello stesso gruppo di sicurezza utilizzati per la connessione. Quindi, esegui i test seguenti dall'istanza Amazon EC2. Se hai problemi nell'esecuzione dei comandi, controlla la tua VPN e le configurazioni di VPC, sottorete, gruppo di sicurezza e liste di controllo degli accessi alla rete (ACL). Assicurati che queste configurazioni non blocchino la connettività dal VPC al tuo database on-premises oppure creino problemi di firewall dal database on-premises. Per ulteriori informazioni, consulta la pagina How to access and analyze on-premises data stores using AWS Glue.

$ telnet hostname port
$ nc -zv hostname port
$ dig hostname
$ traceroute -AnT -p IP port

Problemi di autenticazione

  • Scegli il ruolo IAM corretto: il ruolo AWS Identity and Access Management (IAM) selezionato per la connessione di prova deve avere una relazione di attendibilità con AWS Glue. Un modo semplice per far sì che ciò avvenga è scegliere un ruolo collegato al servizio a cui è associata la policy AWSGlueServiceRole.
  • Controlla il ruolo IAM della connessione: se la password di connessione è crittografata con il Servizio AWS di gestione delle chiavi (AWS KMS), conferma che il ruolo IAM della connessione consenta l'azione kms:Decrypt per la chiave. Per ulteriori informazioni, consulta la pagina Configurazione della crittografia in AWS Glue.
  • Controlla i log delle connessioni: i log delle connessioni di prova si trovano in Amazon CloudWatch Logs al percorso /aws-glue/testconnection/output. Controlla i messaggi di errore nei log.
  • Controlla le impostazioni SSL: se il datastore richiede la connettività SSL per l'utente specificato, assicurati di selezionare Richiedi una connessione SSL quando crei la connessione sulla console. Non selezionare questa opzione se il datastore non supporta SSL.
  • Controlla il nome utente e la password JDBC: l'utente che accede al datastore JDBC deve disporre di autorizzazioni di accesso sufficienti. Ad esempio, i crawler AWS Glue richiedono autorizzazioni SELECT. Un processo che scrive in un datastore richiede le autorizzazioni INSERT, UPDATE e DELETE.
  • Controlla la sintassi dell'URL JDBC: i requisiti di sintassi variano in base al motore di database. Per ulteriori informazioni, consulta la pagina Aggiunta di una connessione AWS Glue ed esamina gli esempi in URL JDBC.

Risoluzione di problemi aggiuntivi

  • Verifica il tipo di connessione:

  • assicurati di scegliere il tipo di connessione corretto. Quando scegli Amazon RDS o Amazon Redshift per il Tipo di connessione, AWS Glue compila automaticamente il VPC, la sottorete e il gruppo di sicurezza.

  • Se devi connetterti a MySQL, tieni presente che la funzionalità di connessione di prova funziona solo per le versioni MySQL 5.x. La versione 8 di MySQL non è supportata con il driver JDBC AWS Glue integrato. Se provi la connessione con una versione di MySQL più recente della versione 5.x, potresti ricevere un errore di timeout della connessione. Tuttavia, puoi comunque utilizzare la tua connessione AWS Glue per connetterti a MySQL versione 8 con una soluzione alternativa. Usa la connessione su un processo di estrazione, caricamento e trasformazione (ETL) fornendo manualmente il driver JAR compatibile per MySQL versione 8 e successive. Quindi, carica questo file JAR nel tuo processo in modo simile a come caricheresti qualsiasi driver JDBC su un processo Spark. Per ulteriori informazioni, consulta la pagina Tipi e opzioni di connessione per ETL in AWS Glue.

  • Escludi problemi DNS: per escludere problemi DNS, utilizza l'indirizzo IP pubblico o privato del datastore come URL JDBC per la connessione AWS Glue. Quando esegui questa operazione, devi deselezionare l'opzione Richiedi una connessione SSL, perché non stai più utilizzando un nome di dominio.

  • Verifica se il driver è incompatibile: se la connessione fallisce a causa di un driver incompatibile, fornisci il driver corretto come file JAR aggiuntivo nelle proprietà del processo insieme al nome della connessione non riuscita (quando si specifica il nome della connessione come proprietà del processo, AWS Glue utilizza le impostazioni di rete della connessione, come il VPC e le sottoreti). Quindi, sovrascrivi i driver predefiniti del datastore di AWS Glue creando manualmente il dataframe Apache Spark con il file JAR fornito nelle proprietà del processo. Dopo aver creato il dataframe, puoi facoltativamente convertirlo in un DynamicFrame AWS Glue. Per ulteriori informazioni, consulta la sezione fromDF.

  • Controlla se il datastore JDBC è accessibile al pubblico: Connettiti al datastore utilizzando MySQL Workbench e l'URL JDBC. Oppure avvia un'istanza Amazon EC2 con accesso SSH alla stessa sottorete e agli stessi gruppi di sicurezza utilizzati per la connessione. Quindi, connettiti all'istanza tramite SSH ed esegui i comandi seguenti per testare la connettività.

$ dig hostname
$ nc -zv hostname port

Informazioni correlate

Defining connections in the AWS Glue Data Catalog

Risoluzione degli errori in AWS Glue

AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa