

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Gestion des tâches
<a name="create-manage-jobs"></a>

Utilisez des tâches pour informer les appareils d’une mise à jour du logiciel ou du micrologiciel. Vous pouvez utiliser la [AWS IoT console](https://console.aws.amazon.com/iot/), le [Opérations d’API de gestion et de contrôle des tâches](jobs-management-control-api.md#jobs-http-api) [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/reference/iot/index.html), ou le [AWS SDKs](https://aws.amazon.com/tools/#sdk)pour créer et gérer des tâches.

## Signature de code pour les tâches
<a name="create-manage-jobs-code-signing"></a>

 Lorsque vous envoyez du code à des appareils, pour que les appareils puissent détecter si le code a été modifié pendant le transport, nous vous recommandons de signer le fichier de code à l’aide du AWS CLI. Pour obtenir des instructions, veuillez consulter [Créer et gérer des tâches à l’aide du AWS CLI](manage-job-cli.md).

Pour plus d'informations, voir À [quoi sert la signature de code AWS IoT ?](https://docs.aws.amazon.com/signer/latest/developerguide/Welcome.html) .

## Document de tâche
<a name="create-manage-jobs-job-doc"></a>

Avant de créer une tâche, vous devez créer un document de tâche. Si vous utilisez la signature de code pour AWS IoT, vous devez télécharger votre document de travail dans un compartiment Amazon S3 versionné. Pour de plus amples informations sur la création et le chargement d’un fichier dans un compartiment Amazon S3, veuillez consulter [Mise en route sur Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html) dans le *Guide de démarrage Amazon S3*.

**Astuce**  
Pour des exemples de documents de travail, consultez l'exemple [jobs-agent.js](https://www.npmjs.com/package/aws-iot-device-sdk#jobs-agentjs) dans le AWS IoT SDK pour JavaScript.

## Présigné URLs
<a name="create-manage-jobs-presigned-URLs"></a>

Votre document de tâche peut contenir une URL Amazon S3 pré-signée qui pointe sur votre fichier de code (ou tout autre fichier). Les Amazon S3 présignés ne URLs sont valides que pour une durée limitée et sont générés lorsqu'un appareil demande un document de travail. Comme l’URL pré-signée n’est pas créée lorsque vous avez créé le document de tâche, vous utilisez une URL d’espace réservé dans votre document de tâche à la place. L’URL d’espace réservé se présente comme suit :

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

où :
+ *bucket*est le compartiment Amazon S3 qui contient le fichier de code.
+ *code file*est la clé Amazon S3 du fichier de code.

Lorsqu'un appareil demande le document de travail, AWS IoT génère l'URL présignée et remplace l'URL de remplacement par l'URL présignée. Votre document de tâche est alors envoyé à l'appareil.

**Rôle IAM pour autoriser le téléchargement de fichiers depuis S3**  
Lorsque vous créez une tâche qui utilise Amazon S3 présigné URLs, vous devez fournir un rôle IAM. Le rôle doit octroyer l’autorisation de télécharger les fichiers depuis le compartiment Amazon S3 où les données de tâche/les mises à jour sont stockées. Le rôle doit également accorder à AWS IoT l'autorisation d'endosser le rôle.

Vous pouvez éventuellement spécifier un délai d'expiration pour l'URL présignée. Pour de plus amples informations, veuillez consulter [CreateJob](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateJob.html).

**AWS IoT Autorisez Jobs à assumer votre rôle**

1. Allez à la page [Centre des rôles de la console IAM](https://console.aws.amazon.com/iamv2/home#/roles) et choisissez votre rôle.

1. Dans l’onglet **Relations d’approbation**, choisissez **Modifier la relation d’approbation** et remplacez le document de politique par le JSON suivant. Choisissez **Mettre à jour la politique d'approbation**.  
****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
           "Service": [
             "iot.amazonaws.com"
           ]
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

1. Ajoutez les clés de condition globale [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) et [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) à la politique pour vous protéger contre le problème de l’adjoint confus.
**Important**  
Votre `aws:SourceArn` doit respecter le format :`arn:aws:iot:region:account-id:*`. Assurez-vous que cela *region* correspond à votre AWS IoT région et *account-id* à votre numéro de compte client. Pour plus d’informations, consultez [Prévention du problème de l’adjoint confus entre services](cross-service-confused-deputy-prevention.md). 

   ```
   {
     "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/*"
            }
          }
        }
      ]
   }
   ```

1. Si votre travail utilise un document de travail qui est un objet Amazon S3, choisissez **Autorisation** et utilisez le code JSON suivant. Cela ajoute une politique qui autorise le téléchargement de fichiers depuis votre compartiment Amazon S3 :  
****  

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

## URL présignée pour le téléchargement de fichiers
<a name="create-manage-jobs-presigned-URLs-upload"></a>

Si vos appareils doivent télécharger des fichiers dans un compartiment Amazon S3 lors du déploiement d'une tâche, vous pouvez inclure l'espace réservé d'URL présigné suivant dans votre document de travail : 

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

Vous pouvez utiliser au maximum deux mots de `${thingName}` chaque et `${executionNumber}` comme mots clés réservés dans l'`key`attribut figurant dans l'URL d'espace réservé pour le téléchargement du fichier située dans votre document de travail. `${jobId}` L'espace réservé local représentant ces mots clés réservés dans l'`key`attribut sera analysé et remplacé lors de la création de l'exécution de la tâche. L'utilisation d'un espace réservé local avec des mots clés réservés spécifiques à chaque appareil garantit que chaque fichier téléchargé depuis un appareil est spécifique à cet appareil et qu'il n'est pas remplacé par un fichier similaire téléchargé depuis un autre appareil ciblé par le même déploiement de tâches. Pour plus d'informations sur la résolution des problèmes liés aux espaces réservés locaux dans un espace réservé d'URL présigné pour le téléchargement de fichiers lors du déploiement d'une tâche, consultez. [Messages d'erreur généraux relatifs au dépannage](software-package-catalog-troubleshooting.md#spc-general-troubleshooting)

**Note**  
Le nom du compartiment Amazon S3 ne peut pas contenir l'espace réservé local représentant les mots clés réservés pour le fichier chargé. L'espace réservé local doit être situé dans l'`key`attribut.

Cet espace réservé d'URL présignée sera converti en URL de téléchargement présignée Amazon S3 dans votre document de travail lorsqu'un appareil le recevra. Vos appareils l'utiliseront pour télécharger des fichiers vers un compartiment Amazon S3 de destination.

**Note**  
Lorsque le compartiment et la clé Amazon S3 ne sont pas fournis dans l'URL d'espace réservé ci-dessus, AWS IoT Jobs génère automatiquement une clé pour chaque appareil en utilisant un maximum de deux des éléments suivants : `${thingName}``${jobId}`, et`${executionNumber}`.

## URL présignée à l'aide de la gestion des versions d'Amazon S3
<a name="create-manage-jobs-presigned-URLs-versioning"></a>

Il est essentiel de protéger l'intégrité d'un fichier stocké dans un compartiment Amazon S3 pour garantir des déploiements de tâches sécurisés en utilisant ce fichier sur votre parc d'appareils. Grâce au versionnement d'Amazon S3, vous pouvez ajouter un identifiant de version pour chaque variante du fichier stockée dans votre compartiment Amazon S3 afin de suivre chaque version du fichier. Cela permet de savoir quelle version du fichier est déployée sur votre parc d'appareils à l'aide de AWS IoT Jobs. Pour plus d'informations sur les compartiments Amazon S3 utilisant le versionnement, consultez [Utilisation du versionnement dans les compartiments Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html).

Si le fichier est stocké dans Amazon S3 et que le document de travail contient un espace réservé d'URL présigné, AWS IoT Jobs générera une URL présignée dans le document de travail à l'aide du compartiment Amazon S3, de la clé du compartiment et de la version du fichier stocké dans le compartiment Amazon S3. Cette URL présignée générée dans le document de travail remplacera l'espace réservé d'URL présigné initialement dans le document de travail. Si vous mettez à jour le fichier stocké dans votre compartiment Amazon S3, une nouvelle version du fichier et les versions suivantes `versionId` seront créées pour signaler les mises à jour effectuées et permettre de cibler ce fichier spécifique lors de futurs déploiements de tâches.

Reportez-vous aux exemples suivants pour un aperçu avant et pendant de l'Amazon S3 présigné URLs dans votre document de travail à l'aide du `versionId` :

**Espace réservé pour l'URL présignée Amazon S3 (avant le déploiement de Job)**

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

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

**URL présignée Amazon S3 (pendant le déploiement de la tâche)**

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

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

[Pour plus d'informations sur les objets hébergés virtuellement et de style Path sur Amazon S3 URLs, consultez la section Requêtes et [Virtual-hosted-style requêtes](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html#virtual-hosted-style-access) de type PATH.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html#path-style-access)

**Note**  
Si vous souhaitez l'ajouter `versionId` à une URL présignée Amazon S3, elle doit être conforme à la prise en charge du codage d'URL. AWS SDK for Java 2.x Pour plus d'informations, consultez [Modifications apportées à l'analyse d'Amazon S3 URIs de la version 1 à la version 2.](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/migration-s3-uri-parser.html#migration-3-uri-parser-api-changes)

**Différences entre les versions de l'espace réservé aux URL présignées Amazon S3**

La liste suivante décrit les différences entre les espaces réservés aux URL présignés Amazon S3 `${aws:iot:s3-presigned-url-v1` (version 1) et `${aws:iot:s3-presigned-url-v2` (version 2) :
+  L'espace réservé aux URL présignées Amazon S3 n'est `${aws:iot:s3-presigned-url-v1` pas pris en charge. `version-id`
+ L'espace réservé pour l'URL présignée Amazon S3 `${aws:iot:s3-presigned-url-v1` reçoit l'URL Amazon S3 non codée. L'espace réservé à l'URL présignée Amazon S3 `${aws:iot:s3-presigned-url-v2` nécessite que l'URL Amazon S3 soit codée conformément à la norme du SDK Amazon S3.

**Topics**
+ [Signature de code pour les tâches](#create-manage-jobs-code-signing)
+ [Document de tâche](#create-manage-jobs-job-doc)
+ [Présigné URLs](#create-manage-jobs-presigned-URLs)
+ [URL présignée pour le téléchargement de fichiers](#create-manage-jobs-presigned-URLs-upload)
+ [URL présignée à l'aide de la gestion des versions d'Amazon S3](#create-manage-jobs-presigned-URLs-versioning)
+ [Créez et gérez des emplois à l'aide du AWS Management Console](manage-job-console.md)
+ [Créez et gérez des emplois à l'aide du AWS CLI](manage-job-cli.md)

# Créez et gérez des emplois à l'aide du AWS Management Console
<a name="manage-job-console"></a>

Cette section décrit comment créer et gérer des tâches à partir de la AWS IoT console. Après avoir créé un travail, vous pouvez consulter les informations le concernant sur la page de détails et gérer le travail.

**Note**  
Si vous souhaitez effectuer une signature de code pour AWS IoT des tâches, utilisez le AWS CLI. Pour plus d'informations, voir [Créer et gérer des tâches à l'aide du AWS CLI](manage-job-cli.md).

**Topics**
+ [Créez et gérez des tâches à l'aide du AWS Management Console](#create-job-console)
+ [Consultez et gérez les tâches à l'aide du AWS Management Console](#view-manage-job-console)

## Créez et gérez des tâches à l'aide du AWS Management Console
<a name="create-job-console"></a>

Pour créer une tâche, connectez-vous à la AWS IoT console et accédez au [hub de tâches](https://console.aws.amazon.com/iot/home#/jobhub) dans la section **Actions à distance**. Effectuez ensuite les étapes suivantes.

1. Sur la page **Tâches**, dans la boîte **de** dialogue Tâches, choisissez **Créer une tâche**.

1. Selon l'appareil que vous utilisez, vous pouvez créer une tâche personnalisée, une tâche de mise à jour FreeRTOS OTA ou une tâche. AWS IoT Greengrass Pour cet exemple, choisissez **Créer une tâche personnalisée**. Choisissez **Suivant**.

1. Sur la page **Propriétés de la tâche personnalisée**, dans la boîte de dialogue **Propriétés de la tâche**, entrez vos informations pour les champs suivants :
   + **Nom** : Entrez un nom de tâche alphanumérique unique.
   + **Description - facultatif** : Entrez une description facultative de votre tâche.
   + **Balises — en option** : 
**Note**  
Nous vous recommandons de ne pas utiliser d'informations personnelles identifiables dans votre poste IDs et votre description.

   Choisissez **Suivant**.

1. Sur la page **Configuration du fichier** de la boîte de dialogue **Cibles du travail**, sélectionnez les **objets** ou les **groupes d’objets** que vous souhaitez exécuter.

   Dans la boîte de dialogue **Document de tâche**, choisissez l’une des options suivantes :
   + **Depuis le fichier** : fichier de tâche JSON que vous avez chargé dans un compartiment Amazon S3
     + **Signature de code**

       Dans le document de travail situé dans votre URL Amazon S3, `${aws:iot:code-sign-signature:s3://region.bucket/code-file@code-file-version-id}` est requis comme espace réservé jusqu’à ce qu’il soit remplacé par le chemin du fichier de code signé à l’aide de votre **profil de signature de code**. Le nouveau fichier de code signé apparaîtra initialement dans un dossier `SignedImages` de votre compartiment source Amazon S3. Un nouveau document de travail contenant un préfixe `Codesigned_` sera créé avec le chemin du fichier de code signé remplaçant l’espace réservé au signe de code et placé dans votre URL Amazon S3 pour créer une nouvelle tâche.
     + **Ressource de pré-signature URLs**

       [Dans le menu déroulant **Rôle de pré-signature**, choisissez le rôle IAM que vous avez créé dans Presigned. URLs](https://docs.aws.amazon.com/iot/latest/developerguide/create-manage-jobs.html#create-manage-jobs-presigned-URLs) L'utilisation `${aws:iot:s3-presigned-url:` URLs pour présigner des objets situés dans Amazon S3 est une bonne pratique de sécurité pour les appareils qui téléchargent des objets depuis Amazon S3.

       Si vous souhaitez utiliser Presigned comme espace réservé URLs pour la signature de code, utilisez l'exemple de modèle suivant :

       ```
           ${aws:iot:s3-presigned-url:${aws:iot:code-sign-signature:<S3 URL>}
       ```
   + **À partir du modèle** : modèle de tâche contenant un document de tâche et des configurations de tâche. Le modèle de tâche peut être un modèle de tâche personnalisé que vous avez créé ou un modèle AWS géré.

      Si vous créez une tâche pour effectuer des actions à distance fréquemment utilisées, telles que le redémarrage de votre appareil, vous pouvez utiliser un modèle AWS géré. Ces modèles ont déjà été préconfigurés pour être utilisés. Pour plus d’informations, consultez [Créer un modèle de tâche personnalisé](job-templates-console.md#job-templates-console-create) et [Créez des modèles de tâches personnalisés à partir de modèles gérés](job-template-manage-console-create.md#job-template-manage-create-template). 

1. Sur la page **Configuration des tâches** de la boîte de dialogue **Configuration des tâches**, sélectionnez l’un des types de tâches suivants :
   + **Tâche de capture instantanée** : une tâche de capture instantanée est terminée lorsqu’elle est terminée sur les appareils et les groupes cibles.
   + **Tâche continue** : une tâche continue s’applique aux groupes d’objets et s’exécute sur tout appareil que vous ajoutez ultérieurement à un groupe cible spécifique.

1. Dans la boîte de dialogue **Configurations supplémentaires - facultatif**, passez en revue les configurations de tâches facultatives suivantes et effectuez vos sélections en conséquence :
   + **Configuration du déploiement**
   + **Configuration de la planification**
   + **Configuration du délai d’expiration des exécutions de tâches**
   + **Configuration des nouvelles tentatives d’exécution des tâches - nouveau**
   + **Abandonner la configuration**

   Reportez-vous aux sections suivantes pour plus d’informations sur les configurations de tâches :
   + [Configurations du déploiement, de la planification et de l’annulation des tâches](jobs-configurations-details.md#job-rollout-abort-scheduling)
   + [Configurations du délai d’exécution des tâches et des nouvelles tentatives](jobs-configurations-details.md#job-timeout-retry)

   Passez en revue toutes vos sélections d’emplois, puis choisissez **Soumettre** pour créer votre emploi.

## Consultez et gérez les tâches à l'aide du AWS Management Console
<a name="view-manage-job-console"></a>

Une fois que vous avez créé la tâche, la console génère une signature JSON et la place dans votre document de tâche. Vous pouvez utiliser la [console AWS IoT](https://console.aws.amazon.com/iot/) pour afficher le statut d'une tâche, annuler une tâche ou la supprimer.

Si vous choisissez le job que vous avez créé, vous trouverez :
+ Détails généraux de la tâche, tels que le nom, la description, le type, l'heure à laquelle elle a été créée, sa dernière mise à jour et l'heure de début estimée.
+ Toutes les configurations de tâches que vous avez spécifiées et leur statut.
+ Document de tâche.
+ Les exécutions des tâches et toutes les balises facultatives que vous avez spécifiées.

Pour gérer les tâches, accédez au [hub de tâches de la console](https://console.aws.amazon.com/iot/home#/jobhub) et choisissez si vous souhaitez modifier, supprimer ou annuler la tâche.

# Créez et gérez des emplois à l'aide du AWS CLI
<a name="manage-job-cli"></a>

Cette section décrit comment créer et gérer des tâches.

## Création de tâches
<a name="create-job"></a>

Pour créer une AWS IoT tâche, utilisez la **CreateJob** commande. La tâche est mise en file d'attente en vue de son exécution sur les cibles (objets ou groupes d'objets) que vous spécifiez. Pour créer une AWS IoT tâche, vous avez besoin d'un document de tâche qui peut être inclus dans le corps de la demande ou sous forme de lien vers un document Amazon S3. Si la tâche inclut le téléchargement de fichiers à l'aide d'Amazon S3 présigné URLs, vous avez besoin d'un rôle IAM Amazon Resource Name (ARN) autorisé à télécharger le fichier et autorisant le service AWS IoT Jobs à assumer ce rôle.

Pour plus d'informations sur la syntaxe lors de la saisie de la date et de l'heure à l'aide d'une commande API ou du AWS CLI, consultez [Timestamp](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-types.html#parameter-type-timestamp).

### Signature de code avec les tâches
<a name="code-signing-with-jobs"></a>

Si vous utilisez la signature de code pour AWS IoT, vous devez démarrer une tâche de signature de code et inclure le résultat dans votre document de tâche. Cela remplacera l’espace réservé à la signature du signe de code dans votre document de tâche, qui est requis comme espace réservé jusqu’à ce qu’il soit remplacé par le chemin du fichier de code signé à l’aide de votre profil de **signature de code**. L’espace réservé pour la signature du code se présente comme suit :

```
    ${aws:iot:code-sign-signature:s3://region.bucket/code-file@code-file-version-id}
```

Utilisez la [start-signing-job](https://docs.aws.amazon.com/signer/latest/developerguide/api-startsigningjob.html)commande pour créer une tâche de signature de code. `start-signing-job`renvoie un identifiant de tâche. Utilisez la commande **describe-signing-job** pour obtenir l’emplacement Amazon S3 dans lequel la signature est stockée. Vous pouvez alors télécharger la signature depuis Amazon S3. Pour en savoir plus sur les tâches de signature de code, consultez [Signature de code pour AWS IoT](https://docs.aws.amazon.com/signer/latest/developerguide/Welcome.html).

Votre document de tâche doit contenir un espace réservé d’URL pré-signée pour votre fichier de code et la sortie de la signature JSON être placée dans un compartiment Amazon S3 à l’aide de la commande **start-signing-job** :

```
{
    "presign": "${aws:iot:s3-presigned-url:https://s3.region.amazonaws.com/bucket/image}",
}
```

### Créer une tâche avec un document de tâche
<a name="create-job-with-document"></a>

La commande suivante montre comment créer une tâche à l'aide d'un document de tâche (*job-document.json*) stocké dans un compartiment Amazon S3 (*jobBucket*) et d'un rôle autorisé à télécharger des fichiers depuis Amazon S3 (*S3DownloadRole*).

```
aws iot create-job  \
      --job-id 010  \
      --targets arn:aws:iot:us-east-1:123456789012:thing/thingOne  \
      --document-source https://s3.amazonaws.com/amzn-s3-demo-bucket/job-document.json  \
      --timeout-config inProgressTimeoutInMinutes=100 \
      --job-executions-rollout-config "{ \"exponentialRate\": { \"baseRatePerMinute\": 50, \"incrementFactor\": 2, \"rateIncreaseCriteria\": { \"numberOfNotifiedThings\": 1000, \"numberOfSucceededThings\": 1000}}, \"maximumPerMinute\": 1000}" \
      --abort-config "{ \"criteriaList\": [ { \"action\": \"CANCEL\", \"failureType\": \"FAILED\", \"minNumberOfExecutedThings\": 100, \"thresholdPercentage\": 20}, { \"action\": \"CANCEL\", \"failureType\": \"TIMED_OUT\", \"minNumberOfExecutedThings\": 200, \"thresholdPercentage\": 50}]}" \          
      --presigned-url-config "{\"roleArn\":\"arn:aws:iam::123456789012:role/S3DownloadRole\", \"expiresInSec\":3600}"
```

La tâche est exécutée*thingOne*.

Le paramètre facultatif `timeout-config` spécifie la durée allouée à chaque appareil pour terminer l'exécution de la tâche. Le minuteur est démarré quand l'état de l'exécution de la tâche a la valeur `IN_PROGRESS`. Si l’état de l’exécution de la tâche n’est pas défini sur un autre état terminal avant l’expiration, il est défini avec la valeur `TIMED_OUT`.

Le minuteur en cours ne peut pas être mis à jour et s'applique à toutes les exécutions de tâche pour la tâche. Chaque fois qu'une exécution de tâche reste dans cet `IN_PROGRESS` état pendant plus longtemps que cet intervalle, elle échoue et passe à l'`TIMED_OUT`état du terminal. AWS IoT publie également une notification MQTT.

Pour plus d’informations sur la création de configurations relatives aux déploiements et interruptions de tâche, consultez la section [Configuration du déploiement et de l’interruption des tâches](job-rollout-abort.html).

**Note**  
Les documents de tâche qui sont spécifiés en tant que fichiers Amazon S3 sont extraits au moment de la création de la tâche. La modification du contenu du fichier Amazon S3 que vous avez utilisé comme source de votre document de tâche une fois que vous avez créé la tâche ne modifie pas ce qui est envoyé aux cibles de la tâche.

## Mettre à jour une tâche
<a name="update-job"></a>

Vous utilisez la commande **UpdateJob** pour mettre à jour une tâche. Vous pouvez mettre à jour les champs `description`, `presignedUrlConfig`, `jobExecutionsRolloutConfig`, `abortConfig` et `timeoutConfig` d'une tâche.

```
aws iot update-job  \
  --job-id 010  \
  --description "updated description" \
  --timeout-config inProgressTimeoutInMinutes=100 \
  --job-executions-rollout-config "{ \"exponentialRate\": { \"baseRatePerMinute\": 50, \"incrementFactor\": 2, \"rateIncreaseCriteria\": { \"numberOfNotifiedThings\": 1000, \"numberOfSucceededThings\": 1000}, \"maximumPerMinute\": 1000}}" \
  --abort-config "{ \"criteriaList\": [ { \"action\": \"CANCEL\", \"failureType\": \"FAILED\", \"minNumberOfExecutedThings\": 100, \"thresholdPercentage\": 20}, { \"action\": \"CANCEL\", \"failureType\": \"TIMED_OUT\", \"minNumberOfExecutedThings\": 200, \"thresholdPercentage\": 50}]}" \          
  --presigned-url-config "{\"roleArn\":\"arn:aws:iam::123456789012:role/S3DownloadRole\", \"expiresInSec\":3600}"
```

Pour en savoir plus, consultez [Configuration du déploiement et de l’interruption des tâches](job-rollout-abort.html).

## Annuler une tâche
<a name="cancel-job"></a>

Vous utilisez la commande **CancelJob** pour annuler une tâche. L'annulation d'une tâche AWS IoT empêche le déploiement de toute nouvelle exécution de tâche pour la tâche. Il annule également toutes les exécutions de tâches effectuées dans un `QUEUED` État. AWS IoT conserve intacte toute exécution de tâche dans un état terminal car le périphérique a déjà terminé la tâche. Si une exécution de tâche a le statut `IN_PROGRESS`, elle reste aussi en l'état, à moins que vous utilisiez le paramètre facultatif `--force`.

La commande suivante montre comment annuler une tâche avec l'ID 010.

```
aws iot cancel-job --job-id 010
```

La commande affiche la sortie suivante :

```
{
    "jobArn": "string",
    "jobId": "string",
    "description": "string"
}
```

Lorsque vous annulez une tâche, les exécutions de tâche dont l'état est `QUEUED` sont annulées. Les exécutions de tâche dont l’état est `IN_PROGRESS` sont annulées si vous spécifiez le paramètre facultatif `--force`. Les exécutions de tâche qui se trouvent dans un état terminal ne sont pas annulées.

**Avertissement**  
L’annulation d’une tâche dont l’état est `IN_PROGRESS` (en définissant le paramètre `--force`) a pour effet d’annuler les exécutions de tâche en cours et empêche l’appareil qui exécute la tâche de mettre à jour le statut d’exécution de la tâche. Soyez vigilant et vérifiez que chaque appareil exécutant une tâche annulée est en mesure de reprendre un état valide.

Le statut d'une tâche annulée ou de l'une de ses exécutions de tâches est finalement cohérent. AWS IoT arrête de planifier les nouvelles exécutions de `QUEUED` tâches et les exécutions de tâches pour cette tâche sur les appareils dès que possible. La modification de l'état de l'exécution d'une tâche en `CANCELED` peut prendre du temps, selon le nombre d'appareils et autres facteurs.

Si une tâche est annulée, car elle a satisfait les critères définis par un objet `AbortConfig`, le service ajoute les valeurs renseignées automatiquement pour les champs `comment` et `reasonCode`. Vous pouvez créer vos propres valeurs pour `reasonCode` lorsque la tâche d'annulation est orientée utilisateurs.

## Annulation d'une exécution de tâche
<a name="cancel-job-execution"></a>

La commande **CancelJobExecution** permet d’annuler une exécution de tâche sur un appareil déterminé. Elle annule l’exécution de la tâche qui se trouve dans un état `QUEUED`. Si vous souhaitez annuler une exécution de tâche dont le statut est en cours, vous devez utiliser le paramètre `--force`.

La commande suivante montre comment annuler l'exécution d'une tâche depuis la tâche 010 s'exécutant sur `myThing`.

```
aws iot cancel-job-execution --job-id 010 --thing-name myThing
```

La commande n'affiche aucune sortie.

Une exécution de tâche qui se trouve dans un état `QUEUED` est annulée. Une exécution de tâche dont l’état est `IN_PROGRESS` est annulée mais si vous spécifiez le paramètre facultatif `--force`. Les exécutions de tâche qui se trouvent dans un état terminal ne peuvent pas être annulées. 

**Avertissement**  
Lorsque vous annulez une exécution de tâche dont le statut est `IN_PROGRESS`, l’appareil ne peut pas mettre à jour le statut d’exécution de la tâche. Soyez vigilant et vérifiez que l'appareil est en mesure de reprendre un état valide.

Si l’exécution de tâche se trouve dans un état terminal ou si l’exécution de tâche présente le statut `IN_PROGRESS` et que le paramètre `--force` a la valeur `true`, cette commande entraîne une exception `InvalidStateTransitionException`.

Le statut d'une exécution de tâche annulée est cohérent à terme. La modification de l’état de l’exécution d’une tâche en `CANCELED` peut prendre du temps, selon différents facteurs.

## Suppression d'une tâche
<a name="delete-job"></a>

La commande **DeleteJob** permet de supprimer une tâche et les exécutions de tâche associées. Par défaut, vous pouvez uniquement supprimer une tâche qui se trouve dans un état terminal (`SUCCEEDED` ou `CANCELED`). Dans le cas contraire, une exception se produit. Vous ne pouvez supprimer une tâche qui se trouve dans l’état `IN_PROGRESS` que si le paramètre `force` a la valeur `true`.

Pour supprimer une tâche, exécutez la commande suivante :

```
aws iot delete-job --job-id 010 --force|--no-force
```

La commande n'affiche aucune sortie.

**Avertissement**  
Lorsque vous supprimez une tâche qui est dans l’état `IN_PROGRESS`, le périphérique qui déploie la tâche ne peut pas accéder aux informations sur la tâche ou mettre à jour le statut d’exécution de la tâche. Soyez vigilant et vérifiez que chaque appareil déployant une tâche annulée est en mesure de reprendre un état valide.

La suppression d'une tâche peut prendre un certain temps qui varie en fonction du nombre d'exécutions de tâche créées pour la tâche et autres facteurs. Pendant la suppression de la tâche, l'état de celle-ci indique `DELETION_IN_PROGRESS`. Toute tentative de suppression ou d’annulation d’une tâche dont le statut est `DELETION_IN_PROGRESS` entraîne une erreur.

Seules 10 tâches peuvent avoir l'état `DELETION_IN_PROGRESS` en même temps. Sinon, une exception `LimitExceededException` se produit.

## Obtention d'un document de tâche
<a name="get-job-document"></a>

Vous utilisez la commande **GetJobDocument** pour récupérer un document de tâche pour une tâche. Un document de tâche est une description des opérations distantes à exécuter par les appareils.

Exécutez la commande suivante pour obtenir un document de tâche.

```
aws iot get-job-document --job-id 010
```

La commande renvoie le document de tâche de la tâche spécifiée :

```
{
    "document": "{\n\t\"operation\":\"install\",\n\t\"url\":\"http://amazon.com/firmWareUpate-01\",\n\t\"data\":\"${aws:iot:s3-presigned-url:https://s3.amazonaws.com/amzn-s3-demo-bucket/datafile}\"\n}"
}
```

**Note**  
Lorsque vous utilisez cette commande pour récupérer un document de travail, l'espace réservé n'est URLs pas remplacé par Amazon S3 présigné. URLs Lorsqu'un appareil appelle l'opération [GetPendingJobExecutions](https://docs.aws.amazon.com/iot/latest/apireference/API_iot-jobs-data_GetPendingJobExecutions.html)API, l'espace réservé URLs est remplacé par Amazon S3 présigné URLs dans le document de travail. 

## Affichage des tâches
<a name="list-jobs"></a>

Pour obtenir la liste de toutes les tâches de votre Compte AWS choix, utilisez la **ListJobs** commande. Les données de travail et d'exécution de travail sont conservées pendant une [durée limitée](https://docs.aws.amazon.com//general/latest/gr/iot_device_management.html#job-limits). Exécutez la commande suivante pour répertorier toutes les tâches de votre Compte AWS :

```
aws iot list-jobs
```

La commande répertorie toutes les tâches de votre compte, triées sur le statut de la tâche :

```
{
    "jobs": [
        {
            "status": "IN_PROGRESS", 
            "lastUpdatedAt": 1486687079.743, 
            "jobArn": "arn:aws:iot:us-east-1:123456789012:job/013", 
            "createdAt": 1486687079.743, 
            "targetSelection": "SNAPSHOT",
            "jobId": "013"
        }, 
        {
            "status": "SUCCEEDED", 
            "lastUpdatedAt": 1486685868.444, 
            "jobArn": "arn:aws:iot:us-east-1:123456789012:job/012", 
            "createdAt": 1486685868.444, 
            "completedAt": 148668789.690,
            "targetSelection": "SNAPSHOT",
            "jobId": "012"
        }, 
        {
            "status": "CANCELED", 
            "lastUpdatedAt": 1486678850.575, 
            "jobArn": "arn:aws:iot:us-east-1:123456789012:job/011", 
            "createdAt": 1486678850.575, 
            "targetSelection": "SNAPSHOT",
            "jobId": "011"
        }
    ]
}
```

## Description d'une tâche
<a name="describe-job"></a>

La commande **DescribeJob** permet d’obtenir le statut d’une tâche. La commande suivante explique comment décrire une tâche :

```
$ aws iot describe-job --job-id 010
```

La commande renvoie le statut de la tâche spécifiée. Par exemple :

```
{
    "documentSource": "https://s3.amazonaws.com/amzn-s3-demo-bucket/job-document.json", 
    "job": {
        "status": "IN_PROGRESS", 
        "jobArn": "arn:aws:iot:us-east-1:123456789012:job/010", 
        "targets": [
            "arn:aws:iot:us-east-1:123456789012:thing/myThing"
        ], 
        "jobProcessDetails": {
            "numberOfCanceledThings": 0, 
            "numberOfFailedThings": 0,
            "numberOfInProgressThings": 0,
            "numberOfQueuedThings": 0,
            "numberOfRejectedThings": 0,
            "numberOfRemovedThings": 0,
            "numberOfSucceededThings": 0,
            "numberOfTimedOutThings": 0,
            "processingTargets": [
                arn:aws:iot:us-east-1:123456789012:thing/thingOne, 
                arn:aws:iot:us-east-1:123456789012:thinggroup/thinggroupOne, 
                arn:aws:iot:us-east-1:123456789012:thing/thingTwo, 
                arn:aws:iot:us-east-1:123456789012:thinggroup/thinggroupTwo 
            ]
        }, 
        "presignedUrlConfig": {
            "expiresInSec": 60, 
            "roleArn": "arn:aws:iam::123456789012:role/S3DownloadRole"
        }, 
        "jobId": "010", 
        "lastUpdatedAt": 1486593195.006, 
        "createdAt": 1486593195.006,
        "targetSelection": "SNAPSHOT",
        "jobExecutionsRolloutConfig": { 
            "exponentialRate": { 
                "baseRatePerMinute": integer,
                "incrementFactor": integer,
                "rateIncreaseCriteria": { 
                    "numberOfNotifiedThings": integer, // Set one or the other
                    "numberOfSucceededThings": integer // of these two values.
                },
            "maximumPerMinute": integer
         }
        },    
        "abortConfig": { 
            "criteriaList": [ 
                { 
                    "action": "string",
                    "failureType": "string",
                    "minNumberOfExecutedThings": integer,
                    "thresholdPercentage": integer
                }
            ]
        },
        "timeoutConfig": { 
           "inProgressTimeoutInMinutes": number
          }
    }
}
```

## Affichage des exécutions d'une tâche
<a name="list-job-executions-for-job"></a>

Une tâche en cours d'exécution sur un appareil spécifique est représentée par un objet d'exécution de tâche. La commande **ListJobExecutionsForJob** permet d'afficher toutes les exécutions de tâche d'une tâche. L'exemple suivant montre comment afficher les exécutions d'une tâche :

```
aws iot list-job-executions-for-job --job-id 010
```

La commande renvoie une liste d'exécutions de tâche :

```
{
    "executionSummaries": [
    {
        "thingArn": "arn:aws:iot:us-east-1:123456789012:thing/thingOne", 
        "jobExecutionSummary": {
            "status": "QUEUED", 
            "lastUpdatedAt": 1486593196.378, 
            "queuedAt": 1486593196.378,
            "executionNumber": 1234567890
        }
    },
    {
        "thingArn": "arn:aws:iot:us-east-1:123456789012:thing/thingTwo", 
        "jobExecutionSummary": {
            "status": "IN_PROGRESS", 
            "lastUpdatedAt": 1486593345.659, 
            "queuedAt": 1486593196.378,
            "startedAt": 1486593345.659,
            "executionNumber": 4567890123
        }
    }
    ]
}
```

## Affichage des exécutions de tâche pour un objet
<a name="list-job-executions-for-thing"></a>

La commande **ListJobExecutionsForThing** permet d'afficher toutes les exécutions de tâche s'exécutant sur un objet. L'exemple suivant montre comment afficher les exécutions de tâche d'un objet :

```
aws iot list-job-executions-for-thing --thing-name thingOne
```

La commande renvoie la liste des exécutions de tâche qui sont en cours d'exécution ou qui se sont exécutées sur l'objet spécifié :

```
{
    "executionSummaries": [
    {
        "jobExecutionSummary": {
            "status": "QUEUED", 
            "lastUpdatedAt": 1486687082.071, 
            "queuedAt": 1486687082.071,
            "executionNumber": 9876543210
        }, 
        "jobId": "013"
    }, 
    {
        "jobExecutionSummary": {
            "status": "IN_PROGRESS",
            "startAt": 1486685870.729, 
            "lastUpdatedAt": 1486685870.729, 
            "queuedAt": 1486685870.729,
            "executionNumber": 1357924680
        }, 
        "jobId": "012"
    }, 
    {
        "jobExecutionSummary": {
            "status": "SUCCEEDED", 
            "startAt": 1486678853.415,
            "lastUpdatedAt": 1486678853.415, 
            "queuedAt": 1486678853.415,
            "executionNumber": 4357680912
        }, 
        "jobId": "011"
    }, 
    {
        "jobExecutionSummary": {
            "status": "CANCELED",
            "startAt": 1486593196.378,
            "lastUpdatedAt": 1486593196.378, 
            "queuedAt": 1486593196.378,
            "executionNumber": 2143174250
        }, 
        "jobId": "010"
    }
    ]
}
```

## Description d'une exécution de tâche
<a name="describe-job-execution"></a>

La commande **DescribeJobExecution** permet d'obtenir le statut d'une exécution de tâche. Pour identifier l'exécution de tâche, vous devez spécifier un ID de tâche, un nom d'objet et éventuellement un numéro d'exécution. La commande suivante explique comment décrire une exécution de tâche :

```
aws iot describe-job-execution --job-id 017 --thing-name thingOne
```

La commande renvoie la chaîne [https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecution.html). Par exemple :

```
{
    "execution": {
        "jobId": "017", 
        "executionNumber": 4516820379,
        "thingArn": "arn:aws:iot:us-east-1:123456789012:thing/thingOne", 
        "versionNumber": 123,
        "createdAt": 1489084805.285, 
        "lastUpdatedAt": 1489086279.937, 
        "startedAt": 1489086279.937, 
        "status": "IN_PROGRESS",
        "approximateSecondsBeforeTimedOut": 100,
        "statusDetails": {
            "status": "IN_PROGRESS", 
            "detailsMap": {
                "percentComplete": "10"
            }
        }
    }
}
```

## Suppression d'une exécution de tâche
<a name="delete-job-execution"></a>

Pour supprimer une exécution de tâche, exécutez la commande **DeleteJobExecution**. Pour identifier l'exécution de tâche, vous devez spécifier un ID de tâche, un nom d'objet et un numéro d'exécution. La commande suivante explique comment supprimer une exécution de tâche :

```
aws iot delete-job-execution --job-id 017 --thing-name thingOne --execution-number 1234567890 --force|--no-force
```

La commande n'affiche aucune sortie.

Par défaut, le statut de l’exécution d’une tâche doit être `QUEUED` ou dans un état terminal (`SUCCEEDED`, `FAILED`, `REJECTED`, `TIMED_OUT`, `REMOVED` ou `CANCELED`). Dans le cas contraire, une erreur se produit. Pour supprimer une exécution de tâche avec le statut `IN_PROGRESS`, vous pouvez définir le paramètre `force` sur `true`.

**Avertissement**  
Lorsque vous supprimez une exécution de tâche qui est dans l’état `IN_PROGRESS`, le périphérique qui exécute la tâche ne peut pas accéder aux informations sur la tâche ou mettre à jour le statut d’exécution de la tâche. Soyez vigilant et vérifiez que l'appareil est en mesure de reprendre un état valide.