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: criar o componente no serviço AWS IoT Greengrass
Ao concluir o desenvolvimento de um componente no dispositivo principal, você pode carregá-lo para o serviço AWS IoT Greengrass
na Nuvem AWS. Você também pode criar o componente diretamente no console do AWS IoT Greengrass
-
Carregue os artefatos de componente 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.
-
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 faz download dos artefatos do componente do bucket.
Você pode usar um bucket do S3 existente ou criar um novo.
-
No console do Amazon S3
, em Buckets, escolha Criar bucket. -
Em Nome do bucket, insira um nome exclusivo para o bucket. Por exemplo, você poderá usar o
greengrass-component-artifacts-
.region
-123456789012
123456789012
Substitua pelo ID da sua AWS conta eregion
pelo Região da AWS que você usa neste tutorial. -
Para AWS região, selecione a AWS região que você usa para este tutorial.
-
Escolha Criar bucket.
-
Em Buckets, escolha o bucket que você criou e carregue o script
hello_world.py
para a pastaartifacts/com.example.HelloWorld/1.0.0
no bucket. Para obter mais informações sobre como carregar objetos, consulte Como carregar objetos no Guia do usuário do Amazon Simple Storage Service. -
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 do S3.s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
-
-
Permita que o dispositivo principal acesse os artefatos do componente 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. Por padrão, esse perfil do dispositivo não permite acesso aos buckets do S3, portanto você deve criar e anexar uma política que permita que o dispositivo principal recupere os artefatos do componente do bucket do S3.
Se o perfil do seu dispositivo já permitir o acesso ao bucket do S3, você poderá ignorar esta etapa. Caso contrário, crie uma IAM política que permita acesso e anexe-a à função, da seguinte forma:
-
No menu de navegação do IAMconsole
, escolha Políticas e, em seguida, escolha Criar política. -
Na JSONguia, substitua o conteúdo do espaço reservado pela política a seguir. Substitua amzn-s3-demo-bucket pelo nome do bucket do S3 que contém os artefatos do componente que serão baixados do dispositivo principal.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
-
Escolha Próximo.
-
Na seção Detalhes da política, insira
MyGreengrassV2ComponentArtifactPolicy
em Nome. -
Escolha Criar política.
-
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 é GreengrassV2TokenExchangeRole
. -
Em Permissões, escolha Adicionar permissões e Anexar políticas.
-
Na página Adicionar permissões, marque a caixa de seleção ao lado da política
MyGreengrassV2ComponentArtifactPolicy
que você criou e escolha Adicionar permissões.
-
-
Use a fórmula do componente para criar um componente no console do AWS IoT Greengrass
. -
No menu de navegação do console do AWS IoT Greengrass
, escolha Componentes e Criar componente. -
Em Informações do componente, escolha Inserir receita como JSON. A fórmula no 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" } ] } ] }
-
Substitua o espaço reservado URI em cada
Artifacts
seção pelo S3 URI do seuhello_world.py
objeto. -
Escolha Criar componente.
-
No com.example. HelloWorldpágina do componente, verifique se o status do componente é Implantável.
-
Para carregar o componente Hello World
-
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 faz download dos artefatos do componente do bucket.
Você pode usar um bucket do 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.
123456789012
Substitua pelo seu Conta da AWS ID eregion
pelo Região da AWS que você usa neste tutorial.aws s3 mb s3://greengrass-component-artifacts-
123456789012
-region
O comando retorna as informações a seguir quando a solicitação é bem-sucedida.
make_bucket: greengrass-component-artifacts-
123456789012
-region
-
Permita que o dispositivo principal acesse os artefatos do componente 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. Por padrão, esse perfil do dispositivo não permite acesso aos buckets do S3, portanto você deve criar e anexar uma política que permita que o dispositivo principal recupere os artefatos do componente do bucket do S3.
Se o perfil do dispositivo principal já permitir o acesso ao bucket do S3, você poderá ignorar esta etapa. Caso contrário, crie uma IAM política que permita acesso e anexe-a à função, da seguinte forma:
-
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 do S3.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
-
Execute o comando a seguir para criar a política com base no documento em
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.
-
Execute o comando a seguir para anexar a política ao perfil do dispositivo principal.
GreengrassV2TokenExchangeRole
Substitua pelo 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.Se for bem-sucedido, o comando não retornará nada. Agora o dispositivo principal pode acessar os artefatos que você carregou nesse bucket do S3.
-
-
Carregue o artefato do script Hello World em 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 do S3.
O comando retornará uma linha que começa com
upload:
se a solicitação for bem-sucedida. -
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 do 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. -
Crie um recurso de componente a AWS IoT Greengrass partir da receita. Execute o comando a seguir para criar o componente com base na fórmula, que você fornece como um arquivo binário.
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 o componente Hello World no console do AWS IoT Greengrass
na página Componentes. -
Verifique se o componente foi criado e está pronto para ser implantado. Quando você cria um componente, o estado dele é
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.arn
Substitua 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 dele é
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.