

Avis de fin de support : le 7 octobre 2026, AWS le support de. AWS IoT Greengrass Version 1 Après le 7 octobre 2026, vous ne pourrez plus accéder aux AWS IoT Greengrass V1 ressources. Pour plus d'informations, rendez-vous sur [Migrer depuis AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

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.

# Exécution AWS IoT Greengrass dans un conteneur Docker
<a name="run-gg-in-docker-container"></a>

AWS IoT Greengrass peut être configuré pour fonctionner dans un conteneur [Docker](https://www.docker.com/).

Vous pouvez télécharger un Dockerfile via [Amazon sur CloudFront lequel](what-is-gg.md#gg-docker-download) le logiciel AWS IoT Greengrass Core et ses dépendances sont installés. Pour modifier l'image Docker afin qu'elle s'exécute sur différentes architectures de plateforme ou pour réduire la taille de l'image Docker, consultez le fichier `README` dans le package de téléchargement Docker.

Pour vous aider à commencer à expérimenter AWS IoT Greengrass, fournit AWS également des images Docker prédéfinies sur lesquelles le logiciel AWS IoT Greengrass Core et ses dépendances sont installés. Vous pouvez télécharger une image depuis [Docker Hub](https://hub.docker.com/r/amazon/aws-iot-greengrass) ou [Amazon Elastic Container Registry](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) (Amazon ECR). Ces images prédéfinies utilisent les images de base Amazon Linux 2 (x86\$164) et Alpine Linux (x86\$164, ARMv7L ou). AArch64

**Important**  
<a name="docker-images-end-of-maintenance"></a>Le 30 juin 2022, AWS IoT Greengrass fin de la maintenance des images Docker du logiciel AWS IoT Greengrass Core v1.x publiées sur Amazon Elastic Container Registry (Amazon ECR) et Docker Hub. Vous pouvez continuer à télécharger ces images Docker depuis Amazon ECR et Docker Hub jusqu'au 30 juin 2023, soit un an après la fin de la maintenance. Cependant, les images Docker du logiciel AWS IoT Greengrass Core v1.x ne reçoivent plus de correctifs de sécurité ni de corrections de bogues après la fin de la maintenance le 30 juin 2022. Si vous exécutez une charge de travail de production qui dépend de ces images Docker, nous vous recommandons de créer vos propres images Docker à l'aide des Dockerfiles fournis. AWS IoT Greengrass  Pour de plus amples informations, veuillez consulter [AWS IoT Greengrass Logiciel Docker](what-is-gg.md#gg-docker-download).

Cette rubrique explique comment télécharger l'image AWS IoT Greengrass Docker depuis Amazon ECR et l'exécuter sur une plateforme Windows, macOS ou Linux (x86\$164). Cette rubrique comporte les étapes suivantes :

1. [Obtenez l'image du AWS IoT Greengrass conteneur sur Amazon ECR](#docker-pull-image)

1. [Créer et configurer le groupe et le noyau Greengrass](#docker-config-gg)

1. [Exécuter AWS IoT Greengrass localement](#docker-run-gg)

1. [Configurer la conteneurisation « Aucun conteneur » pour le groupe](#docker-no-container)

1. [Déployer des fonctions Lambda dans le conteneur Docker](#docker-add-lambdas)

1. [(Facultatif) Déployez des appareils clients qui interagissent avec Greengrass dans le conteneur Docker](#docker-add-devices)

Les fonctionnalités suivantes ne sont pas prises en charge lorsque vous exécutez AWS IoT Greengrass dans un conteneur Docker :<a name="docker-image-unsupported-features"></a>
+ [Connecteurs](connectors.md) qui s'exécutent en mode **Greengrass container (Conteneur Greengrass)**. Pour exécuter un connecteur dans un conteneur Docker, le connecteur doit s'exécuter en mode **No container (Aucun conteneur)**. Pour rechercher des connecteurs prenant en charge le mode **No container (Aucun conteneur)** veuillez consulter [AWS- connecteurs Greengrass fournis](connectors-list.md). Certains de ces connecteurs ont un paramètre de mode d'isolement que vous devez définir sur **Aucun conteneur**.
+ [Ressources de volumes et d'appareils locales](access-local-resources.md). Vos fonctions Lambda définies par l'utilisateur qui s'exécutent dans le conteneur Docker doivent accéder directement aux appareils et aux volumes du cœur.

Ces fonctionnalités ne sont pas prises en charge lorsque l'environnement d'exécution Lambda du groupe Greengrass est défini sur [Aucun conteneur](lambda-group-config.md#no-container-mode), ce qui est nécessaire pour fonctionner AWS IoT Greengrass dans un conteneur Docker.

## Conditions préalables
<a name="docker-image-prerequisites"></a>

Avant de commencer ce didacticiel, vous devez effectuer les opérations suivantes.<a name="docker-image-prereq-list"></a>
+ Vous devez installer les logiciels et versions suivants sur votre ordinateur hôte en fonction de la version AWS Command Line Interface (AWS CLI) que vous avez choisie.

------
#### [ AWS CLI version 2 ]
  + [Docker](https://docs.docker.com/install/) version 18.09 ou ultérieure. Les versions antérieures peuvent également fonctionner, mais nous recommandons la version 18.09 ou ultérieure.
  + AWS CLI version 2.0.0 ou ultérieure.
    + Pour installer la AWS CLI version 2, voir [Installation de la AWS CLI version 2](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html).
    + Pour configurer le AWS CLI, reportez-vous à [la section Configuration du AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).
**Note**  
Pour effectuer une mise à niveau vers une AWS CLI version 2 ultérieure sur un ordinateur Windows, vous devez répéter le processus [d'installation de MSI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-windows.html).

------
#### [ AWS CLI version 1 ]
  + [Docker](https://docs.docker.com/install/) version 18.09 ou ultérieure. Les versions antérieures peuvent également fonctionner, mais nous recommandons la version 18.09 ou ultérieure.
  + [Python](https://www.python.org/downloads/) version 3.6 ou ultérieure.
  + [pip](https://pip.pypa.io/en/stable/installing) version 18.1 ou suivante.
  + AWS CLI version 1.17.10 ou ultérieure
    + Pour installer la AWS CLI version 1, voir [Installation de la AWS CLI version 1](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html).
    + Pour configurer le AWS CLI, reportez-vous à [la section Configuration du AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).
    + Pour effectuer une mise à niveau vers la dernière AWS CLI version de la version 1, exécutez la commande suivante.

      ```
      pip install awscli --upgrade --user
      ```
**Note**  
Si vous utilisez l'[installation MSI](https://docs.aws.amazon.com/cli/latest/userguide/install-windows.html#msi-on-windows) de la AWS CLI version 1 sous Windows, tenez compte des points suivants :  
Si l'installation de la AWS CLI version 1 ne parvient pas à installer botocore, essayez d'utiliser l'installation [Python et pip](https://docs.aws.amazon.com/cli/latest/userguide/awscli-install-windows.html#awscli-install-windows-pip).
Pour effectuer une mise à niveau vers une AWS CLI version 1 ultérieure, vous devez répéter le processus d'installation de MSI.

------
+ Pour accéder aux ressources d'Amazon Elastic Container Registry (Amazon ECR), vous devez accorder l'autorisation suivante. 
  + Amazon ECR demande aux utilisateurs d'accorder l'`ecr:GetAuthorizationToken`autorisation par le biais d'une politique Gestion des identités et des accès AWS (IAM) avant de pouvoir s'authentifier auprès d'un registre et envoyer ou extraire des images d'un référentiel Amazon ECR. Pour plus d'informations, consultez les [exemples de politiques relatives aux référentiels Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html) et [l'accès à un référentiel Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-access-one-bucket) dans le guide de l'*utilisateur d'Amazon Elastic Container Registry*.

## Étape 1 : obtenir l'image du AWS IoT Greengrass conteneur depuis Amazon ECR
<a name="docker-pull-image"></a>

AWS fournit des images Docker sur lesquelles le logiciel AWS IoT Greengrass Core est installé.

**Avertissement**  <a name="docker-images-python-2.7-removal"></a>
À partir de la version v1.11.6 du logiciel AWS IoT Greengrass Core, les images Greengrass Docker n'incluent plus Python 2.7, car Python 2.7 est arrivé end-of-life en 2020 et ne reçoit plus de mises à jour de sécurité. Si vous choisissez de mettre à jour ces images Docker, nous vous recommandons de vérifier que vos applications fonctionnent avec les nouvelles images Docker avant de déployer les mises à jour sur les appareils de production. Si vous avez besoin de Python 2.7 pour votre application qui utilise une image Greengrass Docker, vous pouvez modifier le Dockerfile Greengrass pour inclure Python 2.7 pour votre application.

Pour savoir comment extraire l'`latest`image depuis Amazon ECR, choisissez votre système d'exploitation :

### Extraire l'image de conteneur (Linux)
<a name="docker-pull-image-linux"></a>

Exécutez les commandes suivantes dans le terminal de votre ordinateur.

1. <a name="docker-get-login"></a>Connectez-vous au AWS IoT Greengrass registre dans Amazon ECR.

   ```
   aws ecr get-login-password --region  us-west-2 | docker login --username AWS --password-stdin https://216483018798.dkr.ecr.us-west-2.amazonaws.com
   ```

   En cas de succès, la sortie imprime `Login Succeeded`.

1. <a name="docker-docker-pull"></a>Récupérez l'image du AWS IoT Greengrass conteneur.

   ```
   docker pull 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
   ```
**Note**  
L'`latest`image contient la dernière version stable du logiciel AWS IoT Greengrass Core installée sur une image de base Amazon Linux 2. Vous pouvez également extraire d'autres images du référentiel. Pour trouver toutes les images disponibles, consultez la page **Tags (Balises)** sur [Docker Hub](https://hub.docker.com/r/amazon/aws-iot-greengrass) ou utilisez la commande **aws ecr list-images**. Par exemple :  

   ```
   aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
   ```

1. Activez les protections symlink and hardlink. Si vous essayez de l'exécuter AWS IoT Greengrass dans un conteneur, vous pouvez activer les paramètres pour le démarrage en cours uniquement.
**Note**  
Vous devrez peut-être utiliser **sudo** pour exécuter ces commandes.
   + Pour activer les paramètres pour le démarrage en cours uniquement :

     ```
     echo 1 > /proc/sys/fs/protected_hardlinks
     echo 1 > /proc/sys/fs/protected_symlinks
     ```
   + Pour activer les paramètres afin qu'ils persistent entre les redémarrages :

     ```
     echo '# AWS IoT Greengrass' >> /etc/sysctl.conf 
     echo 'fs.protected_hardlinks = 1' >> /etc/sysctl.conf 
     echo 'fs.protected_symlinks = 1' >> /etc/sysctl.conf
     
     sysctl -p
     ```

1. <a name="docker-linux-enable-ipv4"></a>Activez le transfert IPv4 réseau, nécessaire au déploiement AWS IoT Greengrass dans le cloud et aux communications MQTT pour fonctionner sous Linux. Dans le fichier`/etc/sysctl.conf`, définissez `net.ipv4.ip_forward` sur 1, puis rechargez `sysctls`.

   ```
   sudo nano /etc/sysctl.conf
   # set this net.ipv4.ip_forward = 1
   sudo sysctl -p
   ```
**Note**  
Vous pouvez utiliser l'éditeur de votre choix à la place de nano.

### Extraire l'image de conteneur (macOS)
<a name="docker-pull-image-mac"></a>

Exécutez les commandes suivantes dans le terminal de votre ordinateur.

1. <a name="docker-get-login"></a>Connectez-vous au AWS IoT Greengrass registre dans Amazon ECR.

   ```
   aws ecr get-login-password --region  us-west-2 | docker login --username AWS --password-stdin https://216483018798.dkr.ecr.us-west-2.amazonaws.com
   ```

   En cas de succès, la sortie imprime `Login Succeeded`.

1. <a name="docker-docker-pull"></a>Récupérez l'image du AWS IoT Greengrass conteneur.

   ```
   docker pull 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
   ```
**Note**  
L'`latest`image contient la dernière version stable du logiciel AWS IoT Greengrass Core installée sur une image de base Amazon Linux 2. Vous pouvez également extraire d'autres images du référentiel. Pour trouver toutes les images disponibles, consultez la page **Tags (Balises)** sur [Docker Hub](https://hub.docker.com/r/amazon/aws-iot-greengrass) ou utilisez la commande **aws ecr list-images**. Par exemple :  

   ```
   aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
   ```

### Extraire l'image de conteneur (Windows)
<a name="docker-pull-image-windows"></a>

Dans une invite de commande, exécutez les commandes suivantes. Pour pouvoir utiliser des commandes Docker sur Windows, Docker Desktop doit être en cours d'exécution.

1. <a name="docker-get-login"></a>Connectez-vous au AWS IoT Greengrass registre dans Amazon ECR.

   ```
   aws ecr get-login-password --region  us-west-2 | docker login --username AWS --password-stdin https://216483018798.dkr.ecr.us-west-2.amazonaws.com
   ```

   En cas de succès, la sortie imprime `Login Succeeded`.

1. <a name="docker-docker-pull"></a>Récupérez l'image du AWS IoT Greengrass conteneur.

   ```
   docker pull 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
   ```
**Note**  
L'`latest`image contient la dernière version stable du logiciel AWS IoT Greengrass Core installée sur une image de base Amazon Linux 2. Vous pouvez également extraire d'autres images du référentiel. Pour trouver toutes les images disponibles, consultez la page **Tags (Balises)** sur [Docker Hub](https://hub.docker.com/r/amazon/aws-iot-greengrass) ou utilisez la commande **aws ecr list-images**. Par exemple :  

   ```
   aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
   ```

## Étape 2 : Créer et configurer le groupe et le noyau Greengrass
<a name="docker-config-gg"></a>

Le logiciel AWS IoT Greengrass Core est installé sur l'image Docker, mais vous devez créer un groupe et un noyau Greengrass. Cela inclut le téléchargement des certificats et du fichier de configuration du noyau.
+ Suivez les étapes de [Module 2 : Installation du logiciel AWS IoT Greengrass de base](module2.md). Ignorez les étapes de téléchargement et d'exécution du logiciel AWS IoT Greengrass Core. Le logiciel et ses dépendances d'exécution sont déjà configurées dans l'image Docker.

## Étape 3 : Exécuter AWS IoT Greengrass localement
<a name="docker-run-gg"></a>

Une votre groupe configuré, vous êtes prêt à configurer et démarrer le noyau. Pour les étapes qui montrent comment procéder, choisissez votre système d'exploitation :

### Exécuter Greengrass localement (Linux)
<a name="docker-run-gg-linux"></a>

Exécutez les commandes suivantes dans le terminal de votre ordinateur.

1. <a name="docker-create-certs-folder"></a>Créez un dossier pour les ressources de sécurité de l'appareil, puis déplacez le certificat et les clés dans ce dossier. Exécutez les commandes suivantes. Remplacez *path-to-security-files* par le chemin d'accès aux ressources de sécurité et remplacez *certificateId* par l'ID du certificat dans les noms de fichiers.

   ```
   mkdir /tmp/certs
   mv path-to-security-files/certificateId-certificate.pem.crt /tmp/certs
   mv path-to-security-files/certificateId-public.pem.key /tmp/certs
   mv path-to-security-files/certificateId-private.pem.key /tmp/certs
   mv path-to-security-files/AmazonRootCA1.pem /tmp/certs
   ```

1. <a name="docker-create-config-folder"></a>Créez un dossier pour la configuration de l'appareil et déplacez le fichier de configuration AWS IoT Greengrass Core dans ce dossier. Exécutez les commandes suivantes. Remplacez *path-to-config-file* par le chemin d'accès au fichier de configuration.

   ```
   mkdir /tmp/config
   mv path-to-config-file/config.json /tmp/config
   ```

1. <a name="docker-docker-run"></a>Démarrez AWS IoT Greengrass et montez les certificats et le fichier de configuration dans le conteneur Docker.

   Remplacez `/tmp` par le chemin d'accès où vous avez décompressé vos certificats et le fichier de configuration.

   ```
   docker run --rm --init -it --name aws-iot-greengrass \
   --entrypoint /greengrass-entrypoint.sh \
   -v /tmp/certs:/greengrass/certs \
   -v /tmp/config:/greengrass/config \
   -p 8883:8883 \
   216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
   ```

   La sortie doit se présenter comme cet exemple :

   ```
   Setting up greengrass daemon
   Validating hardlink/softlink protection
   Waiting for up to 30s for Daemon to start
   
   Greengrass successfully started with PID: 10
   ```

### Exécuter Greengrass localement (macOS)
<a name="docker-run-gg-mac"></a>

Exécutez les commandes suivantes dans le terminal de votre ordinateur.

1. <a name="docker-create-certs-folder"></a>Créez un dossier pour les ressources de sécurité de l'appareil, puis déplacez le certificat et les clés dans ce dossier. Exécutez les commandes suivantes. Remplacez *path-to-security-files* par le chemin d'accès aux ressources de sécurité et remplacez *certificateId* par l'ID du certificat dans les noms de fichiers.

   ```
   mkdir /tmp/certs
   mv path-to-security-files/certificateId-certificate.pem.crt /tmp/certs
   mv path-to-security-files/certificateId-public.pem.key /tmp/certs
   mv path-to-security-files/certificateId-private.pem.key /tmp/certs
   mv path-to-security-files/AmazonRootCA1.pem /tmp/certs
   ```

1. <a name="docker-create-config-folder"></a>Créez un dossier pour la configuration de l'appareil et déplacez le fichier de configuration AWS IoT Greengrass Core dans ce dossier. Exécutez les commandes suivantes. Remplacez *path-to-config-file* par le chemin d'accès au fichier de configuration.

   ```
   mkdir /tmp/config
   mv path-to-config-file/config.json /tmp/config
   ```

1. <a name="docker-docker-run"></a>Démarrez AWS IoT Greengrass et montez les certificats et le fichier de configuration dans le conteneur Docker.

   Remplacez `/tmp` par le chemin d'accès où vous avez décompressé vos certificats et le fichier de configuration.

   ```
   docker run --rm --init -it --name aws-iot-greengrass \
   --entrypoint /greengrass-entrypoint.sh \
   -v /tmp/certs:/greengrass/certs \
   -v /tmp/config:/greengrass/config \
   -p 8883:8883 \
   216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
   ```

   La sortie doit se présenter comme cet exemple :

   ```
   Setting up greengrass daemon
   Validating hardlink/softlink protection
   Waiting for up to 30s for Daemon to start
   
   Greengrass successfully started with PID: 10
   ```

### Exécuter Greengrass localement (Windows)
<a name="docker-run-gg-windows"></a>

1. Créez un dossier pour les ressources de sécurité de l'appareil, puis déplacez le certificat et les clés dans ce dossier. Dans une invite de commande, exécutez les commandes suivantes. Remplacez *path-to-security-files* par le chemin d'accès aux ressources de sécurité et remplacez *certificateId* par l'ID du certificat dans les noms de fichiers.

   ```
   mkdir C:\Users\%USERNAME%\Downloads\certs
   move path-to-security-files\certificateId-certificate.pem.crt C:\Users\%USERNAME%\Downloads\certs
   move path-to-security-files\certificateId-public.pem.key C:\Users\%USERNAME%\Downloads\certs
   move path-to-security-files\certificateId-private.pem.key C:\Users\%USERNAME%\Downloads\certs
   move path-to-security-files\AmazonRootCA1.pem C:\Users\%USERNAME%\Downloads\certs
   ```

1. Créez un dossier pour la configuration de l'appareil et déplacez le fichier de configuration AWS IoT Greengrass Core dans ce dossier. Dans une invite de commande, exécutez les commandes suivantes. Remplacez *path-to-config-file* par le chemin d'accès au fichier de configuration.

   ```
   mkdir C:\Users\%USERNAME%\Downloads\config
   move path-to-config-file\config.json C:\Users\%USERNAME%\Downloads\config
   ```

1. Démarrez AWS IoT Greengrass et montez les certificats et le fichier de configuration dans le conteneur Docker. Dans votre invite de commande, exécutez les commandes suivantes.

   ```
   docker run --rm --init -it --name aws-iot-greengrass --entrypoint /greengrass-entrypoint.sh -v c:/Users/%USERNAME%/Downloads/certs:/greengrass/certs -v c:/Users/%USERNAME%/Downloads/config:/greengrass/config -p 8883:8883 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
   ```

   Lorsque Docker vous invite à partager votre lecteur `C:\` avec le démon Docker, laissez-le créer un montage lié du répertoire `C:\` dans le conteneur Docker. Pour plus d'informations, consultez la section [Disques partagés](https://docs.docker.com/docker-for-windows/#shared-drives) dans la documentation Docker. 

   La sortie doit se présenter comme cet exemple :

   ```
   Setting up greengrass daemon
   Validating hardlink/softlink protection
   Waiting for up to 30s for Daemon to start
   
   Greengrass successfully started with PID: 10
   ```

**Note**  
Si le conteneur n'ouvre pas le shell et se ferme immédiatement, vous pouvez résoudre le problème en procédant à un montage lié des journaux du runtime Greengrass lorsque vous démarrez l'image. Pour de plus amples informations, veuillez consulter [Pour conserver les journaux d'exécution Greengrass en dehors du conteneur Docker](#debugging-docker-persist-logs).

## Étape 4 : Configurer la conteneurisation « Aucun conteneur » pour le groupe Greengrass
<a name="docker-no-container"></a>

Lorsque vous les exécutez AWS IoT Greengrass dans un conteneur Docker, toutes les fonctions Lambda doivent s'exécuter sans conteneurisation. Dans cet étape, vous définissez la conteneurisation par défaut du groupe sur **Aucun conteneur**. Vous devez effectuer cette opération avant le premier déploiement du groupe.

1. <a name="console-gg-groups"></a>Dans le volet de navigation de la AWS IoT console, sous **Gérer**, développez les **appareils Greengrass**, puis choisissez **Groups (V1)**.

1. <a name="group-choose-group"></a>Choisissez le groupe dont vous voulez modifier les paramètres.

1. Choisissez l'onglet **Fonctions Lambda.**

1. **Dans **Environnement d'exécution de la fonction Lambda par défaut**, sélectionnez Modifier.**

1. Dans l'**environnement d'exécution Modifier la fonction Lambda par défaut**, sous Conteneurisation de la fonction **Lambda par défaut, modifiez les paramètres de conteneurisation**.

1. Choisissez **Enregistrer**.

Les modifications prennent effet lorsque le groupe est déployé.

Pour de plus amples informations, veuillez consulter [Configuration de la conteneurisation par défaut pour les fonctions Lambda dans un groupe](lambda-group-config.md#lambda-containerization-groupsettings).

**Note**  
Par défaut, les fonctions Lambda utilisent le paramètre de conteneurisation des groupes. Si vous remplacez le paramètre **Aucun conteneur** pour une fonction Lambda AWS IoT Greengrass lorsqu'elle est exécutée dans un conteneur Docker, le déploiement échoue.

## Étape 5 : Déployer les fonctions Lambda dans le conteneur Docker AWS IoT Greengrass
<a name="docker-add-lambdas"></a>

Vous pouvez déployer des fonctions Lambda de longue durée sur le conteneur Greengrass Docker.
+ Suivez les étapes décrites [Module 3 (partie 1) : Fonctions Lambda sur AWS IoT Greengrass](module3-I.md) pour déployer une fonction Lambda Hello World de longue durée sur le conteneur.

## Étape 6 : (Facultatif) Déployez des appareils clients qui interagissent avec Greengrass exécuté dans le conteneur Docker
<a name="docker-add-devices"></a>

Vous pouvez également déployer des appareils clients qui interagissent avec eux AWS IoT Greengrass lorsqu'ils sont exécutés dans un conteneur Docker.
+ Suivez les étapes décrites [Module 4 : Interaction avec les appareils clients dans un AWS IoT Greengrass groupe](module4.md) pour déployer des appareils clients qui se connectent au cœur et envoient des messages MQTT.

## Arrêter le AWS IoT Greengrass conteneur Docker
<a name="docker-stop"></a>

Pour arrêter le conteneur AWS IoT Greengrass Docker, appuyez sur Ctrl\$1C dans votre terminal ou sur votre invite de commande. Cette action envoie `SIGTERM` le processus du démon Greengrass pour détruire le processus du démon Greengrass et tous les processus Lambda qui ont été lancés par le processus du démon. Le conteneur Docker est initialisé avec le processus `/dev/init` défini comme PID 1, qui permet d'éliminer tous les processus zombies restants. Pour plus d'informations, consultez le [guide de référence d'exécution Docker](https://docs.docker.com/engine/reference/commandline/run/#options).

## Résolution des problèmes AWS IoT Greengrass dans un conteneur Docker
<a name="troubleshooting-docker-gg"></a>

Utilisez les informations suivantes pour résoudre les problèmes liés à l'exécution AWS IoT Greengrass dans un conteneur Docker.

### Erreur : Impossible d'effectuer une connexion interactive à partir d'un appareil autre que TTY.
<a name="docker-troubleshootin-ecr-get-login-password"></a>

**Solution :** cette erreur peut se produire lorsque vous exécutez la commande `aws ecr get-login-password`. Assurez-vous d'avoir installé la dernière AWS CLI version 2 ou version 1. Nous vous recommandons d'utiliser la AWS CLI version 2. Pour plus d’informations, consultez [Installation d’ AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) dans le *Guide de l’utilisateur AWS Command Line Interface *.

### Erreur : options inconnues : -no-include-email.
<a name="docker-troubleshooting-cli-version"></a>

**Solution :** cette erreur peut se produire lorsque vous exécutez la commande `aws ecr get-login`. Assurez-vous que la dernière AWS CLI version est installée (par exemple, exécutez :`pip install awscli --upgrade --user`). Si vous utilisez Windows et avez installé l'interface de ligne de commande à l'aide du programme d'installation MSI, vous devez répéter le processus d'installation. Pour plus d'informations, consultez la section [Installation du AWS Command Line Interface sous Microsoft Windows](https://docs.aws.amazon.com/cli/latest/userguide/awscli-install-windows.html) dans le *Guide de AWS Command Line Interface l'utilisateur*.

### Avertissement : IPv4 est désactivé. La mise en réseau ne fonctionnera pas.
<a name="docker-troubleshooting-ipv4-disabled"></a>

**Solution :** vous pouvez recevoir cet avertissement ou un message similaire lors de l'exécution AWS IoT Greengrass sur un ordinateur Linux. Activez le transfert IPv4 réseau comme décrit dans cette [étape](#docker-linux-enable-ipv4). AWS IoT Greengrass le déploiement dans le cloud et les communications MQTT ne fonctionnent pas lorsque le IPv4 transfert n'est pas activé. Pour plus d'informations, consultez [Configurer les paramètres du noyau dans un espace de noms (sysctls) lors de l'exécution](https://docs.docker.com/engine/reference/commandline/run/#configure-namespaced-kernel-parameters-sysctls-at-runtime) dans la documentation Docker.

### Erreur : Un pare-feu bloque le partage de fichiers entre les fenêtres et les conteneurs.
<a name="docker-troubleshooting-firewall"></a>

**Solution :** vous pouvez recevoir cette erreur ou un message `Firewall Detected` lors de l'exécution de Docker sur un ordinateur Windows. Ce problème peut également survenir si vous êtes connecté à un réseau privé virtuel (VPN) et que vos paramètres réseau empêchent le montage du lecteur partagé. Dans ce cas, désactivez le VPN et réexécutez le conteneur Docker.

### Erreur : une erreur s'est produite (AccessDeniedException) lors de l'appel de l' GetAuthorizationToken opération : L'utilisateur : arn:aws:iam : ::user/ <account-id><user-name>n'est pas autorisé à effectuer : ecr : on resource : \$1 GetAuthorizationToken
<a name="docker-troubleshooting-ecr-perms"></a>

Vous pouvez recevoir cette erreur lors de l'exécution de la `aws ecr get-login-password` commande si vous ne disposez pas des autorisations suffisantes pour accéder à un référentiel Amazon ECR. Pour plus d'informations, consultez les [exemples de politiques relatives aux référentiels Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html) et [l'accès à un référentiel Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security_iam_id-based-policy-examples.html) dans le guide de l'utilisateur *Amazon ECR.*

Pour obtenir de l'aide générale en matière de AWS IoT Greengrass résolution des problèmes, consultez[Résolution des problèmes AWS IoT Greengrass](gg-troubleshooting.md).

### Débogage AWS IoT Greengrass dans un conteneur Docker
<a name="debugging-docker-gg"></a>

Pour déboguer les problèmes avec un conteneur Docker, vous pouvez conserver les journaux d'exécution Greengrass ou attacher un shell interactif au conteneur Docker.

#### Pour conserver les journaux d'exécution Greengrass en dehors du conteneur Docker
<a name="debugging-docker-persist-logs"></a>

Vous pouvez exécuter le conteneur AWS IoT Greengrass Docker après avoir monté le répertoire par liaison. `/greengrass/ggc/var/log` Les journaux sont conservés après la fermeture ou la suppression du conteneur.

**Sur Linux ou macOS**  
[Arrêtez les conteneurs Docker Greengrass](#docker-stop) en cours d'exécution sur l'hôte, puis exécutez la commande suivante dans un terminal. Elle procède au montage lié du répertoire `log` Greengrass et démarre l'image Docker.   
Remplacez `/tmp` par le chemin d'accès où vous avez décompressé vos certificats et le fichier de configuration.  

```
docker run --rm --init -it --name aws-iot-greengrass \
      --entrypoint /greengrass-entrypoint.sh \
      -v /tmp/certs:/greengrass/certs \
      -v /tmp/config:/greengrass/config \
      -v /tmp/log:/greengrass/ggc/var/log \
      -p 8883:8883 \
      216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
```
Vous pouvez alors vérifier vos journaux à l'emplacement `/tmp/log` sur votre hôte afin de voir ce qui s'est passé lors de l'exécution de Greengrass dans le conteneur Docker.

**Sous Windows**  
[Arrêtez les conteneurs Docker Greengrass](#docker-stop) en cours d'exécution sur l'hôte, puis exécutez la commande suivante dans une invite de commande. Elle procède au montage lié du répertoire `log` Greengrass et démarre l'image Docker.  

```
cd C:\Users\%USERNAME%\Downloads
mkdir log
docker run --rm --init -it --name aws-iot-greengrass --entrypoint /greengrass-entrypoint.sh -v c:/Users/%USERNAME%/Downloads/certs:/greengrass/certs -v c:/Users/%USERNAME%/Downloads/config:/greengrass/config -v c:/Users/%USERNAME%/Downloads/log:/greengrass/ggc/var/log -p 8883:8883 216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
```
Vous pouvez alors vérifier vos journaux à l'emplacement `C:/Users/%USERNAME%/Downloads/log` sur votre hôte afin de voir ce qui s'est passé lors de l'exécution de Greengrass dans le conteneur Docker.

#### Pour attacher un shell interactif au conteneur Docker
<a name="debugging-docker-attach-shell"></a>

Vous pouvez associer un shell interactif à un conteneur AWS IoT Greengrass Docker en cours d'exécution. Cela peut vous aider à étudier l'état du conteneur Docker Greengrass.

**Sur Linux ou macOS**  
Pendant que le conteneur Docker Greengrass est en cours d'exécution, exécutez la commande suivante dans un autre terminal.  

```
docker exec -it $(docker ps -a -q -f "name=aws-iot-greengrass") /bin/bash
```

**Sous Windows**  
Pendant que le conteneur Docker Greengrass est en cours d'exécution, exécutez les commandes suivantes dans une invite de commande distincte.  

```
docker ps -a -q -f "name=aws-iot-greengrass"
```
Remplacez *gg-container-id* par le `container_id` résultat de la commande précédente.  

```
docker exec -it gg-container-id /bin/bash
```