Solução de problemas AWS IoT Analytics - AWS IoT Analytics

Para recursos semelhantes AWS IoT Analytics, explore o Amazon Kinesis, o Amazon S3 e o Amazon Athena. Esses serviços fornecem escalabilidade e flexibilidade adicionais para atender aos seus requisitos de análise em evolução. Saiba como fazer isso aqui.

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

Solução de problemas AWS IoT Analytics

Consulte a seção a seguir para solucionar erros e encontrar possíveis soluções para resolver problemas com AWS IoT Analytics.

Como saber se minhas mensagens estão chegando no AWS IoT Analytics?

Verifique se a regra para injetar dados no canal por meio do mecanismo de regras está configurada corretamente.

aws iot get-topic-rule --rule-name your-rule-name

A resposta deve ser parecida com o seguinte:

{ "ruleArn": "arn:aws:iot:us-west-2:your-account-id:rule/your-rule-name", "rule": { "awsIotSqlVersion": "2016-03-23", "sql": "SELECT * FROM 'iot/your-rule-name'", "ruleDisabled": false, "actions": [ { "iotAnalytics": { "channelArn": "arn:aws:iotanalytics:region:your_account_id:channel/your-channel-name" } } ], "ruleName": "your-rule-name" } }

Certifique-se de que o nome da região e do canal usados na regra estão corretos. Para garantir que os dados atinjam o mecanismo de regras e a regra está sendo executada corretamente, é possível adicionar um novo destino para armazenar mensagens recebidas no bucket do Amazon S3 temporariamente.

Por que meu pipeline perde mensagens? Como posso corrigir isso?

  • Uma atividade recebeu uma entrada JSON inválida:

    Todas as atividades, exceto as atividades do Lambda, exigem especificamente uma string JSON válida como entrada. Se o JSON recebido por uma atividade for inválido, a mensagem é descartada e não faz seu caminho para o datastore. Verifique se você está consumindo mensagens JSON válidas para o serviço. Em caso de entrada de binário, certifique-se de que a primeira atividade no pipeline é uma atividade do Lambda que converte dados binários em JSON válido antes de transmiti-lo para a próxima atividade ou armazená-lo no datastore. Para obter mais informações, consulte Exemplo 2 da função do Lambda.

  • Uma função do Lambda invocada por uma atividade do Lambda tem permissões insuficientes:

    Certifique-se de que cada função do Lambda em uma atividade do Lambda tem permissão para ser invocada no serviço do AWS IoT Analytics. Os seguintes comando da AWS CLI podem ser usados para conceder permissão:

    aws lambda add-permission --function-name <name> --region <region> --statement-id <id> --principal iotanalytics.amazonaws.com --action lambda:InvokeFunction
  • Um filtro ou atividade removeAttribute é definida incorretamente:

    Certifique-se de que as definições de qualquer atividade do filter ou removeAttribute estão corretas. Se você filtrar uma mensagem ou remover todos os atributos de uma mensagem, essa mensagem não é adicionada ao datastore.

Por que não há dados em meu datastore?

  • Existe um atraso entre ingestão de dados e a disponibilidade de dados:

    Pode demorar vários minutos depois de os dados serem ingeridos em um canal antes que os dados estejam disponíveis no datastore. O tempo varia com base no número de atividades do pipeline e na definição de qualquer atividade do Lambda personalizadas no pipeline.

  • As mensagens estão sendo filtradas no pipeline:

    Certifique-se de que você não está soltando mensagens no pipeline. (Consulte a pergunta e resposta anteriores.)

  • Sua consulta de conjunto de dados está incorreta:

    Certifique-se de que a consulta que gera o conjunto de dados do datastore está correta. Remova os filtros desnecessários da consulta para garantir que seus dados chegam ao datastore.

Por que meu conjunto de dados simplesmente mostra __dt?

  • Essa coluna é adicionada automaticamente pelo serviço e contém o tempo aproximado de ingestão dos dados. Ela pode ser usada para otimizar as consultas. Se seu conjunto de dados não contiver nada além disso, consulte a pergunta e a resposta anteriores.

Como fazer para codificar um evento orientado pela conclusão do conjunto de dados?

  • Será necessário configurar a sondagem com base no comando describe-dataset para verificar se o status do conjunto de dados com determinado timestamp é BEM-SUCEDIDO.

Como fazer para configurar corretamente minha instância de caderno para usar o AWS IoT Analytics?

Siga estas etapas para garantir que a função do IAM que você está usando para criar a instância do bloco de anotações tem as permissões necessárias:

  1. Vá para o console do SageMaker e crie uma instância de caderno.

  2. Preencha os detalhes e selecione create a new role (criar uma nova função). Anote o Role ARN (ARN da função).

  3. Crie a instância de bloco de anotações. Isto também cria uma função que o SageMaker pode usar.

  4. Vá para o console do IAM e modifique a função recém-criada do Sagemaker. Quando você abrir essa função, ela deve ter uma política gerenciada.

  5. Clique em adicionar política em linha, escolha IoTAnalytics como o serviço e, em permissão de leitura, selecione GetDatasetContent.

  6. Analise a política, adicione um nome para a política e, em seguida, create (criar). Agora a função recém-criada tem política de permissão para ler um conjunto de dados do AWS IoT Analytics.

  7. Vá para o console do AWS IoT Analytics e crie cadernos na instância de caderno.

  8. Aguarde até que a instância do blocos de anotações esteja no estado "In Service" (Em serviço).

  9. Escolha criar cadernos e selecione a instância de caderno que você criou. Isto cria um caderno Jupyter com o modelo selecionado que pode acessar seus conjuntos de dados.

Por que não consigo criar cadernos em uma instância?

  • Certifique-se de criar uma instância de blocos de anotações correta com a política do IAM. (Siga as etapas na pergunta anterior.)

  • Certifique-se de que a instância de blocos de anotações está no estado "Em serviço". Ao criar uma instância, ela é iniciada em um estado “Pendente”. Geralmente, demora aproximadamente cinco minutos para que ela entre no estado "In Service" (Em serviço). Se a instância de cadernos entrar no estado “Falha” após cinco minutos, verifique as permissões novamente.

Por que não estou vendo meus conjuntos de dados no Amazon QuickSight?

O Amazon QuickSight pode precisar de permissão para ler o conteúdo do seu conjunto de dados do AWS IoT Analytics. Para dar permissão, siga estas etapas:

  1. Escolha o nome da sua conta no canto superior direito do Amazon QuickSight e escolha Gerenciar QuickSight.

  2. No painel de navegação esquerdo, escolha Segurança e permissões. Em Acesso do QuickSight aos serviços da AWS, verifique se o acesso foi concedido a AWS IoT Analytics.

    1. Se AWS IoT Analytics não tiver acesso, escolha Adicionar ou remover.

    2. Escolha a caixa ao lado AWS IoT Analytics e selecione Atualizar. Isso concede permissões de leitura do Amazon QuickSight para o conteúdo de seus conjuntos de dados.

  3. Tente novamente para visualizar seus dados.

Certifique-se de escolher a mesma região da AWS tanto para o AWS IoT Analytics quanto para o Amazon QuickSight. Caso contrário, você poderá ter problemas para acessar os recursos AWS. Para ver a lista de regiões compatíveis, consulte AWS IoT Analyticsendpoints e cotas e endpoints e cotas do Amazon QuickSight no Referência geral da Amazon Web Services.

Por que não vejo o botão conteinerizar em meu caderno Jupyter existente?

  • Isso é causado por um plug-in ausente de conteinerização da AWS IoT Analytics. Se você criou sua instância de caderno do SageMaker antes de 23 de agosto de 2018, será necessário instalar o plug-in manualmente, seguindo as instruções em Conteinerização de um caderno.

  • Se você não vir o botão conteinerizar depois de criar a instância de caderno do SageMaker no console do AWS IoT Analytics ou ao instalá-la manualmente, entre em contato com o Suporte técnico do AWS IoT Analytics.

Por que minha instalação do plug-in de conteinerização está falhando?

  • Geralmente, a instalação do plug-in falha devido à ausência de permissões na instância de notebook do SageMaker. Para obter as permissões necessárias para a instância de notebook, consulte Permissões e adicione as permissões necessárias para a função de instância de notebook. Se o problema persistir, crie uma nova instância do caderno no console do AWS IoT Analytics.

  • Você pode ignorar a mensagem a seguir no log se ela aparecer durante a instalação do plug-in: “Para inicializar essa extensão no navegador sempre que o upload do caderno (ou de outro aplicativo) é feito”.

Por que meu plug-in de conteinerização está emitindo um erro?

  • A conteinerização pode falhar e gerar erros por vários motivos. Verifique se você está usando o kernel correto antes de conteinerizar seu notebook. Os kernels conteinerizados começam com o prefixo "Containerized".

  • Como o plug-in cria e salva uma imagem de docker em um repositório do ECR, verifique se sua função de instância de notebook tem permissões suficientes para ler, listar e criar repositórios do ECR. Para obter as permissões necessárias para a instância de notebook, consulte Permissões e adicione as permissões necessárias para a função de instância de notebook.

  • Além disso, verifique se o nome do repositório está em conformidade com os requisitos do ECR. Os nomes de repositório do ECR devem começar com uma letra e podem conter apenas letras minúsculas, números, hífens, sublinhados e barras.

  • Se o processo de conteinerização falhar com o erro: "Esta instância tem espaço livre insuficiente para executar a conteinerização" tente usar uma instância maior para resolver o problema.

  • Se você vir erros de conexão ou um erro de criação de imagem, tente novamente. Se o problema persistir, reinicie a instância e instale a versão mais recente do plug-in.

Por que não vejo minhas variáveis durante a conteinerização?

  • O plug-in de conteinerização do AWS IoT Analytics reconhece automaticamente todas as variáveis em seu caderno depois de executar o caderno com o kernel “conteinerizado”. Use um dos kernels conteinerizados para executar o notebook e, em seguida, execute a conteinerização.

Quais variáveis posso adicionar a meu contêiner como uma entrada?

  • Você pode adicionar qualquer variável cujo valor queira modificar durante o tempo de execução como uma entrada para o contêiner. Isso permite executar o mesmo contêiner com diferentes parâmetros que precisam ser fornecidos no momento da criação do conjuntos de dados. O plug-in Jupyter de conteinerização do AWS IoT Analytics simplifica esse processo reconhecendo automaticamente as variáveis no bloco de anotações e disponibilizando-as como parte do processo de conteinerização.

Como faço para definir a saída de meu contêiner como uma entrada para a análise subsequente?

  • Um local específico no S3 onde os artefatos executados podem ser armazenados é criado para cada execução de seu conjunto de dados de contêiner. Para acessar esse local de saída, crie uma variável com o tipo outputFileUriValue em seu conjunto de dados de contêiner. O valor dessa variável deve ser um caminho do S3 que é usado para armazenar arquivos de saída adicionais. Para acessar esses artefatos salvos em execuções subsequentes, você pode usar a API getDatasetContent e escolher o arquivo de saída apropriado para a execução subsequente.

Por que meu conjunto de dados de contêiner está falhando?

  • Verifique se você está passando a executionRole correta para o conjunto de dados de contêiner. A política de confiança da executionRole deve incluir iotanalytics.amazonaws.com e sagemaker.amazonaws.com.

  • Se você vir AlgorithmError como o motivo da falha, tente depurar o código do contêiner manualmente. Isso acontece quando há um bug no código do contêiner ou quando a função de execução não tem permissão para executar o contêiner. Se você tiver conteinerizado usando o plug-in Jupyter do AWS IoT Analytics, crie uma instância de caderno do SageMaker com a mesma função de executionRole do containerDataset e tente executar o caderno manualmente. Se o contêiner tiver sido criado fora do plug-in Jupyter, tente executar o código manualmente e limitar a permissão para a executionRole.