O AWS IoT Greengrass Version 1 entrou na fase de vida útil prolongada em 30 de junho de 2023. Para obter mais informações, consulte política de manutenção do AWS IoT Greengrass V1. Após essa data, o AWS IoT Greengrass V1 não lançará atualizações que forneçam recursos, aprimoramentos, correções de erros ou patches de segurança. Os dispositivos que funcionam com o AWS IoT Greengrass V1 não serão interrompidos e continuarão operando e se conectando à nuvem. É altamente recomendável que você migre para AWS IoT Greengrass Version 2, o que adicionará novos recursos significativos e suporte para plataformas adicionais.
Criar implantações em massa para grupos
Você pode usar chamadas de API simples para implantar um grande número de grupos do Greengrass ao mesmo tempo. Essas implantações são acionadas com uma taxa adaptável que tem um limite superior fixo.
Este tutorial descreve como usar o AWS CLI para criar e monitorar implantação para grupo em massa no AWS IoT Greengrass. O exemplo de implantação em massa deste tutorial contém vários grupos. Você pode usar o exemplo na sua implementação para adicionar quantos grupos precisar.
O tutorial contém as seguintes etapas de nível elevado:
Pré-requisitos
Para concluir este tutorial, é necessário:
-
Um ou mais grupos implantáveis do Greengrass. Para obter mais informações sobre a criação de grupos e cores do AWS IoT Greengrass, consulte Conceitos básicos do AWS IoT Greengrass.
-
O AWS CLI instalado e configurado em sua máquina. Para obter mais informações, consulte o Guia do usuário do AWS CLI.
-
Um bucket do S3 criado na mesma Região da AWS como AWS IoT Greengrass. Para obter mais informações, consulte Criando e configurando um bucket do S3 no Guia do usuário do Amazon Simple Storage Service.
nota
Atualmente, buckets habilitados SSE KMS não são compatíveis.
Etapa 1: Criar e fazer upload do arquivo de entrada de implementação em massa
Nesta etapa, você cria um arquivo de entrada para implantação e faz upload dele para o seu bucket do Amazon S3. Esse arquivo é serializado, um arquivo JSON delimitado por linha, que contém informações sobre cada grupo na implantação em massa. O AWS IoT Greengrass usa essas informações para implantar cada grupo em seu nome quando você inicializa a implantação de grupo em massa.
-
Execute o seguinte comando a fim de obter o
groupId
para cada grupo que você deseja implantar. Você insere ogroupId
no seu arquivo de entrada da implantação em massa para que o AWS IoT Greengrass possa identificar cada grupo a ser implantado.nota
Também é possível encontrar esses valores no console do AWS IoT. O ID do grupo é exibido na página Settings (Configurações) do grupo. Os IDs de versão do grupo são exibidos na guia Implantações do grupo.
aws greengrass list-groups
A resposta contém informações sobre cada grupo na sua conta do AWS IoT Greengrass:
{ "Groups": [ { "Name": "string", "Id": "
string
", "Arn": "string", "LastUpdatedTimestamp": "string", "CreationTimestamp": "string", "LatestVersion": "string", "LatestVersionArn": "string" } ], "NextToken": "string" }Execute o seguinte comando a fim de obter o
groupVersionId
de cada grupo que você deseja implantar.list-group-versions --group-id
groupId
A resposta contém informações sobre todas as versões no grupo. Anote o ID da valor
Version
para a versão do grupo você deseja usar.{ "Versions": [ { "Arn": "string", "Id": "string", "Version": "
string
", "CreationTimestamp": "string" } ], "NextToken": "string" } -
Em seu computador terminal ou editor de sua escolha, crie um arquivo,
MyBulkDeploymentInputFile
, do exemplo a seguir. Esse arquivo contém informações sobre cada grupo do AWS IoT Greengrass a ser incluído em uma implantação em massa. Embora esse exemplo defina vários grupos para esse tutorial, seu arquivo pode conter apenas um.nota
O tamanho do arquivo deve ser menor que 100 MB.
{"GroupId":"
groupId1
", "GroupVersionId":"groupVersionId1
", "DeploymentType":"NewDeployment"} {"GroupId":"groupId2
", "GroupVersionId":"groupVersionId2
", "DeploymentType":"NewDeployment"} {"GroupId":"groupId3
", "GroupVersionId":"groupVersionId3
", "DeploymentType":"NewDeployment"} ...Cada registro (ou linha) contém um objeto do grupo. Cada objeto do grupo contém seu
GroupId
eGroupVersionId
correspondentes e umDeploymentType
. Atualmente, o AWS IoT Greengrass oferece suporte apenas aos tiposNewDeployment
de implantação em massa.Salve e feche seu arquivo. Anote a localização do arquivo.
-
Use o comando a seguir em seu terminal para fazer upload do arquivo de entrada no seu bucket do Amazon S3. Substitua o caminho do arquivo pelo local e nome do seu arquivo. Para obter informações, consulte Adicionar um objeto a um bucket.
aws s3 cp
path/MyBulkDeploymentInputFile
s3://my-bucket
/
Etapa 2: Criar e configurar uma função de execução do IAM
Nesta etapa, você usa o console do IAM para criar uma função de execução autônoma. Em seguida, você estabelece uma relação de confiança entre a função e o AWS IoT Greengrass e garante que o usuário do IAM tenha privilégios PassRole
para sua função de execução. Isso permite que o AWS IoT Greengrass assuma a função de execução e crie as implantações em seu nome.
-
Use a política a seguir para criar uma função de execução. Esse documento de política permite que o AWS IoT Greengrass acesse seu arquivo de entrada da implantação em massa ao criar cada implantação em seu nome.
Para obter mais informações sobre como criar um perfil do IAM e delegar permissões, consulte Criar perfis do IAM.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "greengrass:CreateDeployment", "Resource": [ "arn:aws:greengrass:
region
:accountId
:/greengrass/groups/groupId1
", "arn:aws:greengrass:region
:accountId
:/greengrass/groups/groupId2
", "arn:aws:greengrass:region
:accountId
:/greengrass/groups/groupId3
", ... ] } ] }nota
Essa política deve ter um recurso para cada grupo ou versão do grupo do seu arquivo de entrada da implantação em massa a ser implantado pelo AWS IoT Greengrass. Para permitir o acesso a todos os grupos, para
Resource
, especifique um asterisco:"Resource": ["*"]
-
Modifique a relação de confiança da sua função de execução a fim de incluir o AWS IoT Greengrass. Isso permite ao AWS IoT Greengrass usar sua função de execução e as permissões anexadas a ele. Para obter informações, consulte Editar a relação de confiança de uma função existente.
Recomendamos que você também inclua as chaves de contexto de condição global
aws:SourceArn
eaws:SourceAccount
em sua política de confiança para ajudar a evitar o problema de segurança confused deputy. As chaves de contexto de condição restringem o acesso para permitir somente as solicitações provenientes da conta especificada e do espaço de trabalho do Greengrass. Para obter mais informações sobre o problema confused deputy, consulte Prevenção do problema do substituto confuso entre serviços.{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "greengrass.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "
account-id
" }, "ArnLike": { "aws:SourceArn": "arn:aws:greengrass:region
:account-id
:*" } } } ] } -
Forneça permissões
PassRole
do IAM para a sua função de execução ao usuário do IAM. Esse usuário do IAM é o usado para iniciar a implantação em massa. As permissõesPassRole
permitem que o usuário do IAM passe a sua função de execução ao AWS IoT Greengrass para uso. Para obter mais informações, consulte Conceder a um usuário permissões para transmitir uma função a um produto da AWS.Use o seguinte exemplo para atualizar a política do IAM anexada ao seu perfil de execução. Modifique este exemplo, conforme necessário.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1508193814000", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::
account-id
:user/executionRoleArn
" ] "Condition": { "StringEquals": { "iam:PassedToService": "greengrass.amazonaws.com" } } } ] }
Etapa 3: Permitir o acesso da função de execução ao bucket do S3
Para iniciar sua implantação em massa, sua função de execução deve ser capaz de ler o arquivo de entrada da implantação em massa do seu bucket do Amazon S3. Anexe a política de exemplo a seguir ao seu bucket do Amazon S3 para que suas permissões GetObject
sejam acessíveis à sua função de execução.
Para obter mais informações, consulte Como eu faço para adicionar uma política de bucket do S3?
{ "Version": "2008-10-17", "Id": "examplePolicy", "Statement": [ { "Sid": "Stmt1535408982966", "Effect": "Allow", "Principal": { "AWS": [ "
executionRoleArn
" ] }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-bucket
/objectKey
" } ] }
Você pode usar o comando a seguir em seu terminal para verificar a política do seu bucket:
aws s3api get-bucket-policy --bucket
my-bucket
nota
Você pode modificar diretamente sua função de execução a fim de conceder a ela permissões GetObject
para o seu bucket do Amazon S3. Para isso, anexe a seguinte política de exemplo à sua função de execução.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::
my-bucket
/objectKey
" } ] }
Etapa 4: Implantar os grupos
Nesta etapa, você inicia uma operação de implantação em massa para todas as versões do grupo configuradas no seu arquivo de entrada da implantação em massa. A ação de implantação para cada uma de suas versões de grupo é do tipo NewDeploymentType
.
nota
Você não pode chamar StartBulkDeployment enquanto outra implantação em massa da mesma conta ainda estiver em execução. A solicitação foi rejeitada.
-
Use o comando a seguir para iniciar a implantação em massa.
Recomendamos que você inclua um token
X-Amzn-Client-Token
em cada solicitação StartBulkDeployment. Essas solicitações são idempotentes com relação ao token e os parâmetros da solicitação. Esse token pode ser qualquer string exclusiva e com diferenciação entre maiúsculas de minúsculas de até 64 caracteres ASCII.aws greengrass start-bulk-deployment --cli-input-json "{ "InputFileUri":"
URI of file in S3 bucket
", "ExecutionRoleArn":"ARN of execution role
", "AmznClientToken":"your Amazon client token
" }"O comando deve resultar em um código de status bem-sucedido
200
, junto com a seguinte resposta:{ "bulkDeploymentId":
UUID
}Anote o ID da implantação em massa. Ele pode ser usado para verificar o status de sua implantação em massa.
nota
Embora as operações de implantação em massa não sejam compatíveis no momento, é possível criar regras de eventos do Amazon EventBridge para receber notificações sobre alterações no status de implantação de grupos individuais. Para ter mais informações, consulte Obter notificações de implantação.
-
Use o comando a seguir para verificar o status da sua implantação em massa.
aws greengrass get-bulk-deployment-status --bulk-deployment-id
1234567
O comando deve retornar um código de status bem-sucedido
200
, além de uma carga JSON de informações:{ "BulkDeploymentStatus":
Running
, "Statistics": { "RecordsProcessed":integer
, "InvalidInputRecords":integer
, "RetryAttempts":integer
}, "CreatedAt": "string", "ErrorMessage": "string", "ErrorDetails": [ { "DetailedErrorCode": "string", "DetailedErrorMessage": "string" } ] }BulkDeploymentStatus
contém o status atual da execução em massa. A execução pode ter um dos seis status diferentes:-
Initializing
. A solicitação de implantação em massa foi recebida, e a execução está prestes a ser iniciada. -
Running
. A execução da implantação em massa foi iniciada. -
Completed
. A execução da implantação em massa finalizou o processamento de todos os registros. -
Stopping
. A execução da implantação em massa recebeu um comando de interrupção e será encerrada em breve. Não é possível iniciar uma nova implantação em massa enquanto uma implantação anterior está em estadoStopping
. -
Stopped
. A execução da implantação em massa foi interrompida manualmente. -
Failed
. A execução da implantação em massa encontrou um erro e foi encerrada. É possível encontrar detalhes do erro no campoErrorDetails
.
A carga JSON também inclui informações estatísticas sobre o progresso da implantação em massa. Você pode usar essas informações para determinar a quantidade de grupos que foram processados e quantos deles falharam. As informações estatísticas incluem:
-
RecordsProcessed
: o número de registro de tentativas do grupo. -
InvalidInputRecords
: o número total de registros que não apresentaram erro de nova tentativa. Por exemplo, isso pode ocorrer se o registro de um grupo do arquivo de entrada usa um formato inválido ou especifica uma versão de grupo inexistente, ou se a execução não concede permissão para implantar um grupo ou versão do grupo. -
RetryAttempts
: o número de tentativas de implantação que apresentaram erro de nova tentativa. Por exemplo, uma nova tentativa é acionada se a tentativa de implantar um grupo retorna um erro de limitação. A implantação do grupo pode ser repetida até cinco vezes.
No caso de uma falha de execução da implantação em massa, essa carga também inclui uma seção
ErrorDetails
que pode ser usada para solução de problemas. Ela contém informações sobre a causa da falha de execução.Você pode verificar periodicamente o status da implantação em massa para confirmar se ela está progredindo conforme esperado. Depois de concluir a implantação,
RecordsProcessed
deve ser igual ao número de grupos de implantação em seu arquivo de entrada da implantação em massa. Isso indica que cada registro foi processado. -
Etapa 5: Testar a implantação
Use o comando ListBulkDeployments para encontrar o ID da implantação em massa.
aws greengrass list-bulk-deployments
Esse comando retorna uma lista de todas as suas implantações em massa da mais recente para a menos recente, incluindo o BulkDeploymentId
.
{ "BulkDeployments": [ { "BulkDeploymentId":
1234567
, "BulkDeploymentArn": "string", "CreatedAt": "string" } ], "NextToken": "string" }
Agora, chame o comando ListBulkDeploymentDetailedReports para reunir informações detalhadas sobre cada implantação.
aws greengrass list-bulk-deployment-detailed-reports --bulk-deployment-id
1234567
O comando deve retornar um código de status bem-sucedido 200
, junto com uma carga JSON de informações:
{
"BulkDeploymentResults": [
{
"DeploymentId": "string",
"GroupVersionedArn": "string",
"CreatedAt": "string",
"DeploymentStatus": "string",
"ErrorMessage": "string",
"ErrorDetails": [
{
"DetailedErrorCode": "string",
"DetailedErrorMessage": "string"
}
]
}
],
"NextToken": "string"
}
Essa carga geralmente contém uma lista paginada de cada implantação e seu status de implantação da mais recente para a menos recente. Ela também contém mais informações no caso de uma falha de execução da implantação em massa. Novamente, o número total de implantações listadas deve ser igual ao número de grupos que você identificou no seu arquivo de entrada da implantação em massa.
As informações retornadas podem ser alteradas até que as implantações estejam em estado terminal (êxito ou falha). Você pode chamar esse comando periodicamente até lá.
Solução de problemas de implantações em massa
Se a implantação em massa não for bem-sucedida, você poderá tentar as etapas de solução de problemas a seguir. Execute os comandos no seu terminal.
Solução de problemas de erros do arquivo de entrada
A implantação em massa pode falhar em caso de erros de sintaxe no arquivo de entrada da implantação em massa. Isso retorna um status Failed
de implantação em massa com uma mensagem de erro indicando o número da linha do primeiro erro de validação. Existem quatro erros possíveis:
-
InvalidInputFile: Missing
GroupId
at line number:line number
Esse erro indica que a linha fornecida do arquivo de entrada não é capaz de registrar o parâmetro especificado. Os possíveis parâmetros ausentes são
GroupId
eGroupVersionId
. -
InvalidInputFile: Invalid deployment type at line number :
line number
. Only valid type is 'NewDeployment'.Esse erro indica a linha fornecida do arquivo de entrada lista um tipo inválido de implantação. No momento, o único tipo de implantação compatível é
NewDeployment
. -
Line
%s
is too long in S3 File. Valid line is less than 256 chars.Esse erro indica que a linha fornecida do arquivo de entrada é longa demais e deve ser reduzida.
-
Failed to parse input file at line number:
line number
Esse erro indica que a linha fornecida do arquivo de entrada não é considerada um json válido.
Verifique se há implantações simultâneas em massa
Não é possível iniciar uma nova implantação em massa enquanto outra ainda está em execução ou em estado não terminal. Isso pode resultar em um Concurrent Deployment Error
. Você pode usar o comando ListBulkDeployments para verificar se uma implantação em massa está sendo executada no momento. Esse comando lista as implantações em massa da mais recente para a menos recente.
{ "BulkDeployments": [ { "BulkDeploymentId":
BulkDeploymentId
, "BulkDeploymentArn": "string", "CreatedAt": "string" } ], "NextToken": "string" }
Use o BulkDeploymentId
da primeira implantação em massa listada para executar o comando GetBulkDeploymentStatus. Se a sua implantação em massa mais recente estiver em um estado de execução (Initializing
ou Running
), use o comando a seguir para interromper a implantação em massa.
aws greengrass stop-bulk-deployment --bulk-deployment-id
BulkDeploymentId
Essa ação resulta em um status Stopping
até que a implantação seja Stopped
. Após a implantação atingir o status Stopped
, você pode iniciar uma nova implantação em massa.
Verificar ErrorDetails
Execute o comando GetBulkDeploymentStatus
para retornar uma carga JSON que contém informações sobre qualquer falha de execução da implantação em massa.
"Message": "string", "ErrorDetails": [ { "DetailedErrorCode": "string", "DetailedErrorMessage": "string" } ]
Ao obter um erro, a carga JSON ErrorDetails
retornada por essa chamada contém mais informações sobre a falha de execução da implantação em massa. Um código de status de erro na série 400
, por exemplo, indica um erro de entrada, nos parâmetros de entrada ou nas dependências do chamador.
Verificar o log de núcleo do AWS IoT Greengrass
Você pode solucionar problemas ao visualizar os logs de núcleo do AWS IoT Greengrass. Use os comandos a seguir para visualizar o runtime.log
:
cd /greengrass/ggc/var/log sudo cat system/runtime.log | more
Para obter mais informações sobre registro em log do AWS IoT Greengrass, consulte Monitoramento com logs do AWS IoT Greengrass.
Consulte também
Para obter mais informações, consulte os seguintes recursos do :
-
Implantar grupos do AWS IoT Greengrass em um núcleo do AWS IoT Greengrass
-
Comandos do API do Amazon S3 na Referência de comandos da AWS CLI.
-
Comandos do AWS IoT Greengrass disponíveis na Referência de comandos do AWS CLI