Esegui AWS IoT Greengrass in un contenitore Docker con provisioning manuale delle risorse - AWS IoT Greengrass

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esegui AWS IoT Greengrass in un contenitore Docker con provisioning manuale delle risorse

Questo tutorial mostra come installare ed eseguire il software AWS IoT Greengrass Core in un contenitore Docker con risorse assegnate manualmente. AWS

Prerequisiti

Per completare questo tutorial, è necessario quanto segue:

  • Un Account AWS. Se non lo hai, consultare Configura un Account AWS.

  • Un'immagine AWS IoT Greengrass Docker. Puoi creare un'immagine dal AWS IoT Greengrass Dockerfile.

  • Il computer host su cui si esegue il contenitore Docker deve soddisfare i seguenti requisiti:

    • Un sistema operativo basato su Linux con una connessione Internet.

    • Docker Engine versione 18.09 o successiva.

    • (Facoltativo) Docker Compose versione 1.22 o successiva. Docker Compose è necessario solo se si desidera utilizzare la CLI Docker Compose per eseguire le immagini Docker.

AWS IoTRecupera gli endpoint

Ottieni gli AWS IoT endpoint per te e salvali per Account AWS utilizzarli in un secondo momento. Il tuo dispositivo utilizza questi endpoint per connettersi a. AWS IoT Esegui questa operazione:

  1. Ottieni l'endpoint di AWS IoT dati per il tuo. Account AWS

    aws iot describe-endpoint --endpoint-type iot:Data-ATS

    La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

    { "endpointAddress": "device-data-prefix-ats.iot.us-west-2.amazonaws.com" }
  2. Ottieni l'endpoint delle AWS IoT credenziali per il tuo. Account AWS

    aws iot describe-endpoint --endpoint-type iot:CredentialProvider

    La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

    { "endpointAddress": "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com" }

Crea qualsiasi cosa AWS IoT

AWS IoTle cose rappresentano dispositivi ed entità logiche a cui si connettonoAWS IoT. I dispositivi core Greengrass sono AWS IoT cose. Quando registri un dispositivo come AWS IoT oggetto, quel dispositivo può utilizzare un certificato digitale con cui autenticarsi. AWS

In questa sezione, crei AWS IoT qualcosa che rappresenta il tuo dispositivo.

Per creare qualsiasi AWS IoT cosa
  1. Crea AWS IoT qualcosa per il tuo dispositivo. Sul tuo computer di sviluppo, esegui il seguente comando.

    • Sostituisci MyGreengrassCorecon il nome dell'oggetto da usare. Questo nome è anche il nome del dispositivo principale Greengrass.

      Nota

      Il nome dell'oggetto non può contenere i due punti (:).

    aws iot create-thing --thing-name MyGreengrassCore

    La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

    { "thingName": "MyGreengrassCore", "thingArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore", "thingId": "8cb4b6cd-268e-495d-b5b9-1713d71dbf42" }
  2. (Facoltativo) Aggiungere l'AWS IoToggetto a un gruppo di oggetti nuovo o esistente. Utilizzi i gruppi di cose per gestire flotte di dispositivi core Greengrass. Quando distribuisci componenti software sui tuoi dispositivi, puoi scegliere come target singoli dispositivi o gruppi di dispositivi. È possibile aggiungere un dispositivo a un gruppo di cose con una distribuzione Greengrass attiva per distribuire i componenti software di quel gruppo di cose sul dispositivo. Esegui questa operazione:

    1. (Facoltativo) Crea un gruppo di AWS IoT cose.

      • Sostituire MyGreengrassCoreGroupcon il nome del gruppo di oggetti da creare.

        Nota

        Il nome del gruppo di cose non può contenere i due punti (:).

      aws iot create-thing-group --thing-group-name MyGreengrassCoreGroup

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      { "thingGroupName": "MyGreengrassCoreGroup", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/MyGreengrassCoreGroup", "thingGroupId": "4df721e1-ff9f-4f97-92dd-02db4e3f03aa" }
    2. Aggiungere l'AWS IoToggetto a un gruppo di oggetti.

      • Sostituiscilo MyGreengrassCorecon il nome del tuo AWS IoT oggetto.

      • Sostituisci MyGreengrassCoreGroupcon il nome del gruppo di oggetti.

      aws iot add-thing-to-thing-group --thing-name MyGreengrassCore --thing-group-name MyGreengrassCoreGroup

      Il comando non produce alcun output se la richiesta ha esito positivo.

Crea il certificato dell'oggetto

Quando si registra un dispositivo come AWS IoT oggetto, quel dispositivo può utilizzare un certificato digitale con AWS cui autenticarsi. Questo certificato consente al dispositivo di comunicare con AWS IoT eAWS IoT Greengrass.

In questa sezione, crei e scarichi certificati a cui il tuo dispositivo può connettersiAWS.

Per creare il certificato dell'oggetto
  1. Crea una cartella in cui scaricare i certificati relativi all'AWS IoToggetto.

    mkdir greengrass-v2-certs
  2. Crea e scarica i certificati relativi all'AWS IoToggetto.

    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 risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

    { "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-----\ " } }

    Salva l'Amazon Resource Name (ARN) del certificato da utilizzare per configurare il certificato in un secondo momento.

Configura il certificato del oggetto

Allega il thing certificate all'AWS IoToggetto che hai creato in precedenza e aggiungi una AWS IoT policy al certificato per definire le AWS IoT autorizzazioni per il dispositivo principale.

Per configurare il certificato dell'oggetto
  1. Allega il certificato all'AWS IoToggetto.

    • Sostituiscilo MyGreengrassCorecon il nome del tuo AWS IoT oggetto.

    • Sostituisci il certificato Amazon Resource Name (ARN) con l'ARN del certificato che hai creato nel passaggio precedente.

    aws iot attach-thing-principal --thing-name MyGreengrassCore --principal arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4

    Il comando non produce alcun output se la richiesta ha esito positivo.

  2. Crea e allega una AWS IoT policy che definisca le AWS IoT autorizzazioni per il tuo dispositivo principale Greengrass. La seguente politica consente l'accesso a tutti gli argomenti MQTT e alle operazioni di Greengrass, in modo che il dispositivo funzioni con applicazioni personalizzate e modifiche future che richiedono nuove operazioni Greengrass. È possibile limitare questa politica in base al proprio caso d'uso. Per ulteriori informazioni, consulta AWS IoTPolitica minima per i dispositivi AWS IoT Greengrass V2 principali.

    Se hai già configurato un dispositivo Greengrass core, puoi allegare la AWS IoT relativa policy invece di crearne una nuova.

    Esegui questa operazione:

    1. Crea un file che contenga il documento di AWS IoT policy richiesto dai dispositivi core Greengrass.

      Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

      nano greengrass-v2-iot-policy.json

      Copiate il seguente codice JSON nel file.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Receive", "iot:Connect", "greengrass:*" ], "Resource": [ "*" ] } ] }
    2. Crea una AWS IoT politica dal documento di policy.

      • Sostituisci GreenGrassV2IoT ThingPolicy con il nome della policy da creare.

      aws iot create-policy --policy-name GreengrassV2IoTThingPolicy --policy-document file://greengrass-v2-iot-policy.json

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      { "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" }
    3. Allega la AWS IoT policy al certificato dell'AWS IoToggetto.

      • Sostituisci GreenGrassV2IoT ThingPolicy con il nome della policy da allegare.

      • Sostituisci l'ARN di destinazione con l'ARN del certificato per il tuo oggetto. AWS IoT

      aws iot attach-policy --policy-name GreengrassV2IoTThingPolicy --target arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4

      Il comando non ha alcun output se la richiesta ha esito positivo.

Crea un ruolo di scambio di token

I dispositivi core Greengrass utilizzano un ruolo di servizio IAM, chiamato token exchange role, per autorizzare le chiamate ai servizi. AWS Il dispositivo utilizza il provider di AWS IoT credenziali per ottenere AWS credenziali temporanee per questo ruolo, che consente al dispositivo di interagireAWS IoT, inviare log ad Amazon CloudWatch Logs e scaricare elementi dei componenti personalizzati da Amazon S3. Per ulteriori informazioni, consulta Autorizza i dispositivi principali a interagire con i servizi AWS.

Si utilizza un alias di AWS IoT ruolo per configurare il ruolo di scambio di token per i dispositivi principali Greengrass. Gli alias di ruolo consentono di modificare il ruolo di scambio di token per un dispositivo ma mantengono invariata la configurazione del dispositivo. Per ulteriori informazioni, consulta Autorizzazione delle chiamate dirette ai AWS servizi nella Guida per gli AWS IoT Coresviluppatori.

In questa sezione, crei un ruolo IAM per lo scambio di token e un alias di AWS IoT ruolo che rimanda al ruolo. Se hai già configurato un dispositivo principale Greengrass, puoi utilizzare il ruolo di scambio di token e l'alias del ruolo invece di crearne di nuovi. Quindi, configuri il dispositivo in modo che utilizzi quel ruolo e quell'alias. AWS IoT

Per creare un ruolo IAM per lo scambio di token
  1. Crea un ruolo IAM che il tuo dispositivo possa utilizzare come ruolo di scambio di token. Esegui questa operazione:

    1. Crea un file che contenga il documento sulla politica di fiducia richiesto dal ruolo di scambio di token.

      Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

      nano device-role-trust-policy.json

      Copia il seguente codice JSON nel file.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Crea il ruolo di scambio di token con il documento sulla politica di fiducia.

      • Sostituisci greengrassV2 TokenExchangeRole con il nome del ruolo IAM da creare.

      aws iam create-role --role-name GreengrassV2TokenExchangeRole --assume-role-policy-document file://device-role-trust-policy.json

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      { "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" } ] } }
    3. Crea un file che contenga il documento sulla politica di accesso richiesto dal ruolo di scambio di token.

      Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

      nano device-role-access-policy.json

      Copia il seguente codice JSON nel file.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "s3:GetBucketLocation" ], "Resource": "*" } ] }
      Nota

      Questa politica di accesso non consente l'accesso agli artefatti dei componenti nei bucket S3. Per distribuire componenti personalizzati che definiscono gli artefatti in Amazon S3, devi aggiungere autorizzazioni al ruolo per consentire al dispositivo principale di recuperare gli artefatti dei componenti. Per ulteriori informazioni, consulta Consenti l'accesso ai bucket S3 per gli artefatti dei componenti.

      Se non disponi ancora di un bucket S3 per gli artefatti dei componenti, puoi aggiungere queste autorizzazioni in un secondo momento dopo aver creato un bucket.

    4. Crea la policy IAM dal documento di policy.

      • Sostituisci GreenGrassV2 TokenExchangeRoleAccess con il nome della policy IAM da creare.

      aws iam create-policy --policy-name GreengrassV2TokenExchangeRoleAccess --policy-document file://device-role-access-policy.json

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      { "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" } }
    5. Allega la policy IAM al ruolo di scambio di token.

      • Sostituisci greengrassV2 TokenExchangeRole con il nome del ruolo IAM.

      • Sostituisci l'ARN della policy con l'ARN della policy IAM che hai creato nel passaggio precedente.

      aws iam attach-role-policy --role-name GreengrassV2TokenExchangeRole --policy-arn arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess

      Il comando non ha alcun output se la richiesta ha esito positivo.

  2. Crea un alias di AWS IoT ruolo che punti al ruolo di scambio di token.

    • Sostituiscilo GreengrassCoreTokenExchangeRoleAliascon il nome dell'alias del ruolo da creare.

    • Sostituisci il ruolo ARN con l'ARN del ruolo IAM creato nel passaggio precedente.

    aws iot create-role-alias --role-alias GreengrassCoreTokenExchangeRoleAlias --role-arn arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole

    La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

    { "roleAlias": "GreengrassCoreTokenExchangeRoleAlias", "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias" }
    Nota

    Per creare un alias di ruolo, devi disporre dell'autorizzazione a passare il ruolo IAM per lo scambio di token a. AWS IoT Se ricevi un messaggio di errore quando tenti di creare un alias di ruolo, verifica che AWS l'utente disponga di questa autorizzazione. Per ulteriori informazioni, consulta Concessione a un utente delle autorizzazioni per il trasferimento di un ruolo a un AWS servizio nella Guida per l'AWS Identity and Access Managementutente.

  3. Crea e allega una AWS IoT policy che consenta al tuo dispositivo principale Greengrass di utilizzare l'alias del ruolo per assumere il ruolo di scambio di token. Se hai già configurato un dispositivo principale Greengrass, puoi allegare la sua AWS IoT politica di alias di ruolo invece di crearne uno nuovo. Esegui questa operazione:

    1. (Facoltativo) Create un file che contenga il documento di AWS IoT policy richiesto dall'alias di ruolo.

      Ad esempio, su un sistema basato su Linux, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il file.

      nano greengrass-v2-iot-role-alias-policy.json

      Copia il seguente codice JSON nel file.

      • Sostituisci l'ARN della risorsa con l'ARN del tuo alias di ruolo.

      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:AssumeRoleWithCertificate", "Resource": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias" } ] }
    2. Crea una AWS IoT politica dal documento di policy.

      • Sostituisci GreengrassCoreTokenExchangeRoleAliasPolicycon il nome della AWS IoT politica da creare.

      aws iot create-policy --policy-name GreengrassCoreTokenExchangeRoleAliasPolicy --policy-document file://greengrass-v2-iot-role-alias-policy.json

      La risposta è simile all'esempio seguente, se la richiesta ha esito positivo.

      { "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" }
    3. Allega la AWS IoT policy al certificato dell'AWS IoToggetto.

      • Sostituisci GreengrassCoreTokenExchangeRoleAliasPolicycon il nome della AWS IoT politica relativa agli alias del ruolo.

      • Sostituisci l'ARN di destinazione con l'ARN del certificato per il tuo oggetto. AWS IoT

      aws iot attach-policy --policy-name GreengrassCoreTokenExchangeRoleAliasPolicy --target arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4

      Il comando non ha alcun output se la richiesta ha esito positivo.

Scarica i certificati sul dispositivo

In precedenza, avevi scaricato il certificato del dispositivo sul computer di sviluppo. In questa sezione, scarichi il certificato Amazon Root Certificate Authority (CA). Quindi, se prevedi di eseguire il software AWS IoT Greengrass Core in Docker su un computer diverso da quello di sviluppo, copi i certificati su quel computer host. Il software AWS IoT Greengrass Core utilizza questi certificati per connettersi al servizio AWS IoT cloud.

Per scaricare i certificati sul dispositivo
  1. Sul tuo computer di sviluppo, scarica il certificato Amazon Root Certificate Authority (CA). AWS IoTper impostazione predefinita, i certificati sono associati al certificato CA root di Amazon.

    Linux or Unix
    sudo curl -o ./greengrass-v2-certs/AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
    Windows Command Prompt (CMD)
    curl -o .\greengrass-v2-certs\AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
    PowerShell
    iwr -Uri https://www.amazontrust.com/repository/AmazonRootCA1.pem -OutFile .\greengrass-v2-certs\AmazonRootCA1.pem
  2. Se prevedi di eseguire il software AWS IoT Greengrass Core in Docker su un dispositivo diverso dal computer di sviluppo, copia i certificati sul computer host. Se SSH e SCP sono abilitati sul computer di sviluppo e sul computer host, puoi usare il scp comando sul tuo computer di sviluppo per trasferire i certificati. device-ip-addressSostituiscilo con l'indirizzo IP del tuo computer host.

    scp -r greengrass-v2-certs/ device-ip-address:~

Crea un file di configurazione

  1. Sul computer host, crea una cartella in cui inserire il file di configurazione.

    mkdir ./greengrass-v2-config
  2. Utilizzate un editor di testo per creare un file di configurazione denominato config.yaml nella ./greengrass-v2-config cartella.

    Ad esempio, è possibile eseguire il comando seguente per utilizzare GNU nano per creare ilconfig.yaml.

    nano ./greengrass-v2-config/config.yaml
  3. Copiate il seguente contenuto YAML nel file. Questo file di configurazione parziale specifica i parametri di sistema e i parametri del nucleo di Greengrass.

    --- system: certificateFilePath: "/tmp/certs/device.pem.crt" privateKeyPath: "/tmp/certs/private.pem.key" rootCaPath: "/tmp/certs/AmazonRootCA1.pem" rootpath: "/greengrass/v2" thingName: "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"

    Quindi, sostituite i seguenti valori:

    • /tmp/certs. La directory nel contenitore Docker in cui vengono montati i certificati scaricati all'avvio del contenitore.

    • /greengrass/v2. La cartella principale di Greengrass che si desidera utilizzare per l'installazione. Utilizzate la variabile di GGC_ROOT ambiente per impostare questo valore.

    • MyGreengrassCore. Nome del nuovo oggetto AWS IoT.

    • versione nucleus. La versione del software AWS IoT Greengrass Core da installare. Questo valore deve corrispondere alla versione dell'immagine Docker o del Dockerfile che hai scaricato. Se hai scaricato l'immagine Greengrass Docker con il latest tag, usala docker inspect image-id per vedere la versione dell'immagine.

    • regione. Il Regione AWS luogo in cui hai creato AWS IoT le tue risorse. È inoltre necessario specificare lo stesso valore per la variabile di AWS_REGION ambiente nel file di ambiente.

    • GreengrassCoreTokenExchangeRoleAlias. L'alias del ruolo di scambio di token.

    • device-data-prefix. Il prefisso per il tuo endpoint di AWS IoT dati.

    • device-credentials-prefix. Il prefisso per l'endpoint AWS IoT delle credenziali.

Crea un file di ambiente

Questo tutorial utilizza un file di ambiente per impostare le variabili di ambiente che verranno passate al programma di installazione del software AWS IoT Greengrass Core all'interno del contenitore Docker. Puoi anche usare l'--envargomento -e or nel docker run comando per impostare le variabili di ambiente nel contenitore Docker oppure puoi impostare le variabili in un environment blocco del file. docker-compose.yml

  1. Usa un editor di testo per creare un file di ambiente denominato.env.

    Ad esempio, su un sistema basato su Linux, puoi eseguire il seguente comando per usare GNU nano per crearlo .env nella directory corrente.

    nano .env
  2. Copiate il seguente contenuto nel file.

    GGC_ROOT_PATH=/greengrass/v2 AWS_REGION=region PROVISION=false COMPONENT_DEFAULT_USER=ggc_user:ggc_group INIT_CONFIG=/tmp/config/config.yaml

    Quindi, sostituisci i seguenti valori.

    • /greengrass/v2. Il percorso della cartella principale da utilizzare per installare il software AWS IoT Greengrass Core.

    • regione. Il Regione AWS luogo in cui hai creato AWS IoT le tue risorse. È necessario specificare lo stesso valore per il parametro awsRegion di configurazione nel file di configurazione.

    • /tmp/config/. La cartella in cui monti il file di configurazione all'avvio del contenitore Docker.

    Nota

    È possibile impostare la variabile di DEPLOY_DEV_TOOLS ambiente su true per distribuire il componente Greengrass CLI, che consente di sviluppare componenti personalizzati all'interno del contenitore Docker. Si consiglia di utilizzare questo componente solo in ambienti di sviluppo, non in ambienti di produzione. Questo componente fornisce l'accesso a informazioni e operazioni che in genere non sono necessarie in un ambiente di produzione. Segui il principio del privilegio minimo distribuendo questo componente solo sui dispositivi principali dove ne hai bisogno.

Esegui il software AWS IoT Greengrass Core in un contenitore

Questo tutorial mostra come avviare l'immagine Docker che hai creato in un contenitore Docker. Puoi utilizzare la CLI Docker o la CLI Docker Compose per AWS IoT Greengrass eseguire l'immagine del software Core in un contenitore Docker.

Docker
  • Questo tutorial mostra come avviare l'immagine Docker che hai creato in un contenitore Docker.

    docker run --rm --init -it --name docker-image \ -v path/to/greengrass-v2-config:/tmp/config/:ro \ -v path/to/greengrass-v2-certs:/tmp/certs:ro \ --env-file .env \ -p 8883 \ your-container-image:version

    Questo comando di esempio utilizza i seguenti argomenti per docker run:

    • --rm. Pulisce il contenitore quando esce.

    • --init. Utilizza un processo di inizializzazione nel contenitore.

      Nota

      L'--initargomento è necessario per chiudere il software AWS IoT Greengrass Core quando si arresta il contenitore Docker.

    • -it. (Facoltativo) Esegue il contenitore Docker in primo piano come processo interattivo. Puoi sostituirlo con l'-dargomento per eseguire invece il contenitore Docker in modalità distaccata. Per ulteriori informazioni, consulta Detached vs foreground nella documentazione Docker.

    • --name. Esegue un contenitore denominato aws-iot-greengrass

    • -v. Monta un volume nel contenitore Docker per rendere il file di configurazione e i file di certificato disponibili per l'AWS IoT Greengrassesecuzione all'interno del contenitore.

    • --env-file. (Facoltativo) Speciifica il file di ambiente per impostare le variabili di ambiente che verranno passate al programma di installazione del software AWS IoT Greengrass Core all'interno del contenitore Docker. Questo argomento è richiesto solo se è stato creato un file di ambiente per impostare le variabili di ambiente. Se non hai creato un file di ambiente, puoi utilizzare --env gli argomenti per impostare le variabili di ambiente direttamente nel comando Docker run.

    • -p. (Facoltativo) Pubblica la porta container 8883 sulla macchina host. Questo argomento è necessario se si desidera connettersi e comunicare tramite MQTT perché AWS IoT Greengrass utilizza la porta 8883 per il traffico MQTT. Per aprire altre porte, utilizzate argomenti aggiuntivi. -p

    Nota

    Per eseguire il contenitore Docker con maggiore sicurezza, puoi utilizzare gli --cap-add argomenti --cap-drop e per abilitare selettivamente le funzionalità Linux per il tuo contenitore. Per ulteriori informazioni, consulta Privilegi di runtime e funzionalità Linux nella documentazione Docker.

Docker Compose
  1. Usa un editor di testo per creare un file Docker Compose denominato. docker-compose.yml

    Ad esempio, su un sistema basato su Linux, puoi eseguire il seguente comando per usare GNU nano per crearlo nella directory corrente. docker-compose.yml

    nano docker-compose.yml
    Nota

    È inoltre possibile scaricare e utilizzare la versione più recente del file Compose fornito AWS da. GitHub

  2. Aggiungi il seguente contenuto al file Compose. Il file si presenta in maniera simile al seguente frammento: Sostituisci:version your-container-namecon il nome della tua immagine Docker.

    version: '3.7' services: greengrass: init: true build: context: . container_name: aws-iot-greengrass image: your-container-name:version volumes: - /path/to/greengrass-v2-config:/tmp/config/:ro - /path/to/greengrass-v2-certs:/tmp/certs:ro env_file: .env ports: - "8883:8883"

    I seguenti parametri in questo file Compose di esempio sono facoltativi:

    • ports—Pubblica le porte del contenitore 8883 sul computer host. Questo parametro è necessario se si desidera connettersi e comunicare tramite MQTT perché AWS IoT Greengrass utilizza la porta 8883 per il traffico MQTT.

    • env_file: specifica il file di ambiente per impostare le variabili di ambiente che verranno passate al programma di installazione del software AWS IoT Greengrass Core all'interno del contenitore Docker. Questo parametro è richiesto solo se è stato creato un file di ambiente per impostare le variabili di ambiente. Se non avete creato un file di ambiente, potete utilizzare il parametro environment per impostare le variabili direttamente nel file Compose.

    Nota

    Per eseguire il contenitore Docker con maggiore sicurezza, puoi utilizzare cap_drop e cap_add nel tuo file Compose per abilitare selettivamente le funzionalità Linux per il tuo contenitore. Per ulteriori informazioni, consulta Privilegi di runtime e funzionalità Linux nella documentazione Docker.

  3. Esegui il comando seguente per avviare il contenitore.

    docker-compose -f docker-compose.yml up

Passaggi successivi

AWS IoT GreengrassIl software principale è ora in esecuzione in un contenitore Docker. Esegui il comando seguente per recuperare l'ID del contenitore attualmente in esecuzione.

docker ps

È quindi possibile eseguire il comando seguente per accedere al contenitore ed esplorare il software AWS IoT Greengrass Core in esecuzione all'interno del contenitore.

docker exec -it container-id /bin/bash

Per informazioni sulla creazione di un componente semplice, consulta Fase 4: Sviluppa e testa un componente sul tuo dispositivo in Tutorial: Nozioni di base su AWS IoT Greengrass V2

Nota

Quando esegui comandi all'interno del contenitore Docker, tali comandi non vengono registrati nei log Docker. docker exec Per registrare i comandi nei log Docker, collega una shell interattiva al contenitore Docker. Per ulteriori informazioni, consulta Collega una shell interattiva al contenitore Docker.

Il file di registro AWS IoT Greengrass Core viene chiamato greengrass.log e si trova in. /greengrass/v2/logs Nella stessa directory si trovano anche i file di registro dei componenti. Per copiare i log di Greengrass in una directory temporanea sull'host, esegui il seguente comando:

docker cp container-id:/greengrass/v2/logs /tmp/logs

Se desideri mantenere i log dopo l'uscita o la rimozione di un contenitore, ti consigliamo di collegare solo la /greengrass/v2/logs directory alla directory dei log temporanei sull'host invece di montare l'intera directory Greengrass. Per ulteriori informazioni, consulta Mantieni i log Greengrass all'esterno del contenitore Docker.

Per fermare un contenitore Docker in esecuzione, esegui o. AWS IoT Greengrass docker stop docker-compose -f docker-compose.yml stop Questa azione invia SIGTERM al processo Greengrass e chiude tutti i processi associati che sono stati avviati nel contenitore. Il contenitore Docker viene inizializzato con l'docker-initeseguibile come processo PID 1, il che aiuta a rimuovere eventuali processi zombie rimanenti. Per ulteriori informazioni, consulta Specificare un processo di inizializzazione nella documentazione di Docker.

Per informazioni sulla risoluzione dei problemi relativi all'esecuzione AWS IoT Greengrass in un contenitore Docker, consulta. Risoluzione dei problemi di AWS IoT Greengrass in un container Docker