Como solucionar erros de conexão do AWS Marketplace em tarefas de ETL do AWS Glue?

10 minuto de leitura
0

Quando uso conectores do AWS Marketplace no AWS Glue, recebo erros nos logs.

Resolução

Os conectores não estão aparecendo

Você assina um conector do AWS Marketplace, mas não consegue encontrar o conector na página de conectores do AWS Glue Studio.

Para solucionar esse problema, realize as etapas a seguir:

  1. Abra o AWS Marketplace.
  2. Selecione Descobrir produtos e, em seguida, encontre o conector que deseja usar.
  3. Selecione Continuar para assinar e, em seguida, faça login na sua conta da AWS, se solicitado.
  4. Selecione Continuar para configurar. Se essa opção estiver acinzentada e você não conseguir selecioná-la, leia os Termos e Condições. Selecione Aceitar termos e, em seguida, aguarde até que o botão Continuar para configurar se torne disponível.
  5. Na lista suspensa, selecione Método de entrega e Versão do software. Se não tiver certeza de qual versão escolher, escolha a versão mais recente.
  6. Selecione Continuar para inicialização e, em seguida, selecione Instrução de uso.
  7. Na janela pop-up, selecione Ativar o conector do Glue do AWS Glue Studio.
  8. (Opcional) Para instalar somente o conector, selecione Ativar somente o conector. Para obter mais informações, consulte Usar conectores e conexões com o AWS Glue Studio. Se você usa conectores personalizados, consulte Desenvolver conectores personalizados.

Observação: você pode repetir essas etapas mesmo que tenha se inscrito anteriormente no conector.

Problemas com seu perfil do IAM

Ao tentar assinar um conector no AWS Marketplace, você recebe uma mensagem de erro de permissões do AWS Identity and Access Management (IAM) similar à seguinte:

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

Para solucionar esse problema, adicione uma política do IAM ao usuário do IAM que recebeu o erro. Para o AWS Marketplace, adicione as seguintes políticas do IAM ao seu usuário do IAM:

  • Para conceder permissões para visualizar assinaturas, mas não alterá-las, selecione AWSMarketplaceRead-only.
  • Para conceder permissões para assinar e cancelar a assinatura, selecione AWSMarketplaceManageSubscriptions.
  • Para conceder controle total de suas assinaturas, selecione AWSMarketplaceFullAccess.

Para obter mais informações, consulte Controlar o acesso aos recursos da AWS.

Erros AccessDeniedException

Nos logs da tarefa do AWS Glue, você recebe uma mensagem de erro AccessDeniedException similar à seguinte:

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

Esse erro ocorre quando o perfil do IAM associado à tarefa do AWS Glue não tem permissões suficientes ao executar a operação GetAuthorizationToken.

Para solucionar esse problema, dê à sua tarefa do AWS Glue a permissão ecr:GetAuthorizationToken:

  1. Abra o console do IAM.
  2. Selecione o perfil do IAM que você usa na tarefa do AWS Glue.
  3. Selecione Anexar políticas.
  4. Em Filtrar políticas, insira AmazonEC2ContainerRegistryReadOnly e, em seguida, selecione essa política.
  5. Selecione Anexar política.

Depois de anexar a política necessária ao perfil do IAM, execute a tarefa do AWS Glue novamente.

Para obter mais informações, consulte AmazonEC2ContainerRegistryReadOnly, Adicionar permissões de identidade do IAM (console) e Configurar permissões do IAM para o AWS Glue.

Problemas de rede — nenhum caminho de rede a partir da VPC

Sua configuração de rede pode não ser adequada para que os conectores do AWS Glue funcionem corretamente quando usados em uma tarefa do AWS Glue. Você poderá receber uma mensagem de erro semelhante à seguinte:

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

A mensagem de erro do exemplo anterior indica que nenhum caminho de rede da nuvem privada virtual (VPC) contém os componentes da tarefa para o repositório do Amazon Elastic Container Registry (Amazon ECR). O repositório do Amazon ECR contém as imagens dos conectores. O AWS Glue armazena todos os conectores em um repositório do Amazon ECR na região us-east-1 da AWS. Se a tarefa do AWS Glue quiser usar um conector, ela deverá baixá-lo dessa região.

Quando uma conexão é adicionada a uma tarefa do AWS Glue, é preciso estabelecer uma rota de rede que permita que o tráfego flua de ou para o serviço. O AWS Glue usa endereços IP privados para se comunicar com os componentes da tarefa e dos serviços, como o Amazon ECR. Esse erro pode ocorrer se a conexão usar uma sub-rede pública com um gateway da Internet em sua tabela de rotas. Para obter mais informações, consulte Configuração para acesso à internet.

Quando você cria a conexão, as informações de rede, como VPC, sub-rede e grupo de segurança, são opcionais. Se você criar a conexão apenas com o conector e uma chave do AWS Secrets Manager, a tarefa do AWS Glue usará um gateway NAT interno. A tarefa não depende de um gateway NAT na sua conta.

Para solucionar esse problema, escolha uma das soluções a seguir e incorpore-a ao seu design de rede.

Criar e anexar um gateway NAT à sub-rede de conexão

Não use um gateway de Internet. Em vez disso, crie e anexe um gateway NAT à sub-rede de conexão:

  1. Aloque um endereço IP elástico não anexado para a conta. Certifique-se de associar o endereço IP ao gateway NAT.
  2. Crie um gateway NAT e, em seguida, escolha uma sub-rede pública e o endereço IP elástico para criar o gateway NAT em uma sub-rede pública.
  3. Crie uma sub-rede privada sem uma rota de gateway da Internet e uma tabela de rotas relacionada. Na tabela de rotas, adicione uma regra com 0.0.0.0/0 que aponte para o gateway NAT. Ou edite uma das sub-redes existentes para usar a tabela de rotas com a rota do gateway NAT. Certifique-se de que não haja nenhuma rota de gateway da Internet usada com a rota do gateway NAT.
  4. Corrija a sub-rede da conexão do AWS Glue para usar a sub-rede privada.
  5. Execute a tarefa do AWS Glue novamente para confirmar se o erro não ocorre novamente.

Não use informações da VPC na conexão

Não inclua informações da VPC na conexão. Em vez disso, use um gateway NAT da Internet:

  1. Crie uma nova conexão para o conector no AWS Glue Studio.
  2. Especifique somente a chave do Secrets Manager. Não adicione nenhuma opção da VPC, assim o AWS Glue usará o NAT interno em vez da sub-rede.
  3. Edite a tarefa do AWS Glue para usar a nova conexão e, em seguida, execute a tarefa novamente.

Para configurações de rede privada, crie um endpoint da VPC

Em vez de usar um gateway NAT, use um endpoint da VPC com sua configuração de rede privada. Para usar um endpoint da VPC, realize as etapas a seguir.

Criar um endpoint da VPC

Primeiro, crie um endpoint de API do Amazon ECR. Em seguida, crie um endpoint da VPC para o serviço com.amazonaws.<region>.ecr.dkr e, em seguida, um endpoint do Amazon Simple Storage Service (Amazon S3).

Crie o endpoint de API do Amazon ECR:

  1. Abra o console da Amazon VPC.
  2. No painel de navegação, selecione Endpoints.
  3. Selecione Criar endpoint e, em seguida, adicione um nome de endpoint para seu endpoint de API do Amazon ECR.
  4. Em Categoria de serviço, selecione Serviços da AWS.
  5. Em Serviços, adicione o filtro ECR e selecione com.amazonaws.<region>ecr.api.
  6. Em VPC, selecione a VPC na qual você deseja criar o endpoint. Em Configurações adicionais, selecione Ativar nome DNS.
  7. Em Sub-redes, selecione a zona de disponibilidade na qual você criou a nova sub-rede.
  8. Em ID da sub-rede, escolha o Nome da sub-rede.
  9. Em Grupos de segurança, escolha seu grupo de segurança.
  10. Em Política, selecione Acesso total para permitir todas as operações por todos os princípios em todos os recursos no endpoint da VPC.
  11. (Opcional) Adicione uma tag.
  12. Selecione Criar endpoint.

Realize as mesmas etapas para criar outro endpoint da VPC para o nome de serviço com.amazonaws.<region>.ecr.dkr.

Realize as etapas a seguir para criar o endpoint do Amazon S3:

  1. Abra o console da Amazon VPC.
  2. No painel de navegação, selecione Endpoints.
  3. Selecione Criar endpoint e, em seguida, adicione um nome de endpoint.
  4. Em Categoria de serviço, selecione Serviços da AWS.
  5. Em Serviços, adicione o filtro Type:Gateway e, em seguida, selecione com.amazonaws.<region>.s3.
  6. Em VPC, escolha a VPC na qual você deseja criar o endpoint.
  7. Em Tabelas de rotas, selecione suas tabelas de rotas.
  8. Em Política, selecione Acesso total para permitir todas as operações por todos os princípios em todos os recursos no endpoint da VPC.
  9. (Opcional) Adicione uma tag.
  10. Selecione Criar endpoint.

Assinar e configurar conectores

Se você já assinou e configurou seu conector no AWS Glue, avance para a seção Crie uma conexão com o AWS Glue.

Se você não assinou e configurou seu conector no AWS Glue, siga as etapas em Subscribing to AWS Marketplace connectors. Na janela pop-up Instruções de uso, selecione Ativar o conector do Glue do AWS Glue Studio para acessar a página Criar conexão com o Glue.

Criar uma conexão com o AWS Glue

Se você já adicionou seu conector no console do AWS Glue, navegue até Conexões e selecione seu conector. Em seguida, selecione Criar conexão.

Se você seguiu as etapas anteriores para assinar e configurar conectores, realize as etapas a seguir para criar uma conexão:

  1. Abra o console do AWS Glue.
  2. Na página Cria conexão com o Glue, adicione um Nome de conexão.
  3. Em Opções de rede, selecione sua VPC e os grupos de segurança e sub-redes.
  4. Selecione Criar conexão e ativar o conector.

Problemas de rede — muitas conexões na tarefa do AWS Glue

Se você encontrar problemas de rede porque sua tarefa do AWS Glue tem muitas conexões, você receberá a seguinte mensagem de erro nos logs da tarefa:

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

O AWS Glue oferece suporte a uma conexão por tarefa ou por endpoint de desenvolvimento. Se você especificar mais de uma conexão em uma tarefa, o AWS Glue usará a primeira conexão. Se precisar acessar mais de uma VPC, consulte Conectar-se e executar trabalhos de ETL em várias VPCs usando uma VPC dedicada do AWS Glue.

AWS OFICIAL
AWS OFICIALAtualizada há 2 meses