Execute AWS IoT Greengrass em um contêiner Docker com provisionamento manual de recursos - AWS IoT Greengrass

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Execute AWS IoT Greengrass em um contêiner Docker com provisionamento manual de recursos

Este tutorial mostra como instalar e executar o software AWS IoT Greengrass Core no contêiner Docker com recursos provisionados AWS manualmente.

Pré-requisitos

Para concluir este tutorial, você precisará do seguinte:

  • Uma Conta da AWS. Se você não tiver uma, consulte Configurar um Conta da AWS.

  • Uma imagem AWS IoT Greengrass do Docker. Você pode criar uma imagem a partir do AWS IoT Greengrass Dockerfile.

  • O computador host em que você executa o contêiner Docker deve atender aos seguintes requisitos:

    • Um sistema operacional baseado em Linux com conexão à Internet.

    • Docker Engine versão 18.09 ou posterior.

    • (Opcional) Docker Compose versão 1.22 ou posterior. O Docker Compose é necessário somente se você quiser usar a CLI do Docker Compose para executar suas imagens do Docker.

Recupere endpoints AWS IoT

Obtenha os AWS IoT endpoints para você Conta da AWS e salve-os para usar mais tarde. Seu dispositivo usa esses endpoints para se conectar a. AWS IoT Faça o seguinte:

  1. Obtenha o endpoint de AWS IoT dados para vocêConta da AWS.

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

    A resposta será semelhante ao exemplo a seguir, se a solicitação for bem-sucedida.

    { "endpointAddress": "device-data-prefix-ats.iot.us-west-2.amazonaws.com" }
  2. Obtenha o endpoint AWS IoT de credenciais para seu. Conta da AWS

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

    A resposta será semelhante ao exemplo a seguir, se a solicitação for bem-sucedida.

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

Criação de uma coisa do AWS IoT

AWS IoTas coisas representam dispositivos e entidades lógicas que se conectam AWS IoT a. Os principais dispositivos do Greengrass são AWS IoT coisas. Quando você registra um dispositivo como uma AWS IoT coisa, esse dispositivo pode usar um certificado digital para se autenticarAWS.

Nesta seção, você cria AWS IoT algo que representa seu dispositivo.

Como criar uma coisa AWS IoT
  1. Crie qualquer AWS IoT coisa para o seu dispositivo. No seu computador de desenvolvimento, execute o comando a seguir.

    • MyGreengrassCoreSubstitua pelo nome da coisa a ser usada. Esse nome também é o nome do seu dispositivo principal do Greengrass.

      nota

      O nome da coisa não pode conter caracteres de dois pontos (:).

    aws iot create-thing --thing-name MyGreengrassCore

    A resposta será semelhante ao exemplo a seguir, se a solicitação for bem-sucedida.

    { "thingName": "MyGreengrassCore", "thingArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore", "thingId": "8cb4b6cd-268e-495d-b5b9-1713d71dbf42" }
  2. (Opcional) Adicione a AWS IoT coisa a um grupo de coisas novo ou existente. Você usa grupos de coisas para gerenciar frotas de dispositivos principais do Greengrass. Ao implantar componentes de software em seus dispositivos, você pode segmentar dispositivos individuais ou grupos de dispositivos. Você pode adicionar um dispositivo a um grupo de coisas com uma implantação ativa do Greengrass para implantar os componentes de software desse grupo de coisas no dispositivo. Faça o seguinte:

    1. (Opcional) Crie um grupo de AWS IoT coisas.

      • MyGreengrassCoreGroupSubstitua pelo nome do grupo de coisas a ser criado.

        nota

        O nome do grupo de coisas não pode conter caracteres de dois pontos (:).

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

      A resposta será semelhante ao exemplo a seguir, se a solicitação for bem-sucedida.

      { "thingGroupName": "MyGreengrassCoreGroup", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/MyGreengrassCoreGroup", "thingGroupId": "4df721e1-ff9f-4f97-92dd-02db4e3f03aa" }
    2. Adicione a AWS IoT coisa a um grupo de coisas.

      • MyGreengrassCoreSubstitua pelo nome da sua AWS IoT coisa.

      • MyGreengrassCoreGroupSubstitua pelo nome do grupo de coisas.

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

      O comando não terá nenhuma saída se a solicitação for bem-sucedida.

Crie o certificado da coisa

Quando você registra um dispositivo como uma AWS IoT coisa, esse dispositivo pode usar um certificado digital para se autenticarAWS. Esse certificado permite que o dispositivo se comunique com AWS IoT AWS IoT Greengrass e.

Nesta seção, você cria e baixa certificados que seu dispositivo pode usar para se conectarAWS.

Para criar o certificado da coisa
  1. Crie uma pasta na qual você baixa os certificados da AWS IoT coisa.

    mkdir greengrass-v2-certs
  2. Crie e baixe os certificados da AWS IoT coisa.

    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

    A resposta será semelhante ao exemplo a seguir, se a solicitação for bem-sucedida.

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

    Salve o Amazon Resource Name (ARN) do certificado para usar na configuração posterior do certificado.

Configure o certificado da coisa

Anexe o certificado do AWS IoT item ao que você criou anteriormente e adicione uma AWS IoT política ao certificado para definir as AWS IoT permissões para o dispositivo principal.

Para configurar o certificado da coisa
  1. Anexe o certificado à AWS IoT coisa.

    • MyGreengrassCoreSubstitua pelo nome da sua AWS IoT coisa.

    • Substitua o certificado Amazon Resource Name (ARN) pelo ARN do certificado que você criou na etapa anterior.

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

    O comando não terá nenhuma saída se a solicitação for bem-sucedida.

  2. Crie e anexe uma AWS IoT política que defina as AWS IoT permissões para seu dispositivo principal do Greengrass. A política a seguir permite acesso a todos os tópicos do MQTT e operações do Greengrass, para que seu dispositivo funcione com aplicativos personalizados e futuras alterações que exijam novas operações do Greengrass. Você pode restringir essa política com base no seu caso de uso. Para ter mais informações, consulte AWS IoTPolítica mínima para dispositivos AWS IoT Greengrass V2 principais.

    Se você já configurou um dispositivo principal do Greengrass, pode anexar sua AWS IoT política em vez de criar uma nova.

    Faça o seguinte:

    1. Crie um arquivo que contenha o documento AWS IoT de política exigido pelos dispositivos principais do Greengrass.

      Por exemplo, em um sistema baseado em Linux, você pode executar o seguinte comando para usar o GNU nano para criar o arquivo.

      nano greengrass-v2-iot-policy.json

      Copie o seguinte JSON no arquivo.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Receive", "iot:Connect", "greengrass:*" ], "Resource": [ "*" ] } ] }
    2. Crie uma AWS IoT política a partir do documento de política.

      • Substitua GreengrassV2IoT pelo nome da ThingPolicy política a ser criada.

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

      A resposta será semelhante ao exemplo a seguir, se a solicitação for bem-sucedida.

      { "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. Anexe a AWS IoT política ao certificado da AWS IoT coisa.

      • Substitua GreengrassV2IoT pelo nome da política ThingPolicy a ser anexada.

      • Substitua o ARN de destino pelo ARN do certificado de sua coisa. AWS IoT

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

      O comando não terá nenhuma saída se a solicitação for bem-sucedida.

Crie uma função de troca de tokens

Os dispositivos principais do Greengrass usam uma função de serviço do IAM, chamada função de troca de tokens, para autorizar chamadas para serviços. AWS O dispositivo usa o provedor de AWS IoT credenciais para obter AWS credenciais temporárias para essa função, o que permite que o dispositivo interajaAWS IoT, envie registros para o Amazon CloudWatch Logs e baixe artefatos de componentes personalizados do Amazon S3. Para ter mais informações, consulte Autorize os dispositivos principais a interagir com os serviços AWS.

Você usa um alias de AWS IoT função para configurar a função de troca de tokens para os dispositivos principais do Greengrass. Os aliases de função permitem que você altere a função de troca de tokens de um dispositivo, mas mantenha a mesma configuração do dispositivo. Para obter mais informações, consulte Autorização de chamadas diretas para AWS serviços no Guia do AWS IoT Core desenvolvedor.

Nesta seção, você cria uma função do IAM de troca de tokens e um alias de AWS IoT função que aponta para a função. Se você já configurou um dispositivo principal do Greengrass, pode usar sua função de troca de tokens e seu alias de função em vez de criar novos. Em seguida, você configura o dispositivo AWS IoT para usar essa função e alias.

Para criar uma função do IAM de troca de tokens
  1. Crie uma função do IAM que seu dispositivo possa usar como função de troca de tokens. Faça o seguinte:

    1. Crie um arquivo que contenha o documento de política de confiança exigido pela função de troca de tokens.

      Por exemplo, em um sistema baseado em Linux, você pode executar o seguinte comando para usar o GNU nano para criar o arquivo.

      nano device-role-trust-policy.json

      Copie o seguinte JSON no arquivo.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Crie a função de troca de tokens com o documento de política de confiança.

      • Substitua GreengrassV2 TokenExchangeRole pelo nome da função do IAM a ser criada.

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

      A resposta será semelhante ao exemplo a seguir, se a solicitação for bem-sucedida.

      { "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. Crie um arquivo que contenha o documento de política de acesso exigido pela função de troca de tokens.

      Por exemplo, em um sistema baseado em Linux, você pode executar o seguinte comando para usar o GNU nano para criar o arquivo.

      nano device-role-access-policy.json

      Copie o seguinte JSON no arquivo.

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

      Essa política de acesso não permite acesso a artefatos de componentes em buckets do S3. Para implantar componentes personalizados que definem artefatos no Amazon S3, você deve adicionar permissões à função para permitir que seu dispositivo principal recupere artefatos de componentes. Para ter mais informações, consulte Permitir acesso aos buckets do S3 para artefatos de componentes.

      Se você ainda não tem um bucket do S3 para artefatos de componentes, você pode adicionar essas permissões depois de criar um bucket.

    4. Crie a política do IAM a partir do documento de política.

      • Substitua GreengrassV2 TokenExchangeRoleAccess pelo nome da política do IAM a ser criada.

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

      A resposta será semelhante ao exemplo a seguir, se a solicitação for bem-sucedida.

      { "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. Anexe a política do IAM à função de troca de tokens.

      • Substitua GreengrassV2 TokenExchangeRole pelo nome da função do IAM.

      • Substitua o ARN da política pelo ARN da política do IAM que você criou na etapa anterior.

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

      O comando não terá nenhuma saída se a solicitação for bem-sucedida.

  2. Crie um alias de AWS IoT função que aponte para a função de troca de tokens.

    • GreengrassCoreTokenExchangeRoleAliasSubstitua pelo nome do alias de função a ser criado.

    • Substitua o ARN da função pelo ARN da função do IAM que você criou na etapa anterior.

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

    A resposta será semelhante ao exemplo a seguir, se a solicitação for bem-sucedida.

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

    Para criar um alias de função, você precisa ter permissão para passar a função do IAM de troca de tokens paraAWS IoT. Se você receber uma mensagem de erro ao tentar criar um alias de função, verifique se o AWS usuário tem essa permissão. Para obter mais informações, consulte Conceder permissões a um usuário para passar uma função para um AWS serviço no Guia do AWS Identity and Access Management usuário.

  3. Crie e anexe uma AWS IoT política que permita que seu dispositivo principal do Greengrass use o alias de função para assumir a função de troca de tokens. Se você já configurou um dispositivo principal do Greengrass, pode anexar sua AWS IoT política de alias de função em vez de criar uma nova. Faça o seguinte:

    1. (Opcional) Crie um arquivo que contenha o documento AWS IoT de política exigido pelo alias da função.

      Por exemplo, em um sistema baseado em Linux, você pode executar o seguinte comando para usar o GNU nano para criar o arquivo.

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

      Copie o seguinte JSON no arquivo.

      • Substitua o ARN do recurso pelo ARN do seu alias de função.

      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:AssumeRoleWithCertificate", "Resource": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias" } ] }
    2. Crie uma AWS IoT política a partir do documento de política.

      • GreengrassCoreTokenExchangeRoleAliasPolicySubstitua pelo nome da AWS IoT política a ser criada.

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

      A resposta será semelhante ao exemplo a seguir, se a solicitação for bem-sucedida.

      { "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. Anexe a AWS IoT política ao certificado da AWS IoT coisa.

      • GreengrassCoreTokenExchangeRoleAliasPolicySubstitua pelo nome da AWS IoT política de alias de função.

      • Substitua o ARN de destino pelo ARN do certificado de sua coisa. AWS IoT

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

      O comando não terá nenhuma saída se a solicitação for bem-sucedida.

Baixe certificados para o dispositivo

Anteriormente, você baixou o certificado do seu dispositivo para o seu computador de desenvolvimento. Nesta seção, você baixa o certificado da autoridade de certificação raiz (CA) da Amazon. Em seguida, se você planeja executar o software AWS IoT Greengrass Core no Docker em um computador diferente do seu computador de desenvolvimento, copie os certificados para esse computador host. O software AWS IoT Greengrass Core usa esses certificados para se conectar ao serviço de AWS IoT nuvem.

Para baixar certificados para o dispositivo
  1. No seu computador de desenvolvimento, baixe o certificado da autoridade de certificação raiz (CA) da Amazon. AWS IoTos certificados são associados ao certificado CA raiz da Amazon por padrão.

    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 você planeja executar o software AWS IoT Greengrass Core no Docker em um dispositivo diferente do seu computador de desenvolvimento, copie os certificados para o computador host. Se o SSH e o SCP estiverem habilitados no computador de desenvolvimento e no computador host, você poderá usar o scp comando no computador de desenvolvimento para transferir os certificados. device-ip-addressSubstitua pelo endereço IP do seu computador host.

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

Criar um arquivo de configuração

  1. No computador host, crie uma pasta na qual você coloca seu arquivo de configuração.

    mkdir ./greengrass-v2-config
  2. Use um editor de texto para criar um arquivo de configuração nomeado config.yaml na ./greengrass-v2-config pasta.

    Por exemplo, você pode executar o seguinte comando para usar o GNU nano para criar o. config.yaml

    nano ./greengrass-v2-config/config.yaml
  3. Copie o seguinte conteúdo YAML para o arquivo. Esse arquivo de configuração parcial especifica os parâmetros do sistema e os parâmetros do núcleo do 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"

    Em seguida, substitua os seguintes valores:

    • /tmp/certs. O diretório no contêiner do Docker no qual você monta os certificados baixados ao iniciar o contêiner.

    • /greengrass/v2. A pasta raiz do Greengrass que você deseja usar para instalação. Você usa a variável de GGC_ROOT ambiente para definir esse valor.

    • MyGreengrassCore. O nome da coisa da AWS IoT.

    • versão núcleo. A versão do software AWS IoT Greengrass Core a ser instalada. Esse valor deve corresponder à versão da imagem do Docker ou do Dockerfile que você baixou. Se você baixou a imagem do Greengrass Docker com a latest tag, use docker inspect image-id para ver a versão da imagem.

    • região. O Região da AWS local onde você criou seus AWS IoT recursos. Você também deve especificar o mesmo valor para a variável de AWS_REGION ambiente em seu arquivo de ambiente.

    • GreengrassCoreTokenExchangeRoleAlias. O alias da função de troca de tokens.

    • device-data-prefix. O prefixo do seu endpoint AWS IoT de dados.

    • device-credentials-prefix. O prefixo do seu endpoint de AWS IoT credenciais.

Criar um arquivo de ambiente

Este tutorial usa um arquivo de ambiente para definir as variáveis de ambiente que serão passadas para o instalador do software AWS IoT Greengrass Core dentro do contêiner Docker. Você também pode usar o --env argumento -e ou em seu docker run comando para definir variáveis de ambiente no contêiner do Docker ou definir as variáveis em um environment bloco no docker-compose.yml arquivo.

  1. Use um editor de texto para criar um arquivo de ambiente chamado.env.

    Por exemplo, em um sistema baseado em Linux, você pode executar o seguinte comando para usar o GNU nano para criar o no .env diretório atual.

    nano .env
  2. Copie o conteúdo a seguir no arquivo.

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

    Em seguida, substitua os valores a seguir.

    • /greengrass/v2. O caminho para a pasta raiz a ser usada para instalar o software AWS IoT Greengrass Core.

    • região. O Região da AWS local onde você criou seus AWS IoT recursos. Você deve especificar o mesmo valor para o parâmetro awsRegion de configuração em seu arquivo de configuração.

    • /tmp/config/. A pasta na qual você monta o arquivo de configuração ao iniciar o contêiner do Docker.

    nota

    Você pode definir a variável de DEPLOY_DEV_TOOLS ambiente true para implantar o componente CLI do Greengrass, que permite desenvolver componentes personalizados dentro do contêiner do Docker. Recomendamos que você use esse componente somente em ambientes de desenvolvimento, não em ambientes de produção. Esse componente fornece acesso a informações e operações que você normalmente não precisará em um ambiente de produção. Siga o princípio do menor privilégio implantando esse componente somente nos dispositivos principais onde você precisar dele.

Execute o software AWS IoT Greengrass principal em um contêiner

Este tutorial mostra como iniciar a imagem do Docker que você criou em um contêiner do Docker. Você pode usar a CLI do Docker ou a CLI do Docker Compose para AWS IoT Greengrass executar a imagem do software Core em um contêiner do Docker.

Docker
  • Este tutorial mostra como iniciar a imagem do Docker que você criou em um contêiner do 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

    Esse exemplo de comando usa os seguintes argumentos para docker run:

    • --rm. Limpa o contêiner quando ele sai.

    • --init. Usa um processo de inicialização no contêiner.

      nota

      O --init argumento é necessário para desligar o software AWS IoT Greengrass Core quando você interrompe o contêiner Docker.

    • -it. (Opcional) Executa o contêiner Docker em primeiro plano como um processo interativo. Em vez disso, você pode substituir isso pelo -d argumento para executar o contêiner do Docker no modo desanexado. Para obter mais informações, consulte Desanexado versus primeiro plano na documentação do Docker.

    • --name. Executa um contêiner chamado aws-iot-greengrass

    • -v. Monta um volume no contêiner do Docker para disponibilizar o arquivo de configuração e os arquivos de certificado para AWS IoT Greengrass execução dentro do contêiner.

    • --env-file. (Opcional) Especifica o arquivo de ambiente para definir as variáveis de ambiente que serão passadas para o instalador do software AWS IoT Greengrass Core dentro do contêiner Docker. Esse argumento é necessário somente se você criou um arquivo de ambiente para definir variáveis de ambiente. Se você não criou um arquivo de ambiente, pode usar --env argumentos para definir variáveis de ambiente diretamente no comando de execução do Docker.

    • -p. (Opcional) Publica a porta do contêiner 8883 na máquina host. Esse argumento é necessário se você quiser se conectar e se comunicar pelo MQTT porque AWS IoT Greengrass usa a porta 8883 para tráfego MQTT. Para abrir outras portas, use -p argumentos adicionais.

    nota

    Para executar seu contêiner Docker com maior segurança, você pode usar os --cap-add argumentos --cap-drop e para habilitar seletivamente os recursos do Linux para seu contêiner. Para obter mais informações, consulte Privilégio de tempo de execução e recursos do Linux na documentação do Docker.

Docker Compose
  1. Use um editor de texto para criar um arquivo Docker Compose chamado. docker-compose.yml

    Por exemplo, em um sistema baseado em Linux, você pode executar o seguinte comando para usar o GNU nano para criar o no docker-compose.yml diretório atual.

    nano docker-compose.yml
    nota

    Você também pode baixar e usar a versão mais recente do arquivo Compose AWS fornecido em. GitHub

  2. Adicione o conteúdo a seguir ao arquivo Compose. O arquivo deve ser semelhante ao exemplo a seguir. Substitua:version your-container-name pelo nome da sua imagem do 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"

    Os parâmetros a seguir neste exemplo de arquivo Compose são opcionais:

    • ports—Publica as portas do contêiner 8883 na máquina host. Esse parâmetro é necessário se você quiser se conectar e se comunicar pelo MQTT porque AWS IoT Greengrass usa a porta 8883 para tráfego MQTT.

    • env_file—Especifica o arquivo de ambiente para definir as variáveis de ambiente que serão passadas para o instalador do software AWS IoT Greengrass Core dentro do contêiner Docker. Esse parâmetro é necessário somente se você criou um arquivo de ambiente para definir variáveis de ambiente. Se você não criou um arquivo de ambiente, pode usar o parâmetro de ambiente para definir as variáveis diretamente no seu arquivo Compose.

    nota

    Para executar seu contêiner Docker com maior segurança, você pode usar cap_drop e cap_add em seu arquivo Compose para habilitar seletivamente os recursos do Linux para seu contêiner. Para obter mais informações, consulte Privilégio de tempo de execução e recursos do Linux na documentação do Docker.

  3. Execute o comando a seguir para iniciar o contêiner.

    docker-compose -f docker-compose.yml up

Próximas etapas

AWS IoT GreengrassO software principal agora está sendo executado em um contêiner Docker. Execute o comando a seguir para recuperar o ID do contêiner em execução no momento.

docker ps

Em seguida, você pode executar o comando a seguir para acessar o contêiner e explorar o software AWS IoT Greengrass principal executado dentro do contêiner.

docker exec -it container-id /bin/bash

Para obter informações sobre a criação de um componente simples, consulte Etapa 4: desenvolver e testar um componente em seu dispositivo em Tutorial: Conceitos básicos do AWS IoT Greengrass V2

nota

Quando você usa docker exec para executar comandos dentro do contêiner do Docker, esses comandos não são registrados nos registros do Docker. Para registrar seus comandos nos registros do Docker, anexe um shell interativo ao contêiner do Docker. Para ter mais informações, consulte Anexe um shell interativo ao contêiner Docker.

O arquivo de log AWS IoT Greengrass principal é chamado greengrass.log e está localizado em/greengrass/v2/logs. Os arquivos de log de componentes também estão localizados no mesmo diretório. Para copiar os registros do Greengrass para um diretório temporário no host, execute o seguinte comando:

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

Se você quiser manter os registros após a saída ou remoção de um contêiner, recomendamos que você vincule e monte somente o /greengrass/v2/logs diretório no diretório de registros temporários no host, em vez de montar todo o diretório Greengrass. Para ter mais informações, consulte Persiste os registros do Greengrass fora do contêiner Docker.

Para interromper a execução de um contêiner AWS IoT Greengrass Docker, execute docker stop oudocker-compose -f docker-compose.yml stop. Essa ação é enviada SIGTERM para o processo do Greengrass e encerra todos os processos associados que foram iniciados no contêiner. O contêiner Docker é inicializado com o docker-init executável como processo PID 1, o que ajuda a remover qualquer processo zumbi restante. Para obter mais informações, consulte Especificar um processo de inicialização na documentação do Docker.

Para obter informações sobre como solucionar problemas com a execução AWS IoT Greengrass em um contêiner Docker, consulteSolução de problemas do AWS IoT Greengrass em um contêiner do Docker.