Criar implantações - 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á.

Criar implantações

Você pode criar uma implantação que tenha como alvo um objeto ou um grupo de objetos.

Ao criar uma implantação, você configura os componentes de software a serem implantados e como o trabalho de implantação é implementado nos dispositivos de destino. É possível definir a implantação no arquivo JSON que você fornece à AWS CLI.

O destino de implantação determina os dispositivos nos quais você deseja executar os componentes. Para implantar em um dispositivo principal, especifique um objeto. Para implantar em vários dispositivos principais, especifique um grupo de objetos que inclua esses dispositivos. Para mais informações sobre como configurar grupos de objetos, consulte Grupos de objetos estáticos e Grupos de objetos dinâmicos no Guia do desenvolvedor da AWS IoT .

Siga as etapas nesta seção para criar uma implantação em um destino. Para mais informações sobre como atualizar os componentes de software em um destino que tenha uma implantação, consulte Revisões das implantações.

Atenção

A CreateDeploymentoperação pode desinstalar componentes dos dispositivos principais. Se um componente estiver presente na implantação anterior e não na nova implantação, o dispositivo principal desinstalará esse componente. Para evitar a desinstalação de componentes, primeiro use a ListDeploymentsoperação para verificar se o destino da implantação já tem uma implantação existente. Em seguida, use a GetDeploymentoperação para começar a partir da implantação existente ao criar uma nova implantação.

Para criar uma implantação (AWS CLI)
  1. Crie um arquivo chamado deployment.json e copie o objeto JSON a seguir no arquivo. targetArnSubstitua pelo ARN da AWS IoT coisa ou grupo de itens a ser destinado para a implantação. Thing and thing group ARNs têm o seguinte formato:

    • Coisa: arn:aws:iot:region:account-id:thing/thingName

    • Grupo de coisas: arn:aws:iot:region:account-id:thinggroup/thingGroupName

    { "targetArn": "targetArn" }
  2. Verifique se o destino de implantação tem uma implantação existente que você deseja revisar. Faça o seguinte:

    1. Execute o comando a seguir para listar as implantações para o destino de implantação. targetArnSubstitua pelo ARN da AWS IoT coisa ou grupo de coisas de destino.

      aws greengrassv2 list-deployments --target-arn targetArn

      A resposta contém uma lista com a implantação mais recente do destino. Se a resposta está vazia, o destino não tem uma implantação existente e você pode pular para Passo 3. Caso contrário, copie o deploymentId da resposta para usar na próxima etapa.

      nota

      Também é possível revisar uma implantação diferente da revisão mais recente do destino. Especifique o argumento --history-filter ALL para listar todas as implantações do destino. Em seguida, copie o ID da implantação que você quer revisar.

    2. Execute o comando a seguir para obter os detalhes da implantação. Esses detalhes incluem metadados, componentes e configuração do trabalho. Substitua o deploymentId pelo ID da tarefa da etapa anterior.

      aws greengrassv2 get-deployment --deployment-id deploymentId

      A resposta tem os detalhes da implantação.

    3. Copie qualquer um dos seguintes pares de valores-chave da resposta do comando anterior para deployment.json. Você pode alterar esses valores para a nova implantação.

      • deploymentName: o nome da implantação.

      • components: os componentes da implantação. Para desinstalar um componente, remova-o desse objeto.

      • deploymentPolicies: as políticas da implantação.

      • iotJobConfiguration: a configuração do trabalho da implantação.

      • tags: as tags da implantação.

  3. (Opcional) Defina um nome para a implantação. deploymentNameSubstitua pelo nome da implantação.

    { "targetArn": "targetArn", "deploymentName": "deploymentName" }
  4. Adicione cada componente para implantar os dispositivos de destino. Para fazer isso, adicione pares de chave-valor ao objeto components, em que a chave é o nome do componente e o valor é um objeto que contém os detalhes desse componente. Especifique os seguintes detalhes para cada componente adicionado:

    • version: a versão do componente a ser implantada.

    • configurationUpdate: a atualização de configuração a ser implantada. A atualização é uma operação de patch que modifica a configuração existente do componente em cada dispositivo de destino ou a configuração padrão do componente se ela não existir no dispositivo de destino. Você pode especificar as seguintes atualizações de configuração:

      • Redefinir atualizações (reset): (opcional) uma lista de ponteiros JSON que definem os valores de configuração a serem redefinidos para seus valores padrão no dispositivo de destino. O software AWS IoT Greengrass principal aplica atualizações de redefinição antes de aplicar atualizações de mesclagem. Para obter mais informações, consulte Atualizações de redefinição.

      • Mesclar atualizações (merge): (opcional) um documento JSON que define os valores de configuração a serem mesclados no dispositivo de destino. Serialize o documento JSON como uma string. Para obter mais informações, consulte Atualizações de mesclagem.

    • runWith— (Opcional) As opções de processo do sistema que o software AWS IoT Greengrass Core usa para executar os processos desse componente no dispositivo principal. Se você omitir um parâmetro no runWith objeto, o software AWS IoT Greengrass Core usará os valores padrão que você configura no componente do núcleo do Greengrass.

      Você pode especificar qualquer uma das seguintes opções:

      • posixUser: o usuário do sistema POSIX e, como opção, o grupo a ser usado para executar este componente em dispositivos principais do Linux. O usuário e o grupo, se especificados, devem existir em cada dispositivo principal do Linux. Especifique o usuário e o grupo separando-os por dois pontos (:), no seguinte formato: user:group. O grupo é opcional. Se você não especificar um grupo, o software AWS IoT Greengrass Core usará o grupo primário para o usuário. Para obter mais informações, consulte Configurar o usuário que executa os componentes.

      • windowsUser: o usuário do Windows a ser usado para executar esse componente nos dispositivos principais do Windows. O usuário deve existir em cada dispositivo principal do Windows, e seu nome e senha devem ser armazenados na instância do Gerenciador de Credenciais da LocalSystem conta. Para obter mais informações, consulte Configurar o usuário que executa os componentes.

        Esse atributo está disponível para a versão 2.5.0 e posterior do componente de núcleo do Greengrass.

      • systemResourceLimits: os limites de recursos do sistema a serem aplicados aos processos desse componente. Você pode aplicar limites de recursos do sistema a componentes Lambda genéricos e não conteinerizados. Para obter mais informações, consulte Configurar limites de recursos do sistema para componentes.

        Você pode especificar qualquer uma das seguintes opções:

        • cpus: a quantidade máxima de tempo de CPU que os processos deste componente podem usar no dispositivo principal. O tempo total da CPU de um dispositivo essencial é equivalente ao número de núcleos da CPU do dispositivo. Por exemplo, em um dispositivo principal com quatro núcleos da CPU, é possível definir esse valor como 2 a fim de limitar os processos do componente para 50% de uso em cada núcleo da CPU. Em um dispositivo com um núcleo da CPU, você pode definir esse valor como 0.25 a fim de limitar os processos do componente para 25% de uso da CPU. Se você definir esse valor como um número maior que o número de núcleos de CPU, o software AWS IoT Greengrass Core não limitará o uso da CPU do componente.

        • memory: a quantidade máxima de RAM, expressa em kilobytes, que esse processo de componente pode usar no dispositivo principal.

        Esse recurso está disponível para a versão 2.4.0 e posterior do componente de núcleo do Greengrass. AWS IoT Greengrass atualmente não oferece suporte a esse recurso nos dispositivos principais do Windows.

     

    exemplo Exemplo de atualização de configuração básica

    O seguinte objeto components de exemplo especifica a implantação de um componente, com.example.PythonRuntime, que espera um parâmetro de configuração chamado pythonVersion.

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.PythonRuntime": { "componentVersion": "1.0.0", "configurationUpdate": { "merge": "{\"pythonVersion\":\"3.7\"}" } } } }
    exemplo Exemplo de atualização de configuração com atualizações de redefinição e mesclagem

    Considere um exemplo de componente de painel industrial, com.example.IndustrialDashboard, que tem a seguinte configuração padrão.

    { "name": null, "mode": "REQUEST", "network": { "useHttps": true, "port": { "http": 80, "https": 443 }, }, "tags": [] }

    A atualização de configuração a seguir especifica as seguintes instruções:

    1. Redefina a configuração HTTPS para o valor padrão (true).

    2. Redefina a lista de etiquetas industriais para uma lista vazia.

    3. Combine uma lista de etiquetas industriais que identificam fluxos de dados de temperatura e pressão para duas caldeiras.

    { "reset": [ "/network/useHttps", "/tags" ], "merge": { "tags": [ "/boiler/1/temperature", "/boiler/1/pressure", "/boiler/2/temperature", "/boiler/2/pressure" ] } }

    O seguinte objeto components de exemplo especifica a implantação desse componente de painel industrial e a atualização de configuração.

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.IndustrialDashboard": { "componentVersion": "1.0.0", "configurationUpdate": { "reset": [ "/network/useHttps", "/tags" ], "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}" } } } }
  5. (Opcional) Defina políticas para a implantação. Você pode configurar quando os dispositivos principais podem aplicar uma implantação com segurança ou o que fazer se um dispositivo principal não conseguir aplicar a implantação. Para isso, adicione um objeto deploymentPolicies ao deployment.json e, em seguida, faça o seguinte:

    1. (Opcional) Especifique a política de atualização de componente (componentUpdatePolicy). Essa política define se a implantação permite ou não que os componentes adiem uma atualização até que estejam prontos para serem atualizados. Por exemplo, os componentes podem precisar limpar recursos ou concluir ações críticas antes de serem reiniciados para aplicar uma atualização. Essa política também define a quantidade de tempo que os componentes têm para responder a uma notificação de atualização.

      Esta política é um objeto com os seguintes parâmetros:

      • action: (opcional) notifica, ou não, os componentes e aguarda que eles possam informar quando estiverem prontos para atualização. Escolha uma das seguintes opções:

        • NOTIFY_COMPONENTS: a implantação notifica cada componente antes que ele seja interrompido e atualiza esse componente. Os componentes podem usar a operação de IPC SubscribeToComponentUpdates para receber essas notificações.

        • SKIP_NOTIFY_COMPONENTS: a implantação não notifica os componentes ou aguarda que eles possam ser atualizados com segurança.

        O padrão é NOTIFY_COMPONENTS.

      • timeoutInSeconds: a quantidade de tempo, em segundos, que cada componente tem para responder a uma notificação de atualização com a operação de IPC DeferComponentUpdate. Se o componente não responder dentro desse período, a implantação prosseguirá no dispositivo principal.

        O padrão é 60 segundos.

    2. (Opcional) Especifique a política de validação de configuração (configurationValidationPolicy). Esta política define quanto tempo cada componente tem para validar uma atualização de configuração de uma implantação. Os componentes podem usar a operação de IPC SubscribeToValidateConfigurationUpdates para assinar notificações para as próprias atualizações de configuração. Em seguida, os componentes podem usar a operação SendConfigurationValidityReport IPC para informar ao software AWS IoT Greengrass Core se a atualização de configuração é válida. Se a atualização de configuração não for válida, a implantação falhará.

      Esta política é um objeto com o seguinte parâmetro:

      • timeoutInSeconds (Opcional) a quantidade de tempo em segundos que cada componente tem para validar uma atualização de configuração. Se o componente não responder dentro desse período, a implantação prosseguirá no dispositivo principal.

        O padrão é 30 segundos.

    3. (Opcional) Especifique a política de tratamento de falhas (failureHandlingPolicy). Essa política é uma sequência de caracteres que define se os dispositivos devem ser revertidos ou não se a implantação falhar. Escolha uma das seguintes opções:

      • ROLLBACK— Se a implantação falhar em um dispositivo principal, o software AWS IoT Greengrass Core reverterá esse dispositivo principal para a configuração anterior.

      • DO_NOTHING— Se a implantação falhar em um dispositivo principal, o software AWS IoT Greengrass Core manterá a nova configuração. Isso pode resultar em componentes com falha se a nova configuração não for válida.

      O padrão é ROLLBACK.

    Sua implantação em deployment.json pode ser semelhante ao exemplo a seguir:

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.IndustrialDashboard": { "componentVersion": "1.0.0", "configurationUpdate": { "reset": [ "/network/useHttps", "/tags" ], "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}" } } }, "deploymentPolicies": { "componentUpdatePolicy": { "action": "NOTIFY_COMPONENTS", "timeoutInSeconds": 30 }, "configurationValidationPolicy": { "timeoutInSeconds": 60 }, "failureHandlingPolicy": "ROLLBACK" } }
  6. (Opcional) Defina como a implantação é interrompida, implementada ou expira. AWS IoT Greengrass usa AWS IoT Core trabalhos para enviar implantações aos dispositivos principais, portanto, essas opções são idênticas às opções de configuração dos AWS IoT Core trabalhos. Para mais informações, consulte Configuração para implantar e anular trabalhos no Guia do desenvolvedor da AWS IoT .

    Para definir as opções de trabalho, adicione um objeto iotJobConfiguration ao deployment.json. Em seguida, defina as opções a serem configuradas.

    Sua implantação em deployment.json pode ser semelhante ao exemplo a seguir:

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.IndustrialDashboard": { "componentVersion": "1.0.0", "configurationUpdate": { "reset": [ "/network/useHttps", "/tags" ], "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}" } } }, "deploymentPolicies": { "componentUpdatePolicy": { "action": "NOTIFY_COMPONENTS", "timeoutInSeconds": 30 }, "configurationValidationPolicy": { "timeoutInSeconds": 60 }, "failureHandlingPolicy": "ROLLBACK" }, "iotJobConfiguration": { "abortConfig": { "criteriaList": [ { "action": "CANCEL", "failureType": "ALL", "minNumberOfExecutedThings": 100, "thresholdPercentage": 5 } ] }, "jobExecutionsRolloutConfig": { "exponentialRate": { "baseRatePerMinute": 5, "incrementFactor": 2, "rateIncreaseCriteria": { "numberOfNotifiedThings": 10, "numberOfSucceededThings": 5 } }, "maximumPerMinute": 50 }, "timeoutConfig": { "inProgressTimeoutInMinutes": 5 } } }
  7. (Opcional) Adicione tags (tags) à implantação. Para obter mais informações, consulte Marque seus AWS IoT Greengrass Version 2 recursos.

  8. Execute o seguinte comando para criar uma estratégia de implantação do deployment.json.

    aws greengrassv2 create-deployment --cli-input-json file://deployment.json

    A resposta inclui um deploymentId que identifica essa implantação. Você pode usar o ID de implantação para verificar o status dela. Para obter mais informações, consulte Verificar o status da implantação.