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á.
ust-in-time Provisionamento J
Você pode usar o just-in-time provisionamento (JITP) para provisionar seus dispositivos quando eles tentarem se conectar pela primeira vez. AWS IoT Para provisionar o dispositivo, você deve habilitar o registro automático e associar um modelo de provisionamento ao certificado da CA usado para assinar o certificado do dispositivo. Os sucessos e erros de provisionamento são registrados como na Amazon. Métricas de provisionamento de dispositivos CloudWatch
Tópicos
Visão geral de JITP
Quando um dispositivo tenta se conectar AWS IoT usando um certificado assinado por um certificado CA registrado, AWS IoT carrega o modelo do certificado CA e o usa para fazer a chamada RegisterThing. O fluxo de trabalho de JITP registra primeiro um certificado com um valor de status de PENDING_ACTIVATION
. Quando o fluxo de provisionamento do dispositivo for concluído, o status do certificado será alterado para ACTIVE
.
AWS IoT define os seguintes parâmetros que você pode declarar e referenciar nos modelos de provisionamento:
-
AWS::IoT::Certificate::Country
-
AWS::IoT::Certificate::Organization
-
AWS::IoT::Certificate::OrganizationalUnit
-
AWS::IoT::Certificate::DistinguishedNameQualifier
-
AWS::IoT::Certificate::StateName
-
AWS::IoT::Certificate::CommonName
-
AWS::IoT::Certificate::SerialNumber
-
AWS::IoT::Certificate::Id
Os valores para esses parâmetros de modelo de provisionamento são limitados ao que o JITP pode extrair do campo de assunto do certificado do dispositivo que está sendo provisionado. O certificado deve conter valores para todos os parâmetros no corpo do modelo. O parâmetro AWS::IoT::Certificate::Id
se refere a um ID gerado internamente, e não a um ID contido no certificado. Você pode obter o valor desse ID usando a principal()
função dentro de uma AWS IoT regra.
nota
Você pode AWS IoT Core just-in-time provisionar dispositivos usando o recurso de provisionamento (JITP) sem precisar enviar toda a cadeia de confiança na primeira conexão de um dispositivo para o. AWS IoT Core A apresentação do certificado da CA é opcional, mas é necessário que o dispositivo envie a extensão Server Name Indication (SNI)
Exemplo de corpo do modelo
O arquivo JSON a seguir é um exemplo de corpo do modelo de JITP completo.
{ "Parameters":{ "AWS::IoT::Certificate::CommonName":{ "Type":"String" }, "AWS::IoT::Certificate::SerialNumber":{ "Type":"String" }, "AWS::IoT::Certificate::Country":{ "Type":"String" }, "AWS::IoT::Certificate::Id":{ "Type":"String" } }, "Resources":{ "thing":{ "Type":"AWS::IoT::Thing", "Properties":{ "ThingName":{ "Ref":"AWS::IoT::Certificate::CommonName" }, "AttributePayload":{ "version":"v1", "serialNumber":{ "Ref":"AWS::IoT::Certificate::SerialNumber" } }, "ThingTypeName":"lightBulb-versionA", "ThingGroups":[ "v1-lightbulbs", { "Ref":"AWS::IoT::Certificate::Country" } ] }, "OverrideSettings":{ "AttributePayload":"MERGE", "ThingTypeName":"REPLACE", "ThingGroups":"DO_NOTHING" } }, "certificate":{ "Type":"AWS::IoT::Certificate", "Properties":{ "CertificateId":{ "Ref":"AWS::IoT::Certificate::Id" }, "Status":"ACTIVE" } }, "policy":{ "Type":"AWS::IoT::Policy", "Properties":{ "PolicyDocument":"{ \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Action\":[\"iot:Publish\"], \"Resource\": [\"arn:aws:iot:us-east-1:123456789012:topic/foo/bar\"] }] }" } } } }
Este modelo de exemplo declara valores para os parâmetros de provisionamento AWS::IoT::Certificate::CommonName
, AWS::IoT::Certificate::SerialNumber
, AWS::IoT::Certificate::Country
e AWS::IoT::Certificate::Id
que são extraídos do certificado e usados na seção Resources
. Em seguida, o fluxo de trabalho de JITP usa esse modelo para executar as seguintes ações:
-
Registrar um certificado e definir seu status como PENDING_ACTIVE.
-
Criar um recurso de coisa.
-
Criar um recurso de política.
-
Anexar a política ao certificado.
-
Anexar um certificado à coisa.
-
Atualizar o status do certificado como ACTIVE.
O provisionamento do dispositivo falhará se o certificado não tiver todas as propriedades mencionadas na Parameters
seção do. templateBody
Por exemplo, se AWS::IoT::Certificate::Country
estiver incluído no modelo, mas o certificado não tiver uma propriedade Country
, o provisionamento do dispositivo falhará.
Você também pode usar CloudTrail para solucionar problemas com seu modelo JITP. Para obter informações sobre as métricas registradas na Amazon CloudWatch, consulteMétricas de provisionamento de dispositivos. Para obter mais informações sobre modelos de provisionamento, consulte Modelos de provisionamento.
nota
Durante o processo de provisionamento, o just-in-time provisionamento (JITP) chama outras operações de API do plano de controle. AWS IoT Essas chamadas podem exceder as Cotas de controle de utilização da AWS IoT definidas para a conta e resultar em chamadas limitadas. Entre em contato com o Suporte ao cliente da AWS
Registrar CA usando o modelo de provisionamento
Para registrar uma CA usando um modelo de provisionamento completo, siga estas etapas:
-
Salve o modelo de provisionamento e as informações do ARN da função, como no exemplo a seguir, como um arquivo JSON:
{ "templateBody" : "{\r\n \"Parameters\" : {\r\n \"AWS::IoT::Certificate::CommonName\": {\r\n \"Type\": \"String\"\r\n },\r\n \"AWS::IoT::Certificate::SerialNumber\": {\r\n \"Type\": \"String\"\r\n },\r\n \"AWS::IoT::Certificate::Country\": {\r\n \"Type\": \"String\"\r\n },\r\n \"AWS::IoT::Certificate::Id\": {\r\n \"Type\": \"String\"\r\n }\r\n },\r\n \"Resources\": {\r\n \"thing\": {\r\n \"Type\": \"AWS::IoT::Thing\",\r\n \"Properties\": {\r\n \"ThingName\": {\r\n \"Ref\": \"AWS::IoT::Certificate::CommonName\"\r\n },\r\n \"AttributePayload\": {\r\n \"version\": \"v1\",\r\n \"serialNumber\": {\r\n \"Ref\": \"AWS::IoT::Certificate::SerialNumber\"\r\n }\r\n },\r\n \"ThingTypeName\": \"lightBulb-versionA\",\r\n \"ThingGroups\": [\r\n \"v1-lightbulbs\",\r\n {\r\n \"Ref\": \"AWS::IoT::Certificate::Country\"\r\n }\r\n ]\r\n },\r\n \"OverrideSettings\": {\r\n \"AttributePayload\": \"MERGE\",\r\n \"ThingTypeName\": \"REPLACE\",\r\n \"ThingGroups\": \"DO_NOTHING\"\r\n }\r\n },\r\n \"certificate\": {\r\n \"Type\": \"AWS::IoT::Certificate\",\r\n \"Properties\": {\r\n \"CertificateId\": {\r\n \"Ref\": \"AWS::IoT::Certificate::Id\"\r\n },\r\n \"Status\": \"ACTIVE\"\r\n },\r\n \"OverrideSettings\": {\r\n \"Status\": \"DO_NOTHING\"\r\n }\r\n },\r\n \"policy\": {\r\n \"Type\": \"AWS::IoT::Policy\",\r\n \"Properties\": {\r\n \"PolicyDocument\": \"{ \\\"Version\\\": \\\"2012-10-17\\\", \\\"Statement\\\": [{ \\\"Effect\\\": \\\"Allow\\\", \\\"Action\\\":[\\\"iot:Publish\\\"], \\\"Resource\\\": [\\\"arn:aws:iot:us-east-1:123456789012:topic\/foo\/bar\\\"] }] }\"\r\n }\r\n }\r\n }\r\n}", "roleArn" : "arn:aws:iam::123456789012:role/JITPRole" }
Neste exemplo, o valor do campo
templateBody
deve ser um objeto JSON especificado como uma string de escape e pode usar somente os valores da lista anterior. É possível usar uma variedade de ferramentas para criar a saída JSON necessária, comojson.dumps
(Python) ouJSON.stringify
(Node). O valor do camporoleARN
deve ser o ARN de uma função que tenha aAWSIoTThingsRegistration
anexada a ele. Além disso, o modelo pode usar umPolicyName
existente em vez daPolicyDocument
em linha no exemplo. -
Registre um certificado CA com a operação da API RegisterCACertificate ou comando
register-ca-certificate
da CLI. Você precisa especificar o diretório do modelo de provisionamento e as informações do ARN da função que você salvou na etapa anterior:O seguinte exemplo mostra como registrar um certificado CA no modo
DEFAULT
usando a AWS CLI:aws iot register-ca-certificate --ca-certificate file://
your-ca-cert
--verification-cert file://your-verification-cert
--set-as-active --allow-auto-registration --registration-config file://your-template
O seguinte exemplo mostra como registrar um certificado CA no modo
SNI_ONLY
usando a AWS CLI:aws iot register-ca-certificate --ca-certificate file://
your-ca-cert
--certificate-modeSNI_ONLY
--set-as-active --allow-auto-registration --registration-config file://your-template
Para obter mais informações, consulte Registrar certificados CA.
-
(Opcional) Atualize as configurações de um certificado CA usando a operação da API UpdateCACertificate ou o comando
update-ca-certificate
da CLI.O seguinte exemplo mostra como atualizar um certificado CA usando a AWS CLI:
aws iot update-ca-certificate --certificate-id
caCertificateId
--new-auto-registration-status ENABLE --registration-config file://your-template
Registrar CA usando o nome do modelo de provisionamento
Para registrar uma CA usando o nome de um modelo de provisionamento, siga estas etapas:
-
Salve o corpo do modelo de provisionamento como um arquivo JSON. Você pode encontrar um exemplo de um corpo de modelo no corpo de modelo de exemplo.
-
Para criar um modelo de aprovisionamento, use a API CreateProvisioningTemplate ou o comando CLI:
create-provisioning-template
aws iot create-provisioning-template --template-name
your-template-name
\ --template-body file://your-template-body.json
--type JITP \ --provisioning-role-arnarn:aws:iam::123456789012:role/test
nota
Para just-in-time provisionamento (JITP), você deve especificar o tipo de modelo a ser
JITP
ao criar o modelo de provisionamento. Para obter mais informações sobre o tipo de modelo, consulte CreateProvisioningModelo na Referência AWS da API. -
Para registrar um certificado CA com o nome de modelo, use a API RegisterCACertificate ou comando
register-ca-certificate
da CLI:aws iot register-ca-certificate --ca-certificate file:
//your-ca-cert
--verification-certfile://your-verification-cert
\ --set-as-active --allow-auto-registration --registration-config templateName=your-template-name