Gerenciar trabalhos - AWS IoT Core

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

Gerenciar trabalhos

Use trabalhos para notificar os dispositivos sobre uma atualização de software ou firmware. Você pode usar o AWS IoT console, o Operações de API de gerenciamento e controle de trabalhos AWS Command Line Interface, o ou o AWS SDKspara criar e gerenciar trabalhos.

Assinatura de código para trabalhos

Ao enviar código para dispositivos, para que os dispositivos detectem se o código foi modificado em trânsito, recomendamos que você assine o arquivo de código usando a AWS CLI. Para obter instruções, consulte Criar e gerenciar trabalhos usando a AWS CLI.

Para obter mais informações, consulte Para que serve a assinatura de código AWS IoT? .

Documento de trabalho

Antes de criar um trabalho, você deve criar um documento de trabalho. Se você estiver usando a assinatura de código para AWS IoT, deverá carregar seu documento de trabalho em um bucket Amazon S3 versionado. Para mais informações sobre a criação de um bucket do Amazon S3 e o upload de um arquivo para ele, consulte Conceitos básicos do Amazon Simple Storage Service, no Guia de conceitos básicos do Amazon S3.

dica

Para exemplos de documentos de trabalho, consulte o exemplo jobs-agent.js no AWS IoT SDK formulário JavaScript.

Pré-assinado URLs

Seu documento de trabalho pode conter um Amazon URL S3 pré-assinado que aponta para seu arquivo de código (ou outro arquivo). Os Amazon URLs S3 pré-assinados são válidos somente por um período limitado de tempo e são gerados quando um dispositivo solicita um documento de trabalho. Como o pré-assinado URL não é criado quando você está criando o documento de trabalho, use um espaço reservado URL em seu documento de trabalho. Um espaço reservado URL tem a seguinte aparência:

${aws:iot:s3-presigned-url:https://s3.region.amazonaws.com/<bucket>/<code file>}

onde:

  • bucket é o bucket do Amazon S3 que contém o arquivo de código.

  • code file é a chave Amazon S3 do arquivo de código.

Quando um dispositivo solicita o documento de trabalho, AWS IoT gera o pré-assinado URL e substitui o espaço URL reservado pelo pré-assinado. URL Seu documento de trabalho é, então, enviado para o dispositivo.

IAMfunção para conceder permissão para baixar arquivos do S3

Ao criar um trabalho que usa o Amazon URLs S3 pré-assinado, você deve fornecer IAM uma função. O perfil deve conceder permissão para fazer download de arquivos do bucket do Amazon S3, onde os dados ou atualizações são armazenados. A função também deve conceder permissão para a AWS IoT assumir a função.

Você pode especificar um tempo limite opcional para o URL pré-assinado. Para obter mais informações, consulte CreateJob.

Conceda permissão a AWS IoT Jobs para assumir sua função
  1. Acesse o hub Funções do IAM console e escolha sua função.

  2. Na guia Relações de Confiança, escolha Editar Relação de Confiança e substitua o documento de política pelo seguinteJSON. Escolha Update Trust Policy.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "iot.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  3. Para proteger do problema de confused deputy, adicione as chaves de contexto de condição global aws:SourceArn e aws:SourceAccount à política.

    Importante

    Seu aws:SourceArn deve estar em conformidade com o formato: arn:aws:iot:region:account-id:*. Certifique-se de que region corresponde à sua AWS IoT região e account-id corresponde ao ID da sua conta de cliente. Para obter mais informações, consulte Prevenção de confused deputy entre serviços.

    { "Effect": "Allow", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:iot:*:123456789012:job/*" } } } ] }
  4. Se seu trabalho usa um documento de trabalho que é um objeto do Amazon S3, escolha Permissões e use o seguinte. JSON Isso adiciona uma política que concede permissão para baixar arquivos do seu bucket do Amazon S3:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::your_S3_bucket/*" } ] }

Pré-assinado URL para upload de arquivo

Se seus dispositivos precisarem fazer upload de arquivos para um bucket do Amazon S3 durante a implantação de um trabalho, você poderá incluir o seguinte URL espaço reservado pré-assinado em seu documento de trabalho:

${aws:iot:s3-presigned-url-upload:https://s3.region.amazonaws.com/<bucket>/<key>}

Você pode usar no máximo duas de cada${thingName},${jobId}, e ${executionNumber} como palavras-chave reservadas dentro do key atributo no espaço reservado para upload de arquivo URL localizado em seu documento de trabalho. O espaço reservado local que representa essas palavras-chave reservadas no key atributo será analisado e substituído quando a execução do trabalho for criada. O uso de um espaço reservado local com palavras-chave reservadas específicas para cada dispositivo garante que cada arquivo carregado de um dispositivo seja específico desse dispositivo e não seja substituído por um arquivo similar carregado de outro dispositivo destinado à mesma implantação de trabalho. Para obter informações sobre como solucionar problemas de espaços reservados locais em um URL espaço reservado pré-assinado para carregar arquivos durante a implantação de uma tarefa, consulte. Mensagens gerais de erro de solução de problemas

nota

O nome do bucket do Amazon S3 não pode conter o espaço reservado local que representa as palavras-chave reservadas para o arquivo carregado. O espaço reservado local deve estar localizado no key atributo.

Esse URL espaço reservado pré-assinado será convertido em um URL upload pré-assinado do Amazon S3 em seu documento de trabalho quando um dispositivo o receber. Seus dispositivos usarão isso para fazer upload de arquivos para um bucket Amazon S3 de destino.

nota

Quando o bucket e a chave do Amazon S3 não forem fornecidos no espaço reservado acimaURL, AWS IoT Jobs gerará automaticamente uma chave para cada dispositivo usando no máximo duas de cada${thingName}, e. ${jobId} ${executionNumber}

Pré-assinado URL usando o controle de versão do Amazon S3

Proteger a integridade de um arquivo armazenado em um bucket do Amazon S3 é fundamental para garantir implantações seguras de trabalhos usando esse arquivo em sua frota de dispositivos. Com o uso do controle de versão do Amazon S3, você pode adicionar um identificador de versão para cada variante do arquivo armazenado em seu bucket do Amazon S3 para rastrear cada versão do arquivo. Isso fornece uma visão sobre qual versão do arquivo é implantada em sua frota de dispositivos usando o AWS IoT Jobs. Para obter mais informações sobre o uso de controle de versão em buckets do Amazon S3, consulte Uso de controle de versão em buckets do Amazon S3.

Se o arquivo estiver armazenado no Amazon S3 e o documento de trabalho contiver um URL espaço reservado pré-assinado, AWS IoT Jobs gerará um espaço reservado pré-assinado URL no documento de trabalho usando o bucket do Amazon S3, a chave do bucket e a versão do arquivo armazenado no bucket do Amazon S3. Esse pré-assinado URL gerado no documento de trabalho substituirá o URL espaço reservado pré-assinado originalmente no documento de trabalho. Se você atualizar o arquivo armazenado em seu bucket do Amazon S3, uma nova versão do arquivo e as subsequentes versionId serão criadas para sinalizar as atualizações feitas e fornecer a capacidade de direcionar esse arquivo específico em futuras implantações de trabalhos.

Consulte os exemplos a seguir para ver antes e durante o Amazon S3 pré-assinado URLs em seu documento de trabalho usando o: versionId

URLEspaço reservado pré-assinado do Amazon S3 (antes da implantação do Job)

//Virtual-hosted style URL ${aws:iot:s3-presigned-url:https://bucket-name.s3.region-code.amazonaws.com/key-name%3FversionId%3Dversion-id} //Path-style URL ${aws:iot:s3-presigned-url:https://s3.region-code.amazonaws.com/bucket-name/key-name%3FversionId%3Dversion-id}

Amazon S3 Presigned (URLdurante a implantação do Job)

//Virtual-hosted style URL ${aws:iot:s3-presigned-url:https://sample-bucket-name.s3.us-west-2.amazonaws.com/sample-code-file.png%3FversionId%3Dversion1} //Path-style ${aws:iot:s3-presigned-url:https://s3.us-west-2.amazonaws.com/sample-bucket-name/sample-code-file.png%3FversionId%3Dversion1}

Para obter mais informações sobre objetos hospedados virtualmente e no estilo de caminho do Amazon S3URLs, consulte solicitações e solicitações no estilo Path. Virtual-hosted-style

nota

Se você quiser versionId anexar a um Amazon S3 URL pré-assinado, ele deve estar em conformidade com o suporte de codificação. URL AWS SDK for Java 2.x Para obter mais informações, consulte Alterações na análise do Amazon URIs S3 da versão 1 para a versão 2.