Come posso risolvere gli errori di connessione di Marketplace AWS nei miei processi ETL in AWS Glue?

9 minuti di lettura
0

Quando utilizzo i connettori Marketplace AWS in AWS Glue ricevo errori nei log.

Risoluzione

I connettori non vengono visualizzati

Hai effettuato una sottoscrizione per un connettore da Marketplace AWS, ma non riesci a trovarlo nella pagina dei connettori di AWS Glue Studio.

Per risolvere questo problema, completa i seguenti passaggi:

  1. Apri Marketplace AWS.
  2. Scegli Scopri i prodotti, quindi trova il connettore che desideri utilizzare.
  3. Scegli Continua con la sottoscrizione, quindi accedi al tuo account AWS, se richiesto.
  4. Scegli Continua con la configurazione. Se questa opzione è disattivata e non puoi selezionarla, assicurati di leggere i Termini e le condizioni. Scegli Accetta i termini, quindi attendi che il pulsante Continua con la configurazione diventi disponibile.
  5. Dall'elenco a discesa, scegli Metodo di distribuzione e Versione software. Se non sei sicuro della versione da selezionare, scegli la versione più recente.
  6. Scegli Continua con l'avvio, quindi scegli Istruzioni di utilizzo.
  7. Nella finestra pop-up, scegli Attiva il connettore Glue da AWS Glue Studio.
  8. (Facoltativo) Per installare solo il connettore, scegli Attiva solo connettore. Per ulteriori informazioni, consulta la sezione Using connectors and connections with AWS Glue Studio. Se invece utilizzi connettori personalizzati, consulta la sezione Developing custom connectors.

Nota: puoi ripetere questi passaggi anche se in precedenza hai effettuato la sottoscrizione al connettore.

Problemi con il tuo ruolo IAM

Quando tenti di effettuare la sottoscrizione a un connettore in Marketplace AWS ricevi un messaggio di errore relativo alle autorizzazioni di AWS Identity and Access Management (IAM) simile al seguente:

"You do not have the right permissions to make this request. Some controls have been disabled because you are missing the correct permission(s). The missing permission(s) are: aws-marketplace:Subscribe".

Per risolvere questo problema, aggiungi una policy IAM all'utente IAM che ha ricevuto l'errore. In Marketplace AWS, aggiungi le seguenti policy IAM al tuo utente IAM:

  • Per concedere le autorizzazioni che permettano di visualizzare le sottoscrizioni senza modificarle, scegli AWSMarketplaceRead-only.
  • Per concedere le autorizzazioni di sottoscrizione e annullamento della sottoscrizione, scegli AWSMarketplaceManageSubscriptions.
  • Per concedere il completo controllo delle tue sottoscrizioni, scegli AWSMarketplaceFullAccess.

Per ulteriori informazioni, consulta la sezione Controlling access to AWS Marketplace subscriptions.

Errori AccessDeniedException

Nei log del processo AWS Glue viene visualizzato un messaggio di errore AccessDeniedException simile al seguente:

"An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:sts::xxxxxxxxxxxx:assumed-role/<IamRole>/GlueJobRunnerSession is not authorized to perform: ecr:GetAuthorizationToken on resource: * because no identity-based policy allows the ecr:GetAuthorizationToken action
Glue ETL Marketplace - failed to download connector, activation script exited with code 1
LAUNCH ERROR | Glue ETL Marketplace - failed to download connector. Please refer logs for details".

Questo errore si verifica quando il ruolo IAM associato al tuo processo AWS Glue non dispone di autorizzazioni sufficienti a eseguire l'operazione GetAuthorizationToken.

Per risolvere questo problema, assegna al tuo processo AWS Glue l'autorizzazione ecr:GetAuthorizationToken:

  1. Apri la console IAM.
  2. Scegli il ruolo IAM che utilizzerai nel processo AWS Glue.
  3. Scegli Collega policy.
  4. In Filtra policy, inserisci AmazonEC2ContainerRegistryReadOnly, quindi scegli questa policy.
  5. Scegli Collega policy.

Dopo aver collegato la policy richiesta al ruolo IAM, esegui nuovamente il processo AWS Glue.

Per ulteriori informazioni, consulta le sezioni AmazonEC2ContainerRegistryReadOnly, Aggiunta di autorizzazioni per identità IAM (console) e Impostazione delle autorizzazioni IAM per AWS Glue.

Problemi di rete – Nessun percorso di rete dal VPC

La configurazione di rete potrebbe non essere adeguata per il corretto funzionamento dei connettori AWS Glue quando viene utilizzata in un processo AWS Glue. Potresti visualizzare un messaggio di errore simile al seguente:

"botocore.exceptions.ConnectTimeoutError: Connect timeout on endpoint URL: "https://api.ecr.us-east-1.amazonaws.com/"Glue ETL Marketplace - failed to download connector, activation script exited with code 1
LAUNCH ERROR | Glue ETL Marketplace - failed to download connector. Please refer logs for details.
Exception in thread "main"
java.lang.Exception: Glue ETL Marketplace - failed to download connector".

Il messaggio di errore nell'esempio precedente indica che nessun percorso di rete proveniente dal cloud privato virtuale (VPC) contiene i componenti del processo per il repository Amazon Elastic Container Registry (Amazon ECR). Il repository Amazon ECR contiene le immagini per i connettori. AWS Glue archivia tutti i connettori in un repository Amazon ECR nella Regione AWS us-east-1. Se il processo AWS Glue desidera utilizzare un connettore, dovrà scaricarlo da questa regione.

Quando viene aggiunta una connessione a un processo AWS Glue, bisogna stabilire un percorso di rete che consenta il flusso del traffico da o verso il servizio. AWS Glue utilizza indirizzi IP privati per comunicare con i componenti del processo e i servizi, come Amazon ECR. Questo errore può verificarsi se la connessione utilizza una sottorete pubblica con un gateway Internet nella sua tabella di routing. Per ulteriori informazioni, consulta la sezione Configurazione per l'accesso a Internet.

Quando si crea la connessione, le informazioni di rete (come VPC, sottorete e gruppo di sicurezza) sono facoltative. Se si crea la connessione solo con il connettore e una chiave AWS Secrets Manager, il processo AWS Glue utilizzerà un gateway NAT interno. Il processo non si basa su un gateway NAT presente nel tuo account.

Per risolvere questo problema, scegli una delle seguenti soluzioni e incorporala nella progettazione della rete.

Crea e collega un gateway NAT alla sottorete di connessione

Non usare un gateway Internet. Invece, crea e collega un gateway NAT alla sottorete di connessione:

  1. Assegna al tuo account un indirizzo IP elastico non collegato. Assicurati di associare l'indirizzo IP al gateway NAT.
  2. Crea un gateway NAT, quindi scegli una sottorete pubblica e l'indirizzo IP elastico per creare il gateway NAT in una sottorete pubblica.
  3. Crea una sottorete privata senza un routing del gateway Internet e una tabella di routing correlata. Nella tabella di routing aggiungi una regola con 0.0.0.0/0 che punti verso il gateway NAT. Oppure modifica una delle sottoreti esistenti per utilizzare la tabella di routing con il routing del gateway NAT. Assicurati che non ci siano routing del gateway Internet utilizzati con il routing del gateway NAT.
  4. Modifica la sottorete della connessione AWS Glue in modo da utilizzare la sottorete privata.
  5. Esegui nuovamente il processo AWS Glue per controllare che l'errore non si ripresenti.

Non utilizzare le informazioni VPC nella connessione

Non includere le informazioni VPC nella connessione. Utilizza invece un gateway NAT Internet:

  1. Crea una nuova connessione per il tuo connettore in AWS Glue Studio.
  2. Specifica solo la chiave Secrets Manager. Non aggiungere nessuna opzione VPC, in modo che AWS Glue utilizzi il NAT interno anziché la sottorete.
  3. Modifica il processo AWS Glue in modo da utilizzare la nuova connessione, quindi esegui nuovamente il processo.

Per le configurazioni di rete private, crea un endpoint VPC

Usa un endpoint VPC con la configurazione della tua rete privata anziché un gateway NAT. Per utilizzare un endpoint VPC, completa i seguenti passaggi.

Crea un endpoint VPC

Innanzitutto, crea un endpoint API Amazon ECR. Quindi, crea un endpoint VPC per il servizio com.amazonaws.<region>.ecr.dkr, quindi un endpoint Amazon Simple Storage Service (Amazon S3).

Crea l'endpoint API Amazon ECR:

  1. Apri la console Amazon VPC.
  2. Dal pannello di navigazione, seleziona Endpoint.
  3. Scegli Crea endpoint, quindi aggiungi un nome per il tuo endpoint API Amazon ECR.
  4. In Categoria servizio, scegli Servizi AWS.
  5. In Servizi, aggiungi il filtro ECR, quindi scegli com.amazonaws.<region>ecr.api.
  6. In VPC, seleziona il VPC in cui desideri creare l'endpoint. In Impostazioni aggiuntive, scegli Abilita nome DNS.
  7. In Sottoreti, scegli la zona di disponibilità in cui hai creato la nuova sottorete.
  8. In ID sottorete, scegli il Nome della sottorete.
  9. In Gruppi di sicurezza, scegli il tuo gruppo di sicurezza.
  10. In Policy, scegli Accesso completo per consentire tutte le operazioni su tutte le risorse tramite l'endpoint VPC secondo tutti i principi.
  11. (Facoltativo) Aggiungi un tag.
  12. Scegli Crea endpoint.

Completa gli stessi passaggi per creare un altro endpoint VPC con il nome del servizio com.amazonaws.<region>.ecr.dkr.

Completa i seguenti passaggi per creare l'endpoint Amazon S3:

  1. Apri la console Amazon VPC.
  2. Dal pannello di navigazione, seleziona Endpoint.
  3. Scegli Crea endpoint, quindi aggiungi un nome per l'endpoint.
  4. In Categoria servizio, scegli Servizi AWS.
  5. In Servizi, aggiungi il filtro Type:Gateway, quindi scegli com.amazonaws.<region>.s3.
  6. In VPC, scegli il VPC in cui desideri creare l'endpoint.
  7. In Tabelle di routing, scegli le tabelle di routing.
  8. In Policy, scegli Accesso completo per consentire tutte le operazioni su tutte le risorse tramite l'endpoint VPC secondo tutti i principi.
  9. (Facoltativo) Aggiungi un tag.
  10. Scegli Crea endpoint.

Effettua la sottoscrizione e configura i connettori

Se hai già effettuato la sottoscrizione e configurato il connettore in AWS Glue, passa alla sezione Crea connessione AWS Glue.

Se non hai effettuato la sottoscrizione e non hai configurato il connettore in AWS Glue, segui i passaggi descritti nella sezione Sottoscrizione ai connettori Marketplace AWS. Nella finestra pop-up Istruzioni di utilizzo, scegli Activate the Glue connector from AWS Glue Studio per accedere alla pagina Create Glue Connection.

Crea connessione AWS Glue

Se hai già aggiunto il connettore alla console AWS Glue, vai su Connessioni e scegli il connettore. Quindi scegli Crea connessione.

Se hai seguito i passaggi precedenti per effettuare la sottoscrizione e configurare i connettori, completa i passaggi seguenti per creare la tua connessione:

  1. Apri la console AWS Glue.
  2. Nella pagina Crea connessione Glue, aggiungi un Nome per la connessione.
  3. In Opzioni di rete, scegli il tuo VPC, la sottorete e i gruppi di sicurezza.
  4. Scegli Crea connessione e attiva connettore.

Problemi di rete – Troppe connessioni nel processo AWS Glue

Se riscontri problemi di rete perché il tuo processo AWS Glue ha troppe connessioni, riceverai il seguente messaggio di errore nei log del processo:

"INFO - Glue ETL Marketplace - Start downloading connector jars for connection: <connection name>test connection feature: "Caused by: com.amazonaws.services.glue.exceptions.InvalidInputException: Connection: does not exist"
LAUNCH ERROR | Glue ETL Marketplace - failed to download connector. Please refer logs for details".

AWS Glue supporta una connessione per ogni processo o endpoint di sviluppo. Se specifichi più di una connessione in un processo, AWS Glue utilizzerà la prima connessione. Se devi accedere a più di un VPC, consulta la sezione Connect to and run ETL jobs across multiple VPCs using a dedicated AWS Glue VPC.

AWS UFFICIALE
AWS UFFICIALEAggiornata un mese fa