Como criar um recurso de segredo (console) - AWS IoT Greengrass

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, AWS IoT Greengrass V1 não lançaremos atualizações que forneçam recursos, aprimoramentos, correções de erros ou patches de segurança. Os dispositivos que funcionam 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 adiciona novos recursos significativos e suporte para plataformas adicionais.

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á.

Como criar um recurso de segredo (console)

Esse atributo está disponível para o AWS IoT Greengrass Core v1.7 e posterior.

Este tutorial mostra como usar o AWS Management Console para adicionar um recurso de segredo a um grupo do Greengrass. Um recurso de segredo é uma referência a um segredo do AWS Secrets Manager. Para obter mais informações, consulte Implantar segredos no núcleo do AWS IoT Greengrass.

No dispositivo de núcleo AWS IoT Greengrass, os conectores e as funções do Lambda podem usar o recurso de segredo para se autenticar com serviços e aplicativos, sem codificação rígida de senhas, tokens ou outras credenciais.

Neste tutorial, você começa pela criação de um segredo no console do AWS Secrets Manager. Em seguida, no console do AWS IoT Greengrass, você adiciona um recurso de segredo a um grupo do Greengrass na página Recursos do grupo. Esse recurso de segredo faz referência ao segredo do Secrets Manager. Posteriormente, você anexará o recurso de segredode segredo a uma função do Lambda, o que permite à função obter o valor do segredo local.

nota

Como alternativa, o console permite que você crie um segredo e um recurso de segredo ao configurar um conector ou uma função do Lambda. Você pode fazer isso na página Configurar parâmetros do conector ou na página Recursos da função do Lambda.

Somente os conectores que contêm parâmetros para segredos podem acessar segredos. Para obter um tutorial que mostra como o conector de notificações Twilio usa um token de autenticação armazenamento localmente, consulte Conceitos básicos de conectores do Greengrass (console).

O tutorial contém as seguintes etapas de nível elevado:

O tutorial levará aproximadamente 20 minutos para ser concluído.

Pré-requisitos

Para concluir este tutorial, você precisa de:

  • Um grupo do Greengrass e um núcleo do Greengrass (versão 1.7 ou posterior). Para saber como criar um grupo e núcleo Greengrass, consulte Começando com AWS IoT Greengrass. O tutorial Conceitos básicos também inclui etapas para instalar o software do núcleo do AWS IoT Greengrass.

  • O AWS IoT Greengrass deve ser configurado para oferecer suporte a segredos locais. Para obter mais informações, consulte os Requisitos de segredos.

    nota

    Este requisito inclui permitir o acesso aos seus segredos do Secrets Manager. Se você estiver usando o perfil de serviço padrão do Greengrass, o Greengrass terá permissão para obter valores de segredos com nomes que começam com greengrass-.

  • Para obter os valores dos segredos locais, suas funções do Lambda definidas pelo usuário devem usar o SDK do AWS IoT GreengrassCore v1.3.0 ou posterior.

Etapa 1: Criar um segredo do Secrets Manager

Nesta etapa, você usa o console do AWS Secrets Manager para criar um segredo.

  1. Faça login no console do AWS Secrets Manager.

    nota

    Para obter mais informações sobre esse processo, consulte Etapa 1: Criar e armazenar seu segredo no AWS Secrets Manager no Guia do usuário do AWS Secrets Manager.

  2. Selecione Store a new secret (Armazenar um novo segredo).

  3. Em Escolher tipo de segredo, selecione Outro tipo de segredo.

  4. Em Specify the key/value pairs to be stored for this secret (Especificar os pares de chave/valor a serem armazenados para este segredo):

    • Em Key (Chave), insira test.

    • Em Value (Valor), insira abcdefghi.

  5. Mantenha aws/secretsmanager selecionado para a chave de criptografia e selecione Avançar.

    nota

    Você não será cobrado pelo AWS KMS se usar a chave gerenciada da AWS padrão que o Secrets Manager cria na sua conta.

  6. Em Secret name, digite greengrass-TestSecret e selecione Next.

    nota

    Por padrão, o perfil de serviço do Greengrass permite que AWS IoT Greengrass obtenha o valor de segredos com nomes que começam com greengrass-. Para obter mais informações, consulte os requisitos de segredos.

  7. A alternância não é necessária neste tutorial, portanto, selecione Desabilitar a alternância automática e, em seguida, Avançar.

  8. Na página Review (Revisar), revise as configurações e selecione Store (Armazenar).

    Em seguida, crie um recurso de segredo no seu grupo do Greengrass que faz referência ao segredo.

Etapa 2: Adicionar um recurso de segredo a um grupo do Greengrass

Nesta etapa, você configura um recurso de grupo que faz referência ao segredo do Secrets Manager.

  1. No painel de navegação do console de AWS IoT, em Gerenciar, expanda Dispositivos Greengrass e, em seguida selecione Grupos (V1).

  2. Selecione o grupo ao qual você deseja adicionar o recurso de segredo.

  3. Na página de configuração do grupo, selecione a guia Recursos e, em seguida, role para baixo até a seção Segredos. A seção Segredos exibe os recursos de segredos que pertencem ao grupo. Você pode adicionar, editar e remover recursos de segredos nessa seção.

    nota

    Como alternativa, o console permite que você crie um segredo e um recurso de segredo ao configurar um conector ou uma função do Lambda. Você pode fazer isso na página Configurar parâmetros do conector ou na página Recursos da função do Lambda.

  4. Selecione Adicionar na seção Segredos.

  5. Na página Adicionar um recurso de segredo, insira MyTestSecret em Nome do recurso.

  6. Em Segredo, selecione greengrass-TestSecret.

  7. Na seção ‭‬Selecionar rótulos (Opcional)‭‬, o rótulo de preparação AWSCURRENT representa a versão mais recente do segredo.‬‬‬‬‬‬. Esse rótulo é sempre incluído em um recurso de segredo.

    nota

    Somente o rótulo AWSCURRENT é necessário neste tutorial. Você também pode incluir rótulos que a função do Lambda ou o connector exige.

  8. Selecione Adicionar recurso.

Etapa 3: crie um pacote de implantação para a função do Lambda

Para criar uma função do Lambda, você deve, primeiro, criar um pacote de implantação da função do Lambda que contenha o código da função e as dependências. As funções do Lambda do Greengrass exigem o AWS IoT Greengrass SDK do Core para tarefas como comunicação com mensagens MQTT no ambiente de núcleo e acesso a segredos locais. Este tutorial cria uma função Python, então você usa a versão Python do SDK no pacote de implantação.

nota

Para obter os valores dos segredos locais, suas funções do Lambda definidas pelo usuário devem usar o SDK do AWS IoT Greengrass Core v1.3.0 ou posterior.

  1. Na página de downloads do SDK do AWS IoT Greengrass Core, baixe o AWS IoT Greengrass SDK do Core para Python em seu computador.

  2. Descompacte o pacote obtido por download para obter o SDK. O SDK é a pasta do greengrasssdk.

  3. Salve a seguinte função do código Python em um arquivo local denominado secret_test.py.

    import greengrasssdk secrets_client = greengrasssdk.client("secretsmanager") iot_client = greengrasssdk.client("iot-data") secret_name = "greengrass-TestSecret" send_topic = "secrets/output" def function_handler(event, context): """ Gets a secret and publishes a message to indicate whether the secret was successfully retrieved. """ response = secrets_client.get_secret_value(SecretId=secret_name) secret_value = response.get("SecretString") message = ( f"Failed to retrieve secret {secret_name}." if secret_value is None else f"Successfully retrieved secret {secret_name}." ) iot_client.publish(topic=send_topic, payload=message) print("Published: " + message)

    A função get_secret_value oferece suporte ao nome ou ARN do segredo do Secrets Manager para o valor SecretId. Esse exemplo usa o nome do segredo. Para este segredo de exemplo, o AWS IoT Greengrass retorna o segredo do par de chave-valor: {"test":"abcdefghi"}.

    Importante

    Certifique-se de que suas funções do Lambda definidas pelo usuário tratem os segredos com segurança e não registrem nenhum dado confidencial armazenado no segredo. Para obter mais informações, consulte Mitigue os riscos de registrar logs e depurar sua função do Lambda no Guia do usuário do AWS Secrets Manager. Embora essa documentação se refira especificamente às funções de alternância, a recomendação também se aplica às funções do Lambda do Greengrass.

  4. Comprima os seguintes itens em um arquivo denominado secret_test_python.zip. Quando você criar o arquivo ZIP, inclua apenas o código e suas dependências, e não a pasta que contém os arquivos.

    • secret_test.py. Lógica do aplicativo.

    • greengrasssdk. Biblioteca necessária para todas as funções Python do Lambda do Greengrass.

    Esse é o pacote de implantação de sua função do Lambda.

Etapa 4: Criar uma função do Lambda

Nesta etapa, você pode usar o console do AWS Lambda para criar uma função do Lambda e, em seguida, configurá-lo para usar o pacote de implantação. Depois, publique uma versão da função e crie um alias.

  1. Primeiro, crie a função do Lambda.

    1. No AWS Management Console, selecione Services (Serviços) e abra o console do AWS Lambda.

    2. Selecione Criar função e Criar desde o início.

    3. Na seção Basic information (Informações básicas), use os seguintes valores:

      • Em Function name (Nome da função), insira SecretTest.

      • Em Runtime (Tempo de execução), selecione Python 3.7.

      • Em Permissões, mantenha a configuração padrão. Isso cria uma função de execução que concede permissões básicas do Lambda. Essa função não é usada pelo AWS IoT Greengrass.

    4. Na parte inferior da página, selecione Create function.

  2. Em seguida, registre o manipulador e faça upload do seu pacote de implantação da função do Lambda.

    1. Na guia Código, em Fonte do código, selecione Fazer upload a partir de. No menu suspenso, selecione o arquivo .zip.

      O menu suspenso Fazer upload a partir de com o arquivo .zip destacado.
    2. Selecione Upload e, em seguida, selecione seu pacote de implantação secret_test_python.zip. Selecione Salvar.

    3. Na guia Código da função, em Configurações de runtime, selecione Editar e insira os valores a seguir.

      • Em Runtime (Tempo de execução), selecione Python 3.7.

      • Em Handler (Manipulador), insira secret_test.function_handler.

    4. Selecione Salvar.

      nota

      O botão Testar no console do AWS Lambda não funciona com essa função. O AWS IoT GreengrassSDK do Core não contém módulos necessários para executar suas funções do Lambda do Greengrass de forma independente no console do AWS Lambda. Esses módulos (por exemplo, greengrass_common) são fornecidos às funções depois de serem implantados no núcleo do Greengrass.

  3. Agora, publique a primeira versão da sua função do Lambda e crie um alias para a versão.

    nota

    Os grupos do Greengrass podem fazer referência a uma função do Lambda por alias (recomendado) ou por versão. Usar um alias facilita o gerenciamento de atualizações de código porque você não precisa alterar a tabela de assinaturas nem a definição do grupo ao atualizar o código da função. Em vez disso, você pode simplesmente apontar o alias para a nova versão da função.

    1. No menu Actions, selecione Publish new version.

    2. Em Version description (Descrição da versão), insira First version e, em seguida, selecione Publish (Publicar).

    3. Na página de configuração SecretTest: 1, no menu Actions (Ações), selecione Create alias (Criar alias).

    4. Na página Create a new alias, use os seguintes valores:

      • Em Name (Nome), insira GG_SecretTest.

      • Em Version, selecione 1.

      nota

      O AWS IoT Greengrass não oferece suporte a alias do Lambda para as versões $LATEST.

    5. Selecione Create (Criar).

Agora, você está pronto para adicionar a função do Lambda ao seu grupo do Greengrass e anexar o recurso de segredo.

Etapa 5: adicionar a função do Lambda ao grupo do Greengrass

Nesta etapa, você adiciona a função do Lambda ao grupo do Greengrass no console do AWS IoT.

  1. Na página de configuração do grupo, selecione a guia Funções do Lambda.

  2. Na seção Minhas funções do Lambda, selecione Adicionar.

  3. Para a Função do Lambda, selecione SecretTest.

  4. Para a Versão da função do Lambda, selecione o alias para a versão que você publicou.

Em seguida, configure o ciclo de vida da função do Lambda.

  1. Na seção Configuração da função do Lambda, faça as atualizações a seguir.

    nota

    Recomendamos que você execute sua função do Lambda sem conteinerização, a menos que seu caso de negócios faça essa exigência. Isso ajuda a habilitar o acesso à GPU e à câmera do seu dispositivo sem configurar os recursos do dispositivo. Se você executar sem conteinerização, também deverá conceder acesso root às suas funções do Lambda do AWS IoT Greengrass.

    1. Para executar sem conteinerização:

    2. Em vez disso, para executar no modo conteinerizado:

      nota

      Não recomendamos a execução no modo conteinerizado, a menos que seu caso de negócios faça essa exigência.

      • Para Usuário e grupo do sistema, selecione Usar padrão de grupo.

      • Para a Conteinerização da função do Lambda, selecione Usar grupo padrão.

      • Em Memory limit (Limite de memória), insira 1024 MB.

      • Em Timeout (Tempo limite), insira 10 seconds.

      • Para Fixado, selecione Verdadeiro.

        Para obter mais informações, consulte Configuração do ciclo de vida das funções do Lambda do Greengrass.

      • Em Parâmetros adicionais, para Acesso de leitura ao diretório /sys, selecione Habilitado.

  2. Selecione Adicionar função do Lambda.

Em seguida, associe o recurso de segredo à função.

Etapa 6: anexar o recurso de segredo à função do Lambda

Nesta etapa, você associa o recurso de segredo à função do função do Lambda em seu grupo do Greengrass. Isso associa o recurso à função, o que permite à função obter o valor do segredo local.

  1. Na página de configuração do grupo, selecione a guia Funções do Lambda.

  2. Selecione a função SecretTest.

  3. Na página de detalhes da função, selecione Recursos.

  4. Role até a seção Segredos e selecione Associar.

  5. Selecione MyTestSecret e, em seguida, selecione Associar.

Etapa 7: Adicionar assinaturas ao grupo do Greengrass

Nesta etapa, você adiciona assinaturas que permitem que o AWS IoT e a função do Lambda troquem mensagens. Uma assinatura permite que o AWS IoT invoque a função e a outra permite que a função envie dados de saída para o AWS IoT.

  1. Na página de configuração do grupo, selecione a guia Assinaturas e, em seguida, Adicionar assinatura.

  2. Crie uma assinatura que permita que a AWS IoT publique mensagens na função.

    Na página de configuração do grupo, selecione a guia Assinaturas e, em seguida, Adicionar assinatura.

  3. Na página Criar uma assinatura, configure a origem e o destino, da seguinte forma:

    1. Em Tipo de origem, selecione Função do Lambda e, em seguida, selecione IoT Cloud.

    2. Em Tipo de destino, selecione Serviço e, em seguida, selecione SecretTest.

    3. Em Filtro de tópicos, insira secrets/input e, em seguida, selecione Criar assinatura.

  4. Adicione uma segunda assinatura. Selecione a guia Assinaturas, selecione Adicionar assinatura e configure a origem e o destino, da seguinte forma:

    1. Em Tipo de origem, selecione Serviços e, em seguida, selecione SecretTest.

    2. Em Tipo de destino, selecione Função do Lambda e, em seguida, selecione IoT Cloud.

    3. Em Filtro de tópicos, insira secrets/output e, em seguida, selecione Criar assinatura.

Etapa 8: Implantar o grupo do Greengrass

Implante o grupo no dispositivo do núcleo. Durante a implantação, o AWS IoT Greengrass obtém o valor do segredo do Secrets Manager e cria uma cópia criptografada local no núcleo.

  1. Verifique se o núcleo AWS IoT Greengrass está em execução. Execute os seguintes comandos no seu terminal do Raspberry Pi, conforme necessário.

    1. Para verificar se o daemon está em execução:

      ps aux | grep -E 'greengrass.*daemon'

      Se a saída contém uma entrada root para /greengrass/ggc/packages/ggc-version/bin/daemon, o daemon está em execução.

      nota

      A versão no caminho depende da versão do software do AWS IoT Greengrass Core que foi instalada no seu dispositivo de núcleo.

    2. Para iniciar o daemon:

      cd /greengrass/ggc/core/ sudo ./greengrassd start
  2. Na página de configuração do grupo, selecione Implantar.

    1. Na guia Funções do Lambda, na seção Funções do Lambda do sistema, selecione Detector de IP e selecione Editar.

    2. Na caixa de diálogo Editar configurações do detector IP, selecione Detectar e substituir automaticamente os endpoints do corretor MQTT.

    3. Selecione Salvar.

      Isso permite que os dispositivos adquiram automaticamente as informações de conectividade para o núcleo, como endereço IP, DNS e o número da porta. A detecção automática é recomendada, mas o AWS IoT Greengrass também oferece suporte a endpoints especificados manualmente. Você só é solicitado pelo método de descoberta na primeira vez em que o grupo for implantado.

      nota

      Se solicitado, conceda permissão para criar o perfil de serviço do Greengrass e associá-lo à sua Conta da AWS na Região da AWS atual. Essa função permite que AWS IoT Greengrass acessem seus recursos nos serviços do AWS.

      A página Deployments mostra a data e hora, ID de versão e status da implantação. Quando concluída, o status exibido para a implantação deve ser Concluída.

      Para obter ajuda sobre a solução de problemas, consulte Solução de problemas de AWS IoT Greengrass.

Testar a função do Lambda

  1. Na página inicial do console do AWS IoT, selecione Testar.

  2. Em Inscrever-se no tópico, use os seguintes valores e, em seguida, selecione Inscrever-se.

    Propriedade

    Valor

    Tópico de assinatura

    segredos/saída

    Exibição da carga útil do MQTT

    Exibir cargas úteis como strings

  3. Para Publicar no tópico, use os valores a seguir e, em seguida selecione Publicar para invocar a função.

    Propriedade

    Valor

    Tópico

    segredos/entrada

    Message

    Mantenha a mensagem padrão. A publicação de uma mensagem invoca a função do Lambda, mas a função neste tutorial não processa o corpo da mensagem.

    Se for bem-sucedida, a função publicará uma mensagem de "Êxito".

Consulte também