Configurar o provisionamento de frota de AWS IoT para os dispositivos principais do Greengrass - 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á.

Configurar o provisionamento de frota de AWS IoT para os dispositivos principais do Greengrass

Para instalar o software AWS IoT Greengrass Core com provisionamento de frota, é preciso configurar antes os seguintes recursos na Conta da AWS. Esses recursos permitem que os dispositivos se registrem com AWS IoT e operem como dispositivos principais do Greengrass. Siga as etapas desta seção para criar e configurar esses recursos na Conta da AWS.

  • Um perfil do IAM de troca de tokens, que os dispositivos principais usam para autorizar chamadas para serviços da AWS.

  • O alias de perfil da AWS IoT que aponta para o perfil de troca de tokens.

  • (Opcional) Uma política de AWS IoT que os dispositivos principais usam para autorizar chamadas para os serviços da AWS IoT e do AWS IoT Greengrass. Essa política de AWS IoT precisa permitir iot:AssumeRoleWithCertificate para o alias de perfil da AWS IoT que aponta para o perfil de troca de tokens.

    É possível usar uma única política de AWS IoT para todos os dispositivos principais da frota ou configurar seu modelo de provisionamento de frota para criar uma política de AWS IoT para cada dispositivo principal.

  • Um modelo de provisionamento de frota da AWS IoT. Esse modelo precisa especificar o seguinte:

    • Um recurso de itens da AWS IoT. É possível especificar uma lista de grupos de objetos existentes para implantar componentes em cada dispositivo quando on-line.

    • Um recurso da política da AWS IoT. Esse recurso pode definir uma das propriedades a seguir:

      • O nome de uma política de AWS IoT existente. Se você escolher essa opção, os dispositivos principais criados a partir desse modelo usarão a mesma política de AWS IoT e será possível gerenciar as permissões como uma frota.

      • O documento da política de AWS IoT. Se você escolher essa opção, cada dispositivo principal criado a partir desse modelo usará uma política de AWS IoT exclusiva e será possível gerenciar permissões para cada dispositivo principal individual.

    • Um recurso de certificado da AWS IoT. Esse recurso de certificado precisa usar o parâmetro AWS::IoT::Certificate::Id para anexar o certificado ao dispositivo principal. Para mais informações, consulte Provisionamento just-in-time no Guia do desenvolvedor do AWS IoT.

  • Um certificado de reivindicação de provisionamento de AWS IoT e uma chave privada para o modelo de provisionamento de frota. É possível incorporar esse certificado e a chave privada nos dispositivos durante a fabricação, para que eles possam se registrar e se provisionar quando estiverem on-line.

    Importante

    As chaves privadas de reivindicação de provisionamento devem ser protegidas o tempo todo, inclusive nos dispositivos principais do Greengrass. Recomendamos que você use as métricas e os logs do Amazon CloudWatch para monitorar indicações de uso indevido, como o uso não autorizado do certificado de reivindicação para provisionar dispositivos. Se você detectar uso indevido, desative o certificado de reivindicação de provisionamento para que ele não possa ser usado para o provisionamento de dispositivos. Para obter mais informações, consulte Monitorar AWS IoT no Guia do Desenvolvedor do AWS IoT Core.

    Para ajudar a gerenciar melhor o número de dispositivos e quais se registram na Conta da AWS, é possível especificar um hook de pré-provisionamento ao criar um modelo de provisionamento de frota. Um hook de pré-provisionamento é uma função AWS Lambda que valida os parâmetros do modelo que os dispositivos fornecem durante o registro. Por exemplo, você pode criar um hook de pré-provisionamento que compara a ID do dispositivo a um banco de dados para verificar se ele tem permissão para provisionar. Para mais informações, consulte Hooks de pré-provisionamento no Guia do desenvolvedor da AWS IoT Core.

  • Uma política de AWS IoT que você anexa ao certificado de reivindicação de provisionamento para permitir que os dispositivos se registrem e usem o modelo de provisionamento de frota.

Criar um perfil de troca de token

Os dispositivos principais do Greengrass usam um perfil de serviço do IAM, chamado perfil de troca de tokens, para autorizar chamadas para os serviços da AWS. O dispositivo usa o provedor de credenciais da AWS IoT para obter credenciais temporárias da AWS para esse perfil, o que permite que o dispositivo interaja com a AWS IoT, envie registros para o Amazon CloudWatch Logs e baixe artefatos de componentes personalizados do Amazon S3. Para ter mais informações, consulte Autorize os dispositivos principais a interagir com os serviços da AWS.

Use um alias de perfil da AWS IoT para configurar o perfil de troca de tokens para os dispositivos principais do Greengrass. Os aliases de perfil permitem que você altere o perfil de troca de tokens de um dispositivo, mas mantenha a mesma configuração do dispositivo. Para mais informações, consulte Autorizar de chamadas diretas para serviços da AWS no Guia do desenvolvedor do AWS IoT Core.

Nesta seção, você cria um perfil do IAM de troca de tokens e um alias de perfil de AWS IoT que aponta para o perfil. Se você já configurou um dispositivo principal do Greengrass, pode usar o perfil de troca de tokens e o alias de perfil em vez de criar novos.

Criar um perfil do IAM de troca de token
  1. Crie um perfil do IAM que seu dispositivo possa usar como um perfil de troca de tokens. Faça o seguinte:

    1. Crie um arquivo que contenha o documento de política de confiança exigido pelo perfil de troca de token.

      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 device-role-trust-policy.json

      Copie o seguinte JSON no arquivo.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Crie o perfil de troca de token com o documento de política de confiança.

      • Substitua GreengrassV2TokenExchangeRole pelo nome do perfil do IAM a ser criado.

      aws iam create-role --role-name GreengrassV2TokenExchangeRole --assume-role-policy-document file://device-role-trust-policy.json

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

      { "Role": { "Path": "/", "RoleName": "GreengrassV2TokenExchangeRole", "RoleId": "AROAZ2YMUHYHK5OKM77FB", "Arn": "arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole", "CreateDate": "2021-02-06T00:13:29+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } }
    3. Crie um arquivo que contenha o documento de política de acesso exigido pelo perfil de troca de token.

      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 device-role-access-policy.json

      Copie o seguinte JSON no arquivo.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "s3:GetBucketLocation" ], "Resource": "*" } ] }
      nota

      Essa política de acesso não permite acesso a artefatos de componentes nos buckets do S3. Para implantar componentes personalizados que definem artefatos no Amazon S3, é preciso adicionar permissões ao perfil para permitir que seu dispositivo principal recupere artefatos de componentes. Para ter mais informações, consulte Permitir acesso aos buckets do S3 para artefatos de componentes.

      Se você ainda não tem um bucket do S3 para artefatos de componentes, é possível adicionar essas permissões depois de criar um bucket.

    4. Crie uma política do IAM a partir do documento de política.

      • Substitua GreengrassV2TokenExchangeRole pelo nome da política do IAM a ser criada.

      aws iam create-policy --policy-name GreengrassV2TokenExchangeRoleAccess --policy-document file://device-role-access-policy.json

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

      { "Policy": { "PolicyName": "GreengrassV2TokenExchangeRoleAccess", "PolicyId": "ANPAZ2YMUHYHACI7C5Z66", "Arn": "arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess", "Path": "/", "DefaultVersionId": "v1", "AttachmentCount": 0, "PermissionsBoundaryUsageCount": 0, "IsAttachable": true, "CreateDate": "2021-02-06T00:37:17+00:00", "UpdateDate": "2021-02-06T00:37:17+00:00" } }
    5. Anexe a política do IAM ao perfil de troca de token.

      • Substitua GreengrassV2TokenExchangeRole pelo nome do perfil do IAM.

      • Substitua o ARN da política pelo ARN da política do IAM que você criou na etapa anterior.

      aws iam attach-role-policy --role-name GreengrassV2TokenExchangeRole --policy-arn arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess

      O comando não terá nenhuma saída se a solicitação for bem-sucedida.

  2. O alias de perfil da AWS IoT que aponta para o perfil de troca de tokens.

    • Substitua GreengrassCoreTokenExchangeRoleAlias pelo nome do alias de perfil a ser criado.

    • Substitua o ARN do perfil pelo ARN do perfil do IAM que você criou na etapa anterior.

    aws iot create-role-alias --role-alias GreengrassCoreTokenExchangeRoleAlias --role-arn arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole

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

    { "roleAlias": "GreengrassCoreTokenExchangeRoleAlias", "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias" }
    nota

    Para criar um alias do perfil, é preciso ter permissão para passar o perfil do IAM de troca de token para a AWS IoT. Se você receber uma mensagem de erro ao tentar criar um alias de perfil, verifique se o usuário da AWS tem essa permissão. Para mais informações, consulte Conceder permissões ao usuário para passar um perfil a um serviço da AWS no Guia do usuário AWS Identity and Access Management.

Criar uma política do AWS IoT

Depois de registrar um dispositivo como um item da AWS IoT, ele pode usar um certificado digital para se autenticar com a AWS. Esse certificado inclui uma ou mais políticas de AWS IoT que definem as permissões que um dispositivo pode usar com o certificado. Essas políticas permitem que o dispositivo se comunique com o AWS IoT e o AWS IoT Greengrass.

Com o provisionamento de frota da AWS IoT, os dispositivos se conectam à AWS IoT para criar e baixar um certificado de dispositivo. No modelo de provisionamento de frota que você cria na próxima seção, é possível especificar se a AWS IoT anexa a mesma política de AWS IoT aos certificados de todos os dispositivos ou cria uma nova política para cada dispositivo.

Nesta seção, você cria uma política de AWS IoT que a AWS IoT anexa aos certificados de todos os dispositivos. Com essa abordagem, é possível gerenciar as permissões para todos os dispositivos como uma frota. Se preferir criar uma nova política de AWS IoT para cada dispositivo, pule esta seção e consulte a política nela ao definir seu modelo de frota.

Para criar uma política do AWS IoT
  • Crie uma política de AWS IoT que defina as permissões de AWS IoT para sua frota de dispositivos principais do Greengrass. A política a seguir permite acesso a todos os tópicos MQTT e operações do Greengrass, para que seu dispositivo funcione com aplicativos personalizados e futuras alterações que exijam novas operações do Greengrass. Essa política também permite iot:AssumeRoleWithCertificate, que possibilita que seus dispositivos usem o perfil de troca de tokens que você criou na seção anterior. É possível restringir essa política com base em seu caso de uso. Para ter mais informações, consulte Política mínima de AWS IoT para dispositivos principais do AWS IoT Greengrass V2.

    Faça o seguinte:

    1. Crie um arquivo que contenha o documento de política de AWS IoT exigido pelos dispositivos principais do Greengrass.

      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 greengrass-v2-iot-policy.json

      Copie o seguinte JSON no arquivo.

      • Substitua o recurso iot:AssumeRoleWithCertificate pelo o ARN do alias de perfil AWS IoT que você criou na seção anterior.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Receive", "iot:Connect", "greengrass:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": "iot:AssumeRoleWithCertificate", "Resource": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias" } ] }
    2. Crie uma política de AWS IoT a partir do documento de política.

      • Substitua GreengrassV2IoTThingPolicy pelo nome da política do IAM a ser criada.

      aws iot create-policy --policy-name GreengrassV2IoTThingPolicy --policy-document file://greengrass-v2-iot-policy.json

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

      { "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Action\": [ \"iot:Publish\", \"iot:Subscribe\", \"iot:Receive\", \"iot:Connect\", \"greengrass:*\" ], \"Resource\": [ \"*\" ] }, { \"Effect\": \"Allow\", \"Action\": \"iot:AssumeRoleWithCertificate\", \"Resource\": \"arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias\" } ] }", "policyVersionId": "1" }

Criar um modelo de provisionamento de frota

Os modelos de provisionamento de frota da AWS IoT definem como provisionar itens, políticas e certificados da AWS IoT. Para provisionar os dispositivos principais do Greengrass com o plug-in de provisionamento de frota, é preciso criar um modelo que especifique o seguinte:

  • Um recurso de itens da AWS IoT. É possível especificar uma lista de grupos de objetos existentes para implantar componentes em cada dispositivo quando on-line.

  • Um recurso da política da AWS IoT. Esse recurso pode definir uma das propriedades a seguir:

    • O nome de uma política de AWS IoT existente. Se você escolher essa opção, os dispositivos principais criados a partir desse modelo usarão a mesma política de AWS IoT e será possível gerenciar as permissões como uma frota.

    • O documento da política de AWS IoT. Se você escolher essa opção, cada dispositivo principal criado a partir desse modelo usará uma política de AWS IoT exclusiva e será possível gerenciar permissões para cada dispositivo principal individual.

  • Um recurso de certificado da AWS IoT. Esse recurso de certificado precisa usar o parâmetro AWS::IoT::Certificate::Id para anexar o certificado ao dispositivo principal. Para mais informações, consulte Provisionamento just-in-time no Guia do desenvolvedor do AWS IoT.

No modelo, é possível especificar a adição do objeto da AWS IoT a uma lista de grupos de objetos existentes. Quando o dispositivo principal se conecta ao AWS IoT Greengrass pela primeira vez, ele recebe implantações do Greengrass para cada grupo do qual é membro. É possível usar grupos de objetos para implantar o software mais recente em cada dispositivo assim que ele estiver online. Para ter mais informações, consulte Implantar componentes AWS IoT Greengrass em dispositivos.

O serviço de AWS IoT exige permissões para criar e atualizar recursos da AWS IoT na sua Conta da AWS ao provisionar dispositivos. Para dar acesso ao serviço de AWS IoT, você cria um perfil do IAM e o fornece ao criar o modelo. A AWS IoT fornece uma política gerenciada, AWSIotThingsRegistration, que permite acesso a todas as permissões que a AWS IoT pode usar ao provisionar dispositivos. É possível usar essa política gerenciada ou criar uma política personalizada que defina as permissões na política gerenciada para seu caso de uso.

Nesta seção, você cria um papel do IAM que permite a AWS IoT provisionar recursos para dispositivos e cria um modelo de provisionamento de frota que usa esse perfil do IAM.

Para criar um modelo de provisionamento de frota
  1. Crie um perfil do IAM que a AWS IoT possa assumir o provisionamento de recursos na Conta da AWS. Faça o seguinte:

    1. Crie um arquivo que contenha o documento de política de confiança que permite a AWS IoT assumir o perfil.

      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 aws-iot-trust-policy.json

      Copie o seguinte JSON no arquivo.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Crie um perfil do IAM com um documento de política de confiança.

      • Substitua GreengrassFleetProvisioningRole pelo nome do perfil do IAM a ser criado.

      aws iam create-role --role-name GreengrassFleetProvisioningRole --assume-role-policy-document file://aws-iot-trust-policy.json

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

      { "Role": { "Path": "/", "RoleName": "GreengrassFleetProvisioningRole", "RoleId": "AROAZ2YMUHYHK5OKM77FB", "Arn": "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole", "CreateDate": "2021-07-26T00:15:12+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } }
    3. Revise a política AWSIoTThingsRegistration, que permite acesso a todas as permissões que a AWS IoT pode usar ao provisionar dispositivos. Você pode usar essa política gerenciada ou criar uma política personalizada que defina permissões restritas para o seu caso de uso. Se você optar por criar uma política personalizada, faça isso agora.

    4. Anexe a política do IAM ao perfil de provisionamento de frota.

      • Substitua GreengrassFleetProvisioningRole pelo nome do perfil do IAM.

      • Se você criou uma política personalizada na etapa anterior, substitua o ARN da política pelo ARN da política do IAM a ser usada.

      aws iam attach-role-policy --role-name GreengrassFleetProvisioningRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSIoTThingsRegistration

      O comando não terá nenhuma saída se a solicitação for bem-sucedida.

  2. (Opcional) Crie um hook de pré-provisionamento, que é uma função AWS Lambda que valida os parâmetros do modelo que os dispositivos fornecem durante o registro. É possível usar um hook de pré-provisionamento para ter mais controle sobre quais e quantos dispositivos estão integrados na sua Conta da AWS. Para mais informações, consulte Hooks de pré-provisionamento no Guia do desenvolvedor da AWS IoT Core.

  3. Crie um modelo de provisionamento de frota. Faça o seguinte:

    1. Crie um arquivo para conter o documento modelo de provisionamento.

      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 greengrass-fleet-provisioning-template.json

      Escreva o documento modelo de provisionamento. É possível começar com o seguinte exemplo de modelo de provisionamento, que especifica a criação de um objeto de AWS IoT com as seguintes propriedades:

      • O nome do objeto é o valor que você especifica no parâmetro do modelo ThingName.

      • O objeto é um membro do grupo de objetos que você especifica no parâmetro do modelo ThingGroupName. O grupo de objetos deve existir na Conta da AWS.

      • O certificado de objeto tem a política de AWS IoT nomeada GreengrassV2IoTThingPolicy anexada a ele.

      Para mais informações, consulte Provisionamento de modelos no Guia do desenvolvedor do AWS IoT Core.

      { "Parameters": { "ThingName": { "Type": "String" }, "ThingGroupName": { "Type": "String" }, "AWS::IoT::Certificate::Id": { "Type": "String" } }, "Resources": { "MyThing": { "OverrideSettings": { "AttributePayload": "REPLACE", "ThingGroups": "REPLACE", "ThingTypeName": "REPLACE" }, "Properties": { "AttributePayload": {}, "ThingGroups": [ { "Ref": "ThingGroupName" } ], "ThingName": { "Ref": "ThingName" } }, "Type": "AWS::IoT::Thing" }, "MyPolicy": { "Properties": { "PolicyName": "GreengrassV2IoTThingPolicy" }, "Type": "AWS::IoT::Policy" }, "MyCertificate": { "Properties": { "CertificateId": { "Ref": "AWS::IoT::Certificate::Id" }, "Status": "Active" }, "Type": "AWS::IoT::Certificate" } } }
      nota

      MyThing, MyPolicy e MyCertificate são nomes arbitrários que identificam cada especificação de recurso no modelo de provisionamento de frota. A AWS IoT não usa esses nomes nos recursos que ele cria a partir do modelo. Você pode usar esses nomes ou substituí-los por valores que ajudam a identificar cada recurso no modelo.

    2. Crie o modelo de provisionamento de frota a partir do documento do modelo de provisionamento.

      • Substitua GreengrassFleetProvisioningTemplate pelo nome do modelo a ser criado.

      • Substitua descrição do modelo por uma descrição para o modelo.

      • Substitua o ARN do perfil de provisionamento pelo ARN do perfil que você criou anteriormente.

      Linux or Unix
      aws iot create-provisioning-template \ --template-name GreengrassFleetProvisioningTemplate \ --description "A provisioning template for Greengrass core devices." \ --provisioning-role-arn "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole" \ --template-body file://greengrass-fleet-provisioning-template.json \ --enabled
      Windows Command Prompt (CMD)
      aws iot create-provisioning-template ^ --template-name GreengrassFleetProvisioningTemplate ^ --description "A provisioning template for Greengrass core devices." ^ --provisioning-role-arn "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole" ^ --template-body file://greengrass-fleet-provisioning-template.json ^ --enabled
      PowerShell
      aws iot create-provisioning-template ` --template-name GreengrassFleetProvisioningTemplate ` --description "A provisioning template for Greengrass core devices." ` --provisioning-role-arn "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole" ` --template-body file://greengrass-fleet-provisioning-template.json ` --enabled
      nota

      Se você criou um hook de pré-provisionamento, especifique o ARN da função do Lambda do hook de pré-provisionamento com o argumento --pre-provisioning-hook.

      --pre-provisioning-hook targetArn=arn:aws:lambda:us-west-2:123456789012:function:GreengrassPreProvisioningHook

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

      { "templateArn": "arn:aws:iot:us-west-2:123456789012:provisioningtemplate/GreengrassFleetProvisioningTemplate", "templateName": "GreengrassFleetProvisioningTemplate", "defaultVersionId": 1 }

Crie um certificado de reivindicação de provisionamento e uma chave privada

Os certificados de reivindicação são certificados X.509 que permitem que os dispositivos se registrem como objetos da AWS IoT e recuperem um certificado de dispositivo X.509 exclusivo para uso em operações regulares. Depois de criar um certificado de reivindicação, você anexa uma política de AWS IoT que permite que os dispositivos o usem para criar certificados de dispositivo exclusivos e provisionar com um modelo de provisionamento de frota. Os dispositivos com o certificado de reivindicação podem provisionar usando somente o modelo de provisionamento permitido na política de AWS IoT.

Nesta seção, você cria o certificado de reivindicação e o configura para os dispositivos usarem com o modelo de provisionamento de frota criado na seção anterior.

Importante

As chaves privadas de solicitação de provisionamento devem ser protegidas o tempo todo, inclusive nos dispositivos principais do Greengrass. Recomendamos que você use as métricas e os logs do Amazon CloudWatch para monitorar indicações de uso indevido, como o uso não autorizado do certificado de reivindicação para provisionar dispositivos. Se você detectar uso indevido, desative o certificado de reivindicação de provisionamento para que ele não possa ser usado para o provisionamento de dispositivos. Para obter mais informações, consulte Monitorar AWS IoT no Guia do Desenvolvedor do AWS IoT Core.

Para ajudar a gerenciar melhor o número de dispositivos e quais se registram na Conta da AWS, é possível especificar um hook de pré-provisionamento ao criar um modelo de provisionamento de frota. Um hook de pré-provisionamento é uma função AWS Lambda que valida os parâmetros do modelo que os dispositivos fornecem durante o registro. Por exemplo, você pode criar um hook de pré-provisionamento que compara a ID do dispositivo a um banco de dados para verificar se ele tem permissão para provisionar. Para mais informações, consulte Hooks de pré-provisionamento no Guia do desenvolvedor da AWS IoT Core.

Crie um certificado de reivindicação de provisionamento e uma chave privada
  1. Crie uma pasta na qual você faz download do certificado de reivindicação e da chave privada.

    mkdir claim-certs
  2. Crie e salve um certificado e uma chave privada para usar no provisionamento. A AWS IoT fornece certificados de cliente assinados pela autoridade de certificação (CA) da Amazon Root.

    Linux or Unix
    aws iot create-keys-and-certificate \ --certificate-pem-outfile "claim-certs/claim.pem.crt" \ --public-key-outfile "claim-certs/claim.public.pem.key" \ --private-key-outfile "claim-certs/claim.private.pem.key" \ --set-as-active
    Windows Command Prompt (CMD)
    aws iot create-keys-and-certificate ^ --certificate-pem-outfile "claim-certs/claim.pem.crt" ^ --public-key-outfile "claim-certs/claim.public.pem.key" ^ --private-key-outfile "claim-certs/claim.private.pem.key" ^ --set-as-active
    PowerShell
    aws iot create-keys-and-certificate ` --certificate-pem-outfile "claim-certs/claim.pem.crt" ` --public-key-outfile "claim-certs/claim.public.pem.key" ` --private-key-outfile "claim-certs/claim.private.pem.key" ` --set-as-active

    A resposta contém informações sobre o certificado, se a solicitação for bem-sucedida. Salve o ARN do certificado para usar posteriormente.

  3. Crie e anexe uma política de AWS IoT que permita que os dispositivos usem o certificado para criar certificados de dispositivo exclusivos e provisioná-los com o modelo de provisionamento de frota. A política a seguir permite acesso à API do MQTT de provisionamento de dispositivo. Para mais informações, consulte API MQTT de provisionamento de dispositivos no Guia do desenvolvedor do AWS IoT Core.

    Faça o seguinte:

    1. Crie um arquivo que contenha o documento de política de AWS IoT exigido pelos dispositivos principais do Greengrass.

      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 greengrass-provisioning-claim-iot-policy.json

      Copie o seguinte JSON no arquivo.

      • Substitua cada instância da região pela Região da AWS em que você configurou o provisionamento da frota.

      • Substitua cada instância de account-id pelo ID da Conta da AWS.

      • Substitua cada instância do GreengrassFleetProvisioningTemplate pelo nome do modelo de provisionamento da frota que você criou na seção anterior.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Connect", "Resource": "*" }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/certificates/create/*", "arn:aws:iot:region:account-id:topic/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*" ] }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": [ "arn:aws:iot:region:account-id:topicfilter/$aws/certificates/create/*", "arn:aws:iot:region:account-id:topicfilter/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*" ] } ] }
    2. Crie uma política de AWS IoT a partir do documento de política.

      • Substitua GreengrassProvisioningClaimPolicy pelo nome da política a ser criada.

      aws iot create-policy --policy-name GreengrassProvisioningClaimPolicy --policy-document file://greengrass-provisioning-claim-iot-policy.json

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

      { "policyName": "GreengrassProvisioningClaimPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassProvisioningClaimPolicy", "policyDocument": "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Action\": \"iot:Connect\", \"Resource\": \"*\" }, { \"Effect\": \"Allow\", \"Action\": [ \"iot:Publish\", \"iot:Receive\" ], \"Resource\": [ \"arn:aws:iot:region:account-id:topic/$aws/certificates/create/*\", \"arn:aws:iot:region:account-id:topic/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*\" ] }, { \"Effect\": \"Allow\", \"Action\": \"iot:Subscribe\", \"Resource\": [ \"arn:aws:iot:region:account-id:topicfilter/$aws/certificates/create/*\", \"arn:aws:iot:region:account-id:topicfilter/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*\" ] } ] }", "policyVersionId": "1" }
  4. Anexe a política de AWS IoT ao certificado de reivindicação de provisionamento.

    • Substitua GreengrassProvisioningClaimPolicy pelo nome da política a ser anexada.

    • Substitua o ARN de destino pelo ARN do certificado de reivindicação de provisionamento.

    aws iot attach-policy --policy-name GreengrassProvisioningClaimPolicy --target arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4

    O comando não terá nenhuma saída se a solicitação for bem-sucedida.

Agora você tem um certificado de solicitação de provisionamento e uma chave privada que os dispositivos podem usar para se registrar na AWS IoT e se provisionar como dispositivos principais do Greengrass. É possível incorporar o certificado de solicitação e a chave privada nos dispositivos durante a fabricação ou copiar o certificado e a chave nos dispositivos antes de instalar o software AWS IoT Greengrass Core. Para ter mais informações, consulte Instale o software AWS IoT Greengrass principal com provisionamento de AWS IoT frota.