Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
Como soluciono o erro "Unable to execute HTTP request... connect timed out" no AWS Glue?
Minha tarefa do AWS Glue falha com o erro "Unable to execute HTTP request... connect timed out".
Breve descrição
Quando você executa uma tarefa do AWS Glue com uma conexão vinculada, ela pode falhar ao tentar se conectar a outro endpoint de serviço. Por exemplo, ela pode tentar se conectar a um endpoint de serviço, como o Amazon Simple Storage Service (Amazon S3) e o AWS Key Management Service (AWS KMS). A tarefa falhará se a rota de rede para esse endpoint de serviço estiver ausente na sub-rede usada na conexão do AWS Glue. A mensagem de erro "Unable to execute HTTP request" ou "failed: connect timed out" aparece nos logs de tarefa do AWS Glue.
Você vê esse erro pelos seguintes motivos:
- A sub-rede configurada em sua conexão do AWS Glue contém um gateway da internet ou nenhuma rota na tabela de rotas para o endpoint de serviço que falhou.
- Quando você executa sua tarefa do AWS Glue, ela interage com as APIs do AWS Glue. Isso acontece se você usar qualquer operação que exija a listagem de tabelas do Catálogo de Dados do AWS Glue, a criação de novas tabelas ou a leitura de uma. Quando a tarefa precisa acessar a API do AWS Glue, ela envia uma solicitação de API REST HTTP. Da mesma forma, você pode fazer outras chamadas de API de serviço para o Amazon S3, Amazon Simple Notification Service (Amazon SNS) ou AWS Secret Manager. Quando você faz a chamada de API, a tarefa tenta se conectar a esses endpoints de serviço e a solicitação falha com um erro de tempo limite. Isso acontece porque, embora a tarefa possa enviar a solicitação, ela não recebeu a resposta dentro do período de tempo limite.
O AWS Glue cria interfaces de rede elásticas na sub-rede especificada na conexão do AWS Glue. Para obter mais informações, consulte Como configurar o acesso de rede ao armazenamento de dados.
Os recursos em tarefas do AWS Glue têm somente endereços IP privados. Isso significa que as tarefas não conseguem se conectar a outros recursos usando um gateway da internet. A tarefa do AWS Glue tenta enviar solicitações para o endpoint público do serviço da AWS, mas essas solicitações vêm de um endereço IP privado. Portanto, o endpoint não consegue enviar uma resposta de volta e a tarefa falha com a mensagem de erro "connect timed out".
Resolução
A mensagem de erro que você encontra nos logs é semelhante a uma das seguintes, dependendo do seu caso de uso:
API REST do AWS Glue:
AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: com.amazonaws.SdkClientException: Unable to execute HTTP request: Connect to glue.ap-southeast-1.amazonaws.com:443
Solicitação do Amazon S3:
Unable to execute HTTP request: Connect to s3BucketName.us-east-1.amazonaws.com:443 [s3BucketName.s3.us-east-1.amazonaws.com/xx.xxx.xx.xxx ] failed: connect timed out
Solicitação do AWS KMS:
Unable to execute HTTP request: Connect to kms.us-east-1.amazonaws.com:443 [kms.us-east-1.amazonaws.com/xx.xxx.xx.xxx ] failed: connect timed out
Confirme se o tráfego entre a tarefa do AWS Glue e o serviço para o qual a tarefa está tentando fazer uma solicitação de API é permitido. É possível verificar isso usando um endpoint de nuvem privada virtual (VPC) ou usando um gateway NAT.
Usando um endpoint da VPC
Use o console da Amazon Virtual Private Cloud (Amazon VPC) para criar um endpoint de interface da VPC para o serviço do qual você recebeu o erro. Por exemplo, a tarefa do AWS Glue pode falhar e gerar um erro ao tentar acessar a API do AWS Glue. Crie o endpoint da interface para o AWS Glue na mesma sub-rede VPC configurada para sua conexão com o AWS Glue. Isso confirma que o tráfego que deveria se conectar ao endpoint do AWS Glue faz isso usando essa interface.
- Abra o console da Amazon VPC.
- No painel de navegação, escolha Endpoints.
- Selecione Criar endpoint.
- Em Categoria de serviço, selecione Serviços da AWS.
- Em Nome do serviço, escolha o serviço ao qual você está se conectando. Para mais informações, consulte Serviços da AWS que se integram com AWS PrivateLink.
- Em VPC, escolha a VPC da qual você deseja acessar o serviço da AWS.
- Para criar um endpoint de interface para o Amazon S3, você deve limpar as Configurações adicionais e Ativar o nome DNS. Isso ocorre porque o Amazon S3 não oferece suporte a DNS privado para endpoints de interface VPC.
- Em Sub-redes, escolha uma sub-rede por zona de disponibilidade (AZ) a partir da qual você deseja acessar o serviço da AWS.
- Em Grupo de segurança, escolha um grupo de segurança para associar às interfaces de rede do endpoint. As regras do grupo de segurança devem permitir recursos que usarão o endpoint da VPC. O endpoint da VPC se comunica com o serviço da AWS, que, por sua vez, se comunica com a interface de rede do endpoint.
- Em Política, escolha Acesso total. Isso permite todas as operações de todas as entidades principais em todos os recursos no endpoint da VPC. Ou escolha Personalizado para anexar uma política de endpoint da VPC. Essa política controla as permissões que as entidades principais têm para realizar ações em recursos no endpoint da VPC. Essa opção está disponível somente se o serviço oferecer suporte a políticas de endpoint da VPC. Para mais informações, consulte Políticas de endpoint da VPC.
- (Opcional) Para adicionar uma tag, escolha Adicionar nova tag e insira a chave e o valor da tag.
- Selecione Criar endpoint.
Usando um gateway NAT
O AWS NAT Gateway conecta recursos de forma privada e segura usando a Internet privada. Crie uma sub-rede privada e direcione sua conexão do AWS Glue para uma sub-rede privada. Ao mesmo tempo, crie um gateway NAT em uma das sub-redes públicas da sua VPC do AWS Glue. Configure a tabela de rotas da sua sub-rede de conexão do AWS Glue para que, se o tráfego for roteado para a Internet, ele o faça usando esse gateway NAT. Para mais informações, consulte Como configuro um gateway NAT para uma sub-rede privada na Amazon VPC? e Gateways NAT.
Observação: se você estiver usando um gateway NAT, o tráfego para seu serviço passará pela Internet.
Solução de problemas adicional
- Verifique se o grupo de segurança de conexão e a ACL de rede de sub-rede permitem que o AWS Glue envie tráfego ao fazer a solicitação de API.
- Para testar o problema de conectividade, execute uma instância do EC2 na mesma VPC, sub-rede e grupo de segurança que você usou ao criar a conexão do AWS Glue. Em seguida, execute o comando a seguir para confirmar a conectividade com o endpoint de serviço:
telnet <glue endpoint url> 443 dig <glue endpoint url>
Exemplos:
$ telnet glue.us-east-1.amazonaws.com 443 $ dig glue.us-east-1.amazonaws.com
Informações relacionadas
Vídeos relacionados


Conteúdo relevante
- feita há um ano
- feita há um ano
AWS OFICIALAtualizada há um ano
AWS OFICIALAtualizada há 10 meses