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écuter AWS IoT Greengrass dans un conteneur Docker avec provisionnement manuel des ressources
Ce didacticiel explique comment installer et exécuter le logiciel AWS IoT Greengrass Core dans un conteneur Docker avec des ressources provisionnées AWS manuellement.
Rubriques
- Prérequis
- Récupérer des points de AWS IoT terminaison
- Créez n'importe AWS IoT quoi
- Créez le certificat d'objet
- Configurer le certificat d'objet
- Création d'un rôle d'échange de jetons
- Télécharger les certificats sur l'appareil
- Création d'un fichier de configuration
- Création d'un fichier d'environnement
- Exécuter le logiciel AWS IoT Greengrass Core dans un conteneur
- Étapes suivantes
Prérequis
Pour suivre ce didacticiel, vous aurez besoin des éléments suivants :
-
Un Compte AWS. Si vous n'en avez pas, veuillez consulter Configurez un Compte AWS.
-
Une image AWS IoT Greengrass Docker. Vous pouvez créer une image à partir du AWS IoT Greengrass Dockerfile.
-
L'ordinateur hôte sur lequel vous exécutez le conteneur Docker doit répondre aux exigences suivantes :
-
Système d'exploitation basé sur Linux doté d'une connexion Internet.
-
Docker Engine
version 18.09 ou ultérieure. -
(Facultatif) Docker Compose
version 1.22 ou ultérieure. Docker Compose n'est requis que si vous souhaitez utiliser la CLI Docker Compose pour exécuter vos images Docker.
-
Récupérer des points de AWS IoT terminaison
Obtenez les AWS IoT points de terminaison qui vous Compte AWS conviennent et enregistrez-les pour les utiliser ultérieurement. Votre appareil utilise ces points de terminaison pour se connecter àAWS IoT. Procédez comme suit :
-
Obtenez le point de terminaison de AWS IoT données pour votreCompte AWS.
aws iot describe-endpoint --endpoint-type iot:Data-ATS
La réponse ressemble à l'exemple suivant, si la demande aboutit.
{ "endpointAddress": "
device-data-prefix
-ats.iot.us-west-2.amazonaws.com" } -
Obtenez le point de terminaison des informations d'AWS IoTidentification pour votreCompte AWS.
aws iot describe-endpoint --endpoint-type iot:CredentialProvider
La réponse ressemble à l'exemple suivant, si la demande aboutit.
{ "endpointAddress": "
device-credentials-prefix
.credentials.iot.us-west-2.amazonaws.com" }
Créez n'importe AWS IoT quoi
AWS IoTles objets représentent les appareils et les entités logiques auxquels ils se connectentAWS IoT. Les appareils Greengrass Core sont AWS IoT des objets. Lorsque vous enregistrez un appareil en tant qu'AWS IoTobjet, celui-ci peut utiliser un certificat numérique pour s'authentifier. AWS
Dans cette section, vous allez créer un AWS IoT objet qui représente votre appareil.
Pour créer AWS IoT quelque chose
-
Créez AWS IoT quelque chose pour votre appareil. Sur votre ordinateur de développement, exécutez la commande suivante.
-
Remplacez
MyGreengrassCore
par le nom de l'objet à utiliser. Ce nom est également le nom de votre appareil principal Greengrass.Note
Le nom de l'objet ne peut pas contenir de caractères deux-points (
:
).
aws iot create-thing --thing-name
MyGreengrassCore
La réponse ressemble à l'exemple suivant, si la demande aboutit.
{ "thingName": "MyGreengrassCore", "thingArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore", "thingId": "8cb4b6cd-268e-495d-b5b9-1713d71dbf42" }
-
-
(Facultatif) Ajoutez l'AWS IoTobjet à un nouveau groupe d'objets ou à un groupe d'objets existant. Vous utilisez des groupes d'objets pour gérer des flottes d'appareils principaux de Greengrass. Lorsque vous déployez des composants logiciels sur vos appareils, vous pouvez cibler des appareils individuels ou des groupes d'appareils. Vous pouvez ajouter un appareil à un groupe d'objets avec un déploiement Greengrass actif pour déployer les composants logiciels de ce groupe d'objets sur l'appareil. Procédez comme suit :
-
(Facultatif) Créez un AWS IoT groupe d'objets.
-
Remplacez
MyGreengrassCoreGroup
par le nom du groupe d'objets à créer.Note
Le nom du groupe d'objets ne peut pas contenir de deux-points (
:
).
aws iot create-thing-group --thing-group-name
MyGreengrassCoreGroup
La réponse ressemble à l'exemple suivant, si la demande aboutit.
{ "thingGroupName": "MyGreengrassCoreGroup", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/MyGreengrassCoreGroup", "thingGroupId": "4df721e1-ff9f-4f97-92dd-02db4e3f03aa" }
-
-
Ajoutez l'AWS IoTobjet à un groupe d'objets.
-
Remplacez
MyGreengrassCore
par le nom de votre AWS IoT objet. -
Remplacez
MyGreengrassCoreGroup
par le nom du groupe d'objets.
aws iot add-thing-to-thing-group --thing-name
MyGreengrassCore
--thing-group-nameMyGreengrassCoreGroup
La commande n'a aucune sortie si la demande aboutit.
-
-
Créez le certificat d'objet
Lorsque vous enregistrez un appareil en tant qu'AWS IoTobjet, celui-ci peut utiliser un certificat numérique pour s'authentifier. AWS Ce certificat permet à l'appareil de communiquer avec AWS IoT etAWS IoT Greengrass.
Dans cette section, vous allez créer et télécharger des certificats auxquels votre appareil peut se connecterAWS.
Pour créer le certificat d'objet
-
Créez un dossier dans lequel vous téléchargerez les certificats de l'AWS IoTobjet.
mkdir greengrass-v2-certs
-
Créez et téléchargez les certificats AWS IoT correspondants.
aws iot create-keys-and-certificate --set-as-active --certificate-pem-outfile greengrass-v2-certs/device.pem.crt --public-key-outfile greengrass-v2-certs/public.pem.key --private-key-outfile greengrass-v2-certs/private.pem.key
La réponse ressemble à l'exemple suivant, si la demande aboutit.
{ "certificateArn": "arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4", "certificateId": "aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4", "certificatePem": "-----BEGIN CERTIFICATE----- MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w 0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5 jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw 3rrszlaEXAMPLE= -----END CERTIFICATE-----", "keyPair": { "PublicKey": "-----BEGIN PUBLIC KEY-----\ MIIBIjANBgkqhkEXAMPLEQEFAAOCAQ8AMIIBCgKCAQEAEXAMPLE1nnyJwKSMHw4h\ MMEXAMPLEuuN/dMAS3fyce8DW/4+EXAMPLEyjmoF/YVF/gHr99VEEXAMPLE5VF13\ 59VK7cEXAMPLE67GK+y+jikqXOgHh/xJTwo+sGpWEXAMPLEDz18xOd2ka4tCzuWEXAMPLEahJbYkCPUBSU8opVkR7qkEXAMPLE1DR6sx2HocliOOLtu6Fkw91swQWEXAMPLE\\GB3ZPrNh0PzQYvjUStZeccyNCx2EXAMPLEvp9mQOUXP6plfgxwKRX2fEXAMPLEDa\ hJLXkX3rHU2xbxJSq7D+XEXAMPLEcw+LyFhI5mgFRl88eGdsAEXAMPLElnI9EesG\ FQIDAQAB\ -----END PUBLIC KEY-----\ ", "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\ key omitted for security reasons\ -----END RSA PRIVATE KEY-----\ " } }
Enregistrez le nom de ressource Amazon (ARN) du certificat afin de l'utiliser pour configurer le certificat ultérieurement.
Configurer le certificat d'objet
Attachez le certificat d'AWS IoTobjet à l'objet que vous avez créé précédemment et ajoutez une AWS IoT politique au certificat afin de définir les AWS IoT autorisations pour le périphérique principal.
Pour configurer le certificat de l'objet
-
Joignez le certificat à l'AWS IoTobjet.
-
Remplacez
MyGreengrassCore
par le nom de votre AWS IoT objet. -
Remplacez le certificat Amazon Resource Name (ARN) par l'ARN du certificat que vous avez créé à l'étape précédente.
aws iot attach-thing-principal --thing-name
MyGreengrassCore
--principalarn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
La commande n'a aucune sortie si la demande aboutit.
-
-
Créez et joignez une AWS IoT politique qui définit les AWS IoT autorisations pour votre appareil principal Greengrass. La politique suivante permet d'accéder à tous les sujets MQTT et aux opérations Greengrass, afin que votre appareil fonctionne avec les applications personnalisées et les modifications futures qui nécessitent de nouvelles opérations Greengrass. Vous pouvez restreindre cette politique en fonction de votre cas d'utilisation. Pour plus d’informations, consultez AWS IoTPolitique minimale pour les appareils AWS IoT Greengrass V2 principaux.
Si vous avez déjà configuré un appareil principal Greengrass, vous pouvez joindre sa AWS IoT politique au lieu d'en créer une nouvelle.
Procédez comme suit :
-
Créez un fichier contenant le document de AWS IoT politique dont les appareils principaux de Greengrass ont besoin.
Par exemple, sur un système basé sur Linux, vous pouvez exécuter la commande suivante pour utiliser GNU nano pour créer le fichier.
nano greengrass-v2-iot-policy.json
Copiez le code JSON suivant dans le fichier.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Receive", "iot:Connect", "greengrass:*" ], "Resource": [ "*" ] } ] }
-
Créez une AWS IoT politique à partir du document de stratégie.
-
Remplacez
GreengrassV2IoT ThingPolicy
par le nom de la politique à créer.
aws iot create-policy --policy-name
GreengrassV2IoTThingPolicy
--policy-document file://greengrass-v2-iot-policy.jsonLa réponse ressemble à l'exemple suivant, si la demande aboutit.
{ "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{ \\"Version\\": \\"2012-10-17\\", \\"Statement\\": [ { \\"Effect\\": \\"Allow\\", \\"Action\\": [ \\"iot:Publish\\", \\"iot:Subscribe\\", \\"iot:Receive\\", \\"iot:Connect\\", \\"greengrass:*\\" ], \\"Resource\\": [ \\"*\\" ] } ] }", "policyVersionId": "1" }
-
-
Joignez la AWS IoT politique au certificat de l'AWS IoTobjet.
-
Remplacez
GreengrassV2IoT ThingPolicy
par le nom de la politique à associer. -
Remplacez l'ARN cible par l'ARN du certificat de votre AWS IoT objet.
aws iot attach-policy --policy-name
GreengrassV2IoTThingPolicy
--targetarn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
La commande n'a aucune sortie si la demande aboutit.
-
-
Création d'un rôle d'échange de jetons
Les appareils principaux de Greengrass utilisent un rôle de service IAM, appelé rôle d'échange de jetons, pour autoriser les appels aux services. AWS L'appareil utilise le fournisseur AWS IoT d'informations d'identification pour obtenir des AWS informations d'identification temporaires pour ce rôle, ce qui lui permet d'interagir avec Amazon LogsAWS IoT, d'envoyer des journaux à Amazon CloudWatch Logs et de télécharger des artefacts de composants personnalisés depuis Amazon S3. Pour plus d’informations, consultez Autoriser les appareils principaux à interagir avec les AWS services.
Vous utilisez un alias de AWS IoT rôle pour configurer le rôle d'échange de jetons pour les appareils principaux de Greengrass. Les alias de rôle vous permettent de modifier le rôle d'échange de jetons d'un appareil tout en conservant la même configuration. Pour plus d'informations, consultez la section Autorisation des appels directs vers AWS des services dans le Guide du AWS IoT Core développeur.
Dans cette section, vous allez créer un rôle IAM d'échange de jetons et un alias de AWS IoT rôle pointant vers le rôle. Si vous avez déjà configuré un appareil principal Greengrass, vous pouvez utiliser son rôle d'échange de jetons et son alias de rôle au lieu d'en créer de nouveaux. Ensuite, vous configurez l'appareil pour AWS IoT qu'il utilise ce rôle et cet alias.
Pour créer un rôle IAM d'échange de jetons
-
Créez un rôle IAM que votre appareil peut utiliser comme rôle d'échange de jetons. Procédez comme suit :
-
Créez un fichier contenant le document de politique de confiance requis par le rôle d'échange de jetons.
Par exemple, sur un système basé sur Linux, vous pouvez exécuter la commande suivante pour utiliser GNU nano pour créer le fichier.
nano device-role-trust-policy.json
Copiez le code JSON suivant dans le fichier.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
Créez le rôle d'échange de jetons avec le document de politique de confiance.
-
Remplacez
GreengrassV2 TokenExchangeRole
par le nom du rôle IAM à créer.
aws iam create-role --role-name
GreengrassV2TokenExchangeRole
--assume-role-policy-document file://device-role-trust-policy.jsonLa réponse ressemble à l'exemple suivant, si la demande aboutit.
{ "Role": { "Path": "/", "RoleName": "GreengrassV2TokenExchangeRole", "RoleId": "AROAZ2YMUHYHK5OKM77FB", "Arn": "arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole", "CreateDate": "2021-02-06T00:13:29+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } }
-
-
Créez un fichier contenant le document de politique d'accès requis par le rôle d'échange de jetons.
Par exemple, sur un système basé sur Linux, vous pouvez exécuter la commande suivante pour utiliser GNU nano pour créer le fichier.
nano device-role-access-policy.json
Copiez le code JSON suivant dans le fichier.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "s3:GetBucketLocation" ], "Resource": "*" } ] }
Note
Cette politique d'accès n'autorise pas l'accès aux artefacts des composants dans les compartiments S3. Pour déployer des composants personnalisés qui définissent des artefacts dans Amazon S3, vous devez ajouter des autorisations au rôle afin de permettre à votre appareil principal de récupérer les artefacts des composants. Pour plus d’informations, consultez Autoriser l'accès aux compartiments S3 pour les artefacts des composants.
Si vous ne possédez pas encore de compartiment S3 pour les artefacts des composants, vous pouvez ajouter ces autorisations ultérieurement après avoir créé un compartiment.
-
Créez la politique IAM à partir du document de stratégie.
-
Remplacez
GreengrassV2 TokenExchangeRoleAccess
par le nom de la politique IAM à créer.
aws iam create-policy --policy-name
GreengrassV2TokenExchangeRoleAccess
--policy-document file://device-role-access-policy.jsonLa réponse ressemble à l'exemple suivant, si la demande aboutit.
{ "Policy": { "PolicyName": "GreengrassV2TokenExchangeRoleAccess", "PolicyId": "ANPAZ2YMUHYHACI7C5Z66", "Arn": "arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess", "Path": "/", "DefaultVersionId": "v1", "AttachmentCount": 0, "PermissionsBoundaryUsageCount": 0, "IsAttachable": true, "CreateDate": "2021-02-06T00:37:17+00:00", "UpdateDate": "2021-02-06T00:37:17+00:00" } }
-
-
Associez la politique IAM au rôle d'échange de jetons.
-
Remplacez
GreengrassV2 TokenExchangeRole
par le nom du rôle IAM. -
Remplacez l'ARN de la stratégie par l'ARN de la stratégie IAM que vous avez créée à l'étape précédente.
aws iam attach-role-policy --role-name
GreengrassV2TokenExchangeRole
--policy-arnarn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess
La commande n'a aucune sortie si la demande aboutit.
-
-
-
Créez un alias de AWS IoT rôle qui pointe vers le rôle d'échange de jetons.
-
Remplacez
GreengrassCoreTokenExchangeRoleAlias
par le nom de l'alias de rôle à créer. -
Remplacez l'ARN du rôle par l'ARN du rôle IAM que vous avez créé à l'étape précédente.
aws iot create-role-alias --role-alias
GreengrassCoreTokenExchangeRoleAlias
--role-arnarn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole
La réponse ressemble à l'exemple suivant, si la demande aboutit.
{ "roleAlias": "GreengrassCoreTokenExchangeRoleAlias", "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias" }
Note
Pour créer un alias de rôle, vous devez être autorisé à transmettre le rôle IAM d'échange de jetons àAWS IoT. Si vous recevez un message d'erreur lorsque vous essayez de créer un alias de rôle, vérifiez que votre AWS utilisateur dispose de cette autorisation. Pour plus d'informations, consultez la section Octroi à un utilisateur des autorisations lui permettant de transférer un rôle à un AWS service dans le Guide de AWS Identity and Access Management l'utilisateur.
-
-
Créez et attachez une AWS IoT politique qui permet à votre appareil principal Greengrass d'utiliser l'alias de rôle pour assumer le rôle d'échange de jetons. Si vous avez déjà configuré un appareil principal Greengrass, vous pouvez associer sa AWS IoT politique d'alias de rôle au lieu d'en créer une nouvelle. Procédez comme suit :
-
(Facultatif) Créez un fichier contenant le document AWS IoT de politique requis par l'alias de rôle.
Par exemple, sur un système basé sur Linux, vous pouvez exécuter la commande suivante pour utiliser GNU nano pour créer le fichier.
nano greengrass-v2-iot-role-alias-policy.json
Copiez le code JSON suivant dans le fichier.
-
Remplacez l'ARN de la ressource par l'ARN de votre alias de rôle.
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:AssumeRoleWithCertificate", "Resource": "
arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias
" } ] } -
-
Créez une AWS IoT politique à partir du document de stratégie.
-
Remplacez
GreengrassCoreTokenExchangeRoleAliasPolicy
par le nom de la AWS IoT politique à créer.
aws iot create-policy --policy-name
GreengrassCoreTokenExchangeRoleAliasPolicy
--policy-document file://greengrass-v2-iot-role-alias-policy.jsonLa réponse ressemble à l'exemple suivant, si la demande aboutit.
{ "policyName": "GreengrassCoreTokenExchangeRoleAliasPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassCoreTokenExchangeRoleAliasPolicy", "policyDocument": "{ \\"Version\\":\\"2012-10-17\\", \\"Statement\\": [ { \\"Effect\\": \\"Allow\\", \\"Action\\": \\"iot:AssumeRoleWithCertificate\\", \\"Resource\\": \\"arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias\\" } ] }", "policyVersionId": "1" }
-
-
Joignez la AWS IoT politique au certificat de l'AWS IoTobjet.
-
Remplacez
GreengrassCoreTokenExchangeRoleAliasPolicy
par le nom de la AWS IoT politique d'alias de rôle. -
Remplacez l'ARN cible par l'ARN du certificat de votre AWS IoT objet.
aws iot attach-policy --policy-name
GreengrassCoreTokenExchangeRoleAliasPolicy
--targetarn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
La commande n'a aucune sortie si la demande aboutit.
-
-
Télécharger les certificats sur l'appareil
Auparavant, vous avez téléchargé le certificat de votre appareil sur votre ordinateur de développement. Dans cette section, vous allez télécharger le certificat de l'autorité de certification racine (CA) Amazon. Ensuite, si vous prévoyez d'exécuter le logiciel AWS IoT Greengrass Core dans Docker sur un autre ordinateur que votre ordinateur de développement, vous copiez les certificats sur cet ordinateur hôte. Le logiciel AWS IoT Greengrass Core utilise ces certificats pour se connecter au service AWS IoT cloud.
Pour télécharger des certificats sur l'appareil
-
Sur votre ordinateur de développement, téléchargez le certificat Amazon Root Certificate Authority (CA). AWS IoTles certificats sont associés par défaut au certificat de l'autorité de certification racine d'Amazon.
-
Si vous prévoyez d'exécuter le logiciel AWS IoT Greengrass Core dans Docker sur un appareil différent de celui de votre ordinateur de développement, copiez les certificats sur l'ordinateur hôte. Si SSH et SCP sont activés sur l'ordinateur de développement et sur l'ordinateur hôte, vous pouvez utiliser la
scp
commande de votre ordinateur de développement pour transférer les certificats. Remplacezdevice-ip-address
par l'adresse IP de votre ordinateur hôte.scp -r greengrass-v2-certs/
device-ip-address
:~
Création d'un fichier de configuration
-
Sur l'ordinateur hôte, créez un dossier dans lequel vous placez votre fichier de configuration.
mkdir ./greengrass-v2-config
-
Utilisez un éditeur de texte pour créer un fichier de configuration nommé
config.yaml
dans le./greengrass-v2-config
dossier.Par exemple, vous pouvez exécuter la commande suivante pour utiliser GNU nano pour créer le
config.yaml
.nano ./greengrass-v2-config/config.yaml
-
Copiez le contenu YAML suivant dans le fichier. Ce fichier de configuration partiel spécifie les paramètres du système et les paramètres du noyau Greengrass.
--- system: certificateFilePath: "
/tmp/certs
/device.pem.crt" privateKeyPath: "/tmp/certs
/private.pem.key" rootCaPath: "/tmp/certs
/AmazonRootCA1.pem" rootpath: "
" thingName: "/greengrass/v2
MyGreengrassCore
" services: aws.greengrass.Nucleus: componentType: "NUCLEUS" version: "nucleus-version
" configuration: awsRegion: "region
" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias
" iotDataEndpoint: "device-data-prefix
-ats.iot.region
.amazonaws.com" iotCredEndpoint: "device-credentials-prefix
.credentials.region
.amazonaws.com"Remplacez ensuite les valeurs suivantes :
-
/tmp/certificats
. Le répertoire du conteneur Docker dans lequel vous montez les certificats téléchargés lorsque vous démarrez le conteneur. -
. Le dossier racine de Greengrass que vous souhaitez utiliser pour l'installation. Vous utilisez la variable d'/greengrass/v2
GGC_ROOT
environnement pour définir cette valeur. -
MyGreengrassCore
. Nom de l'objet AWS IoT. -
version noyau
. Version du logiciel AWS IoT Greengrass Core à installer. Cette valeur doit correspondre à la version de l'image Docker ou du Dockerfile que vous avez téléchargé. Si vous avez téléchargé l'image Greengrass Docker avec lalatest
balise, utilisez-ladocker inspect
pour voir la version de l'image.image-id
-
région
. L'Région AWSendroit où vous avez créé vos AWS IoT ressources. Vous devez également spécifier la même valeur pour la variable d'AWS_REGION
environnement dans votre fichier d'environnement. -
GreengrassCoreTokenExchangeRoleAlias
. Alias du rôle d'échange de jetons. -
device-data-prefix
. Le préfixe de votre point de terminaison AWS IoT de données. -
device-credentials-prefix
. Le préfixe du point de terminaison de vos AWS IoT informations d'identification.
-
Création d'un fichier d'environnement
Ce didacticiel utilise un fichier d'environnement pour définir les variables d'environnement qui seront transmises au programme d'installation du logiciel AWS IoT Greengrass Core dans le conteneur Docker. Vous pouvez également utiliser l'--env
argument -e
ordocker run
commande pour définir des variables d'environnement dans le conteneur Docker ou vous pouvez définir les variables dans un environment
blocdocker-compose.yml
fichier.
-
Utilisez un éditeur de texte pour créer un fichier d'environnement nommé
.env
.Par exemple, sur un système basé sur Linux, vous pouvez exécuter la commande suivante pour utiliser GNU nano afin de créer le
.env
dans le répertoire actuel.nano .env
-
Copiez le contenu suivant dans le fichier.
GGC_ROOT_PATH=
AWS_REGION=/greengrass/v2
region
PROVISION=false COMPONENT_DEFAULT_USER=ggc_user:ggc_group INIT_CONFIG=/tmp/config/
config.yamlRemplacez ensuite les valeurs suivantes.
-
. Le chemin d'accès au dossier racine à utiliser pour installer le logiciel AWS IoT Greengrass Core./greengrass/v2
-
région
. L'Région AWSendroit où vous avez créé vos AWS IoT ressources. Vous devez spécifier la même valeur pour le paramètreawsRegion
de configuration dans votre fichier de configuration. -
/tmp/config/
. Le dossier dans lequel vous montez le fichier de configuration lorsque vous démarrez le conteneur Docker.
Note
Vous pouvez définir la variable d'
DEPLOY_DEV_TOOLS
environnement surtrue
pour déployer le composant Greengrass CLI, ce qui vous permet de développer des composants personnalisés dans le conteneur Docker. Nous vous recommandons d'utiliser ce composant uniquement dans les environnements de développement, et non dans les environnements de production. Ce composant permet d'accéder à des informations et à des opérations dont vous n'avez généralement pas besoin dans un environnement de production. Respectez le principe du moindre privilège en déployant ce composant uniquement sur les appareils principaux là où vous en avez besoin. -
Exécuter le logiciel AWS IoT Greengrass Core dans un conteneur
Ce didacticiel explique comment démarrer l'image Docker que vous avez créée dans un conteneur Docker. Vous pouvez utiliser la CLI Docker ou la CLI Docker Compose pour exécuter l'image logicielle AWS IoT Greengrass Core dans un conteneur Docker.
Étapes suivantes
AWS IoT GreengrassLe logiciel de base s'exécute désormais dans un conteneur Docker. Exécutez la commande suivante pour récupérer l'ID du conteneur en cours d'exécution.
docker ps
Vous pouvez ensuite exécuter la commande suivante pour accéder au conteneur et explorer les logiciels AWS IoT Greengrass principaux exécutés à l'intérieur du conteneur.
docker exec -it
container-id
/bin/bash
Pour plus d'informations sur la création d'un composant simple, voir Étape 4 : développer et tester un composant sur votre appareil dans Didacticiel : Commencer avec AWS IoT Greengrass V2
Note
Lorsque vous exécutez docker exec
des commandes dans le conteneur Docker, ces commandes ne sont pas enregistrées dans les journaux Docker. Pour enregistrer vos commandes dans les journaux Docker, attachez un shell interactif au conteneur Docker. Pour plus d’informations, consultez Attachez un shell interactif au conteneur Docker.
Le fichier journal AWS IoT Greengrass Core est appelé greengrass.log
et se trouve dans
. Les fichiers journaux des composants se trouvent également dans le même répertoire. Pour copier les journaux de Greengrass dans un répertoire temporaire de l'hôte, exécutez la commande suivante :
/logs/greengrass/v2
docker cp
container-id
:/greengrass/v2/logs/tmp/logs
Si vous souhaitez conserver les journaux après la sortie ou la suppression d'un conteneur, nous vous recommandons de lier uniquement le
répertoire au répertoire des journaux temporaires sur l'hôte au lieu de monter l'intégralité du répertoire Greengrass. Pour plus d’informations, consultez Persister les logs Greengrass en dehors du conteneur Docker.
/logs/greengrass/v2
Pour arrêter un conteneur AWS IoT Greengrass Docker en cours d'exécution, exécutez docker
stop
oudocker-compose -f docker-compose.yml stop
. Cette action est envoyée SIGTERM
au processus Greengrass et arrête tous les processus associés qui ont été lancés dans le conteneur. Le conteneur Docker est initialisé avec l'docker-init
exécutable en tant que processus PID 1, ce qui permet de supprimer les processus zombies restants. Pour plus d'informations, consultez la section Spécifier un processus d'initialisation
Pour plus d'informations sur la résolution des problèmes liés AWS IoT Greengrass à l'exécution dans un conteneur Docker, consultezRésolution des problèmes liés à AWS IoT Greengrass dans un conteneur Docker.