Etapa 5: Crie seu componente no AWS IoT Greengrass serviço - 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á.

Etapa 5: Crie seu componente no AWS IoT Greengrass serviço

Ao terminar de desenvolver um componente em seu dispositivo principal, você pode carregá-lo para o AWS IoT Greengrass serviço no Nuvem AWS. Você também pode criar diretamente o componente no AWS IoT Greengrass console. AWS IoT Greengrass fornece um serviço de gerenciamento de componentes que hospeda seus componentes para que você possa implantá-los em dispositivos individuais ou em frotas de dispositivos. Para carregar um componente para o AWS IoT Greengrass serviço, você conclui as seguintes etapas:

  • Faça upload de artefatos de componentes em um bucket do S3.

  • Adicione o Amazon Simple Storage Service (Amazon S3) URI de cada artefato à receita do componente.

  • Crie um componente a AWS IoT Greengrass partir da receita do componente.

Nesta seção, você conclui essas etapas em seu dispositivo principal do Greengrass para carregar seu componente Hello World no AWS IoT Greengrass serviço.

  1. Use um bucket do S3 em sua AWS conta para hospedar artefatos de AWS IoT Greengrass componentes. Quando você implanta o componente em um dispositivo principal, o dispositivo baixa os artefatos do componente do bucket.

    Você pode usar um bucket S3 existente ou criar um novo bucket.

    1. No console do Amazon S3, em Buckets, escolha Create bucket.

    2. Em Nome do compartimento, insira um nome de compartimento exclusivo. Por exemplo, você poderá usar o greengrass-component-artifacts-region-123456789012. Substituir 123456789012 com o ID AWS da sua conta e region com o Região da AWS que você usa para este tutorial.

    3. Para AWS região, selecione a AWS região que você usa para este tutorial.

    4. Selecione Criar bucket.

    5. Em Buckets, escolha o bucket que você criou e faça o upload do hello_world.py script para a artifacts/com.example.HelloWorld/1.0.0 pasta no bucket. Para obter informações sobre o upload de objetos para buckets do S3, consulte Carregar objetos no Guia do usuário do Amazon Simple Storage Service.

    6. Copie o S3 URI do hello_world.py objeto no bucket do S3. Isso URI deve ser semelhante ao exemplo a seguir. Substitua amzn-s3-demo-bucket pelo nome do bucket S3.

      s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
  2. Permita que o dispositivo principal acesse artefatos de componentes no bucket do S3.

    Cada dispositivo principal tem uma IAMfunção de dispositivo principal que permite interagir AWS IoT e enviar registros para a AWS nuvem. Essa função de dispositivo não permite acesso aos buckets do S3 por padrão, portanto, você deve criar e anexar uma política que permita que o dispositivo principal recupere artefatos do componente do bucket do S3.

    Se a função do seu dispositivo já permitir o acesso ao bucket do S3, você pode pular esta etapa. Caso contrário, crie uma IAM política que permita acesso e anexe-a à função, da seguinte forma:

    1. No menu de navegação do IAMconsole, escolha Políticas e, em seguida, escolha Criar política.

    2. Na JSONguia, substitua o conteúdo do espaço reservado pela política a seguir. Substitua amzn-s3-demo-bucket pelo nome do bucket S3 que contém artefatos de componentes para download do dispositivo principal.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
    3. Escolha Próximo.

    4. Na seção Detalhes da política, em Nome, insiraMyGreengrassV2ComponentArtifactPolicy.

    5. Escolha Criar política.

    6. No menu de navegação do IAMconsole, escolha Função e, em seguida, escolha o nome da função para o dispositivo principal. Você especificou esse nome de função ao instalar o software AWS IoT Greengrass Core. Se você não especificou um nome, o padrão seráGreengrassV2TokenExchangeRole.

    7. Em Permissões, escolha Adicionar permissões e, em seguida, escolha Anexar políticas.

    8. Na página Adicionar permissões, marque a caixa de seleção ao lado da MyGreengrassV2ComponentArtifactPolicy política que você criou e escolha Adicionar permissões.

  3. Use a receita do componente para criar um componente no AWS IoT Greengrass console.

    1. No menu de navegação do AWS IoT Greengrass console, escolha Componentes e, em seguida, escolha Criar componente.

    2. Em Informações do componente, escolha Inserir receita como JSON. A receita do espaço reservado deve ser semelhante ao exemplo a seguir.

      { "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.HelloWorld", "ComponentVersion": "1.0.0", "ComponentDescription": "My first AWS IoT Greengrass component.", "ComponentPublisher": "Amazon", "ComponentConfiguration": { "DefaultConfiguration": { "Message": "world" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "run": "python3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] }, { "Platform": { "os": "windows" }, "Lifecycle": { "run": "py -3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] } ] }
    3. Substitua o espaço reservado URI em cada Artifacts seção pelo S3 URI do seu hello_world.py objeto.

    4. Escolha Criar componente.

    5. No com.example. HelloWorldpágina do componente, verifique se o status do componente é Implantável.

Para fazer o upload do seu componente Hello World
  1. Use um bucket do S3 em seu Conta da AWS para hospedar artefatos de AWS IoT Greengrass componentes. Quando você implanta o componente em um dispositivo principal, o dispositivo baixa os artefatos do componente do bucket.

    Você pode usar um bucket S3 existente ou executar o comando a seguir para criar um bucket. Esse comando cria um bucket com seu Conta da AWS ID e forma um nome exclusivo Região da AWS para o bucket. Substituir 123456789012 com sua Conta da AWS identidade e region com o Região da AWS que você usa para este tutorial.

    aws s3 mb s3://greengrass-component-artifacts-123456789012-region

    O comando exibirá as seguintes informações se a solicitação for bem-sucedida.

    make_bucket: greengrass-component-artifacts-123456789012-region
  2. Permita que o dispositivo principal acesse artefatos de componentes no bucket do S3.

    Cada dispositivo principal tem uma IAMfunção de dispositivo principal que permite interagir AWS IoT e enviar registros para Nuvem AWS o. Essa função de dispositivo não permite acesso aos buckets do S3 por padrão, portanto, você deve criar e anexar uma política que permita que o dispositivo principal recupere artefatos do componente do bucket do S3.

    Se a função do dispositivo principal já permitir o acesso ao bucket do S3, você pode pular essa etapa. Caso contrário, crie uma IAM política que permita acesso e anexe-a à função, da seguinte forma:

    1. Crie um arquivo chamado component-artifact-policy.json e copie o seguinte JSON para o arquivo. Essa política permite acesso a todos os arquivos em um bucket do S3. Substitua amzn-s3-demo-bucket pelo nome do bucket S3.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
    2. Execute o comando a seguir para criar a política a partir do documento de política emcomponent-artifact-policy.json.

      Linux or Unix
      aws iam create-policy \\ --policy-name MyGreengrassV2ComponentArtifactPolicy \\ --policy-document file://component-artifact-policy.json
      Windows Command Prompt (CMD)
      aws iam create-policy ^ --policy-name MyGreengrassV2ComponentArtifactPolicy ^ --policy-document file://component-artifact-policy.json
      PowerShell
      aws iam create-policy ` --policy-name MyGreengrassV2ComponentArtifactPolicy ` --policy-document file://component-artifact-policy.json

      Copie a política Amazon Resource Name (ARN) dos metadados da política na saída. Você usa isso ARN para anexar essa política à função de dispositivo principal na próxima etapa.

    3. Execute o comando a seguir para anexar a política à função do dispositivo principal. Substituir GreengrassV2TokenExchangeRole com o nome da função do dispositivo principal. Você especificou esse nome de função ao instalar o software AWS IoT Greengrass Core. Substitua ARN a política ARN pela da etapa anterior.

      Linux or Unix
      aws iam attach-role-policy \\ --role-name GreengrassV2TokenExchangeRole \\ --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
      Windows Command Prompt (CMD)
      aws iam attach-role-policy ^ --role-name GreengrassV2TokenExchangeRole ^ --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
      PowerShell
      aws iam attach-role-policy ` --role-name GreengrassV2TokenExchangeRole ` --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy

      Se o comando não tiver saída, ele foi bem-sucedido. O dispositivo principal agora pode acessar os artefatos que você carrega nesse bucket do S3.

  3. Faça upload do artefato do script Hello World Python para o bucket do S3.

    Execute o comando a seguir para carregar o script no mesmo caminho no bucket em que o script existe no seu AWS IoT Greengrass núcleo. Substitua amzn-s3-demo-bucket pelo nome do bucket S3.

    Linux or Unix
    aws s3 cp \ artifacts/com.example.HelloWorld/1.0.0/hello_world.py \ s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
    Windows Command Prompt (CMD)
    aws s3 cp ^ artifacts/com.example.HelloWorld/1.0.0/hello_world.py ^ s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
    PowerShell
    aws s3 cp ` artifacts/com.example.HelloWorld/1.0.0/hello_world.py ` s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    O comando gera uma linha que começa com upload: se a solicitação for bem-sucedida.

  4. Adicione o Amazon URI S3 do artefato à receita do componente.

    O Amazon S3 URI é composto pelo nome do bucket e pelo caminho para o objeto de artefato no bucket. O Amazon URI S3 do seu artefato de script é aquele para URI o qual você fez o upload do artefato na etapa anterior. Isso URI deve ser semelhante ao exemplo a seguir. Substitua amzn-s3-demo-bucket pelo nome do bucket S3.

    s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    Para adicionar o artefato à receita, adicione uma lista Artifacts que contenha uma estrutura com o Amazon URI S3.

    JSON
    "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ]

    Abra o arquivo da receita em um editor de texto.

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

    nano recipes/com.example.HelloWorld-1.0.0.json

    Adicione o artefato à receita. Seu arquivo de receita deve ser semelhante ao exemplo a seguir.

    { "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.HelloWorld", "ComponentVersion": "1.0.0", "ComponentDescription": "My first AWS IoT Greengrass component.", "ComponentPublisher": "Amazon", "ComponentConfiguration": { "DefaultConfiguration": { "Message": "world" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "run": "python3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] }, { "Platform": { "os": "windows" }, "Lifecycle": { "run": "py -3 -u {artifacts:path}/hello_world.py \"{configuration:/Message}\"" }, "Artifacts": [ { "URI": "s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py" } ] } ] }
    YAML
    Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py

    Abra o arquivo da receita em um editor de texto.

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

    nano recipes/com.example.HelloWorld-1.0.0.yaml

    Adicione o artefato à receita. Seu arquivo de receita deve ser semelhante ao exemplo a seguir.

    --- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.HelloWorld ComponentVersion: '1.0.0' ComponentDescription: My first AWS IoT Greengrass component. ComponentPublisher: Amazon ComponentConfiguration: DefaultConfiguration: Message: world Manifests: - Platform: os: linux Lifecycle: run: | python3 -u {artifacts:path}/hello_world.py "{configuration:/Message}" Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py - Platform: os: windows Lifecycle: run: | py -3 -u {artifacts:path}/hello_world.py "{configuration:/Message}" Artifacts: - URI: s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
  5. Crie um recurso de componente a AWS IoT Greengrass partir da receita. Execute o comando a seguir para criar o componente a partir da receita, que você fornece como um arquivo binário.

    JSON
    aws greengrassv2 create-component-version --inline-recipe fileb://recipes/com.example.HelloWorld-1.0.0.json
    YAML
    aws greengrassv2 create-component-version --inline-recipe fileb://recipes/com.example.HelloWorld-1.0.0.yaml

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

    { "arn": "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0", "componentName": "com.example.HelloWorld", "componentVersion": "1.0.0", "creationTimestamp": "Mon Nov 30 09:04:05 UTC 2020", "status": { "componentState": "REQUESTED", "message": "NONE", "errors": {} } }

    Copie o arn da saída para verificar o estado do componente na próxima etapa.

    nota

    Você também pode ver seu componente Hello World no AWS IoT Greengrass console na página Componentes.

  6. Verifique se o componente foi criado e está pronto para ser implantado. Quando você cria um componente, seu estado éREQUESTED. Em seguida, AWS IoT Greengrass valida se o componente é implantável. Você pode executar o comando a seguir para consultar o status do componente e verificar se ele é implantável. arnSubstitua o pelo ARN da etapa anterior.

    aws greengrassv2 describe-component --arn "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0"

    Se o componente for validado, a resposta indicará que o estado do componente éDEPLOYABLE.

    { "arn": "arn:aws:greengrass:region:123456789012:components:com.example.HelloWorld:versions:1.0.0", "componentName": "com.example.HelloWorld", "componentVersion": "1.0.0", "creationTimestamp": "2020-11-30T18:04:05.823Z", "publisher": "Amazon", "description": "My first Greengrass component.", "status": { "componentState": "DEPLOYABLE", "message": "NONE", "errors": {} }, "platforms": [ { "os": "linux", "architecture": "all" } ] }

Seu componente Hello World agora está disponível em AWS IoT Greengrass. Você pode implantá-lo de volta nesse dispositivo principal do Greengrass ou em outros dispositivos principais.