Resolver problemas comuns - AWS Data Pipeline

AWS Data Pipeline não está mais disponível para novos clientes. Os clientes existentes do AWS Data Pipeline podem continuar usando o serviço normalmente. Saiba mais

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Resolver problemas comuns

Este tópico fornece vários sintomas de problemas do AWS Data Pipeline e as etapas recomendadas para resolvê-los.

Pipeline preso em status pendente

Um pipeline que aparece travado com o status PENDING indica que ele ainda não foi ativado ou que a ativação falhou devido a um erro na definição do pipeline. Certifique-se de que você não recebeu nenhum erro quando enviou o pipeline usando a CLI do AWS Data Pipeline ou quando tentou salvar ou ativar o pipeline usando o console do AWS Data Pipeline. Além disso, verifique se o pipeline tem uma definição válida.

Para visualizar a definição do pipeline na tela usando a CLI:

aws datapipeline --get-pipeline-definition --pipeline-id df-EXAMPLE_PIPELINE_ID

Certifique-se de que a definição de pipeline foi concluída, verifique as chaves de fechamento, as vírgulas necessárias, as referências ausentes e outros erros de sintaxe. É melhor usar um editor de texto que pode validar visualmente a sintaxe de arquivos JSON.

Componente de pipeline preso no status Waiting for Runner

Se o pipeline está no estado SCHEDULED e uma ou mais tarefas aparecem presas no estado WAITING_FOR_RUNNER, assegure-se de que você configurou um valor válido para os campos runsOn ou workerGroup para essas tarefas. Se ambos os valores estão vazios ou ausentes, a tarefa não pode ser iniciada porque não há associação entre a tarefa e um operador para executar as tarefas. Nesta situação, você definiu o trabalho, mas não definiu o computador que fará esse trabalho. Se aplicável, verifique se o valor workerGroup atribuído ao componente do pipeline tem exatamente o mesmo nome e caso do valor workerGroup que você configurou para Task Runner.

nota

Se você fornecer um valor de runsOn e workerGroup existir, workerGroup será ignorado.

Outra possível causa desse problema é que o endpoint e a chave de acesso fornecidas para Task Runner não são os mesmos que o console do AWS Data Pipeline ou computador em que as ferramentas da CLI da AWS Data Pipeline estão instaladas. Você pode criar novos pipelines, sem erros visíveis, mas o Task Runner consulta o local errado devido à diferença de credenciais, ou consulta o local correto com permissões insuficientes para identificar e executar o trabalho especificado pela definição do pipeline.

Componente de pipeline preso no status WAITING_ON_DEPENDENCIES

Se o pipeline está no estado SCHEDULED e uma ou mais tarefas aparecem presas no estado WAITING_ON_DEPENDENCIES, certifique-se de que as precondições iniciais do seu pipeline foram atendidas. Se as precondições do primeiro objeto na cadeia lógica não forem atendidas, nenhum dos objetos que dependem do primeiro objeto sairá do estado WAITING_ON_DEPENDENCIES.

Por exemplo, considere o trecho a seguir de uma definição de pipeline. Nesse caso, o objeto InputData tem uma precondição 'Ready' especificando que os dados devem existir antes que o objeto InputData seja concluído. Se os dados não existirem, o objeto InputData continuará no estado WAITING_ON_DEPENDENCIES, esperando os dados especificados pelo campo de caminho para se tornar disponível. Todos os objetos que têm a mesma dependência continuarão no estado WAITING_ON_DEPENDENCIES esperando que o objeto InputData alcance o estado FINISHED.

{ "id": "InputData", "type": "S3DataNode", "filePath": "s3://elasticmapreduce/samples/wordcount/wordSplitter.py", "schedule":{"ref":"MySchedule"}, "precondition": "Ready" }, { "id": "Ready", "type": "Exists" ...

Além disso, verifique se seus objetos têm as permissões adequadas para acessar os dados. No exemplo acima, se as informações no campo de credenciais não tivessem permissões para acessar os dados especificados no campo do caminho, o objeto InputData ficaria preso no estado WAITING_ON_DEPENDENCIES, pois não poderia acessar os dados especificados pelo campo de caminho, mesmo se esses dados existissem.

Também é possível que um recurso comunicando-se com o Amazon S3 não tenha um endereço IP público associado a ele. Por exemplo, um Ec2Resource em uma sub-rede pública deve ter um endereço IP público associado a ela.

Por fim, em determinadas condições, instâncias de recursos podem atingir o estado WAITING_ON_DEPENDENCIES muito antes que suas atividades associadas sejam programadas para iniciar, o que pode oferecer a impressão de que o recurso ou a atividade não estão funcionando.

A execução não inicia quando programada

Verifique se você escolheu o tipo de programação correta que determina se sua tarefa começa no início do intervalo de programação (estilo Cron) ou no final do intervalo de programação (estilo de séries temporais).

Além disso, verifique se você especificou as datas corretamente em seus objetos de programação e se os valores startDateTime endDateTime estão no formato UTC, como neste exemplo:

{ "id": "MySchedule", "startDateTime": "2012-11-12T19:30:00", "endDateTime":"2012-11-12T20:30:00", "period": "1 Hour", "type": "Schedule" },

Os componentes do pipeline são executados na ordem errada

Você pode perceber que os horários de início e término dos seus componentes de pipeline são executados na ordem errada ou em uma sequência diferente da esperada. É importante compreender que componentes de pipeline podem começar a ser executados simultaneamente se suas precondições forem atendidas no tempo de inicialização. Em outras palavras, os componentes de pipeline não são executados sequencialmente por padrão. Se você precisa de uma determinada ordem de execução, deve controlar essa ordem com precondições e campos dependsOn.

Verifique se você está usando o campo dependsOn preenchido com uma referência para os componentes corretos de pré-requisitos e se todos os ponteiros necessários entre os componentes estão presentes para alcançar a ordem que você precisa.

O cluster do EMR falha com erro: o token de segurança incluído na solicitação é inválido

Verifique suas funções do perfil do IAM, políticas e relações de confiança conforme descrito em Funções do IAM para o AWS Data Pipeline.

Permissões insuficientes para acessar recursos

As permissões que você define em funções do perfil do IAM determinam se o AWS Data Pipeline pode acessar os clusters do EMR e as instâncias do EC2 para executar os pipelines. Além disso, o IAM; fornece o conceito de relacionamentos de confiança que vão além para permitir a criação dos recursos em seu nome. Por exemplo, quando você cria um pipeline que usa uma instância do EC2 para executar um comando para mover dados, o AWS Data Pipeline pode provisionar essa instância do EC2 para você. Se você encontrar problemas, especialmente aqueles que envolvem recursos que você pode acessar manualmente, mas o AWS Data Pipeline não pode, verifique suas funções do perfil do IAM, políticas e relacionamentos de confiança, como descrito em Funções do IAM para o AWS Data Pipeline.

Código de status: 400 Error Code: PipelineNotFoundException

Este erro significa que as funções do IAM padrão podem não ter as permissões necessárias para que o AWS Data Pipeline funcione corretamente. Para obter mais informações, consulte Funções do IAM para o AWS Data Pipeline.

Criar um pipeline provoca um erro de token de segurança

Você recebe o seguinte erro quando tenta criar um pipeline:

Falha ao criar pipeline com 'pipeline_name'. Erro: UnrecognizedClientException - O token de segurança incluído na solicitação é inválido.

Não é possível ver detalhes do pipeline no console

O filtro do pipeline do console do AWS Data Pipeline aplica-se à data de início programada de um pipeline, sem levar em consideração quando o pipeline foi enviado. É possível enviar um novo pipeline usando uma data de início programada que ocorre no passado, que o filtro de data padrão pode não exibir. Para ver os detalhes do pipeline, altere o filtro de data a fim de assegurar que a data de início programada do pipeline esteja no intervalo de datas do filtro.

Erro no código de status do executor remoto: 404, AWS Service: Amazon S3

Este erro significa que o Task Runner não pode acessar seus arquivos no Amazon S3. Verificar se:

  • Suas credenciais estão definidas corretamente

  • O bucket do Amazon S3 que você está tentando acessar existe

  • Você está autorizado a acessar o bucket do Amazon S3

Acesso negado – Não autorizado para executar a função datapipeline:

Nos logs do Task Runner, você pode ver um erro semelhante ao seguinte:

  • Código do status do ERRO: 403

  • Serviço da AWS: DataPipeline

  • Código de Erro da AWS: AccessDenied

  • Mensagem de erro da AWS: Usuário: arn:aws:sts::XXXXXXXXXXXX:federated-user/i-XXXXXXXX não está autorizado a executar: datapipeline: PollForTask.

nota

Nesta mensagem de erro, PollForTask pode ser substituído por nomes de outras permissões do AWS Data Pipeline.

Esta mensagem de erro indica que a função do perfil do IAM especificada precisa de permissões adicionais necessárias para interagir com o AWS Data Pipeline. Certifique-se de que sua política do perfil do IAM contenha as seguintes linhas, onde PollForTask é substituído pelo nome da permissão que você deseja adicionar (use* para conceder todas as permissões). Para obter mais informações sobre como criar um novo perfil do IAM e aplicar uma política a ele, consulte Gerenciar políticas do IAM no guia Usar IAM.

{ "Action": [ "datapipeline:PollForTask" ], "Effect": "Allow", "Resource": ["*"] }

AMIs do Amazon EMR mais antigas podem criar dados falsos em arquivos CSV grandes

Em AMIs do Amazon EMR anteriores a 3.9 (3.8 e inferior), o AWS Data Pipeline usa um InputFormat personalizado para ler e gravar arquivos CSV para uso com trabalhos do MapReduce. Isso é usado quando o serviço prepara tabelas de e para o Amazon S3. Um problema com este InputFormat foi descoberto, em que a leitura de registros de grandes arquivos CSV pode resultar na produção de tabelas que não são corretamente copiadas. Este problema foi corrigido em versões posteriores do Amazon EMR. Use AMI do Amazon EMR 3.9 ou um Amazon EMR com versão 4.0.0 ou superior.

Aumentar limites do AWS Data Pipeline

Ocasionalmente, você pode exceder os limites de sistema específicos do AWS Data Pipeline. Por exemplo, o limite de pipeline padrão é de 20 pipelines com 50 objetos em cada um deles. Se você descobrir que vai precisar de mais pipelines do que o limite, considere mesclar vários pipelines para criar um número menor de pipelines com mais objetos em cada um deles. Para obter mais informações sobre os limites do AWS Data Pipeline, consulte Limites do AWS Data Pipeline. No entanto, se você não conseguir contornar os limites usando a técnica de mesclar pipelines, solicite um aumento na sua capacidade usando este formulário: Aumento de limite de pipeline de dados.