Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
J: approvvigionamento ust-in-time
È possibile utilizzare il just-in-time provisioning (JITP) per effettuare il provisioning dei dispositivi al primo tentativo di connessione. AWS IoT Per eseguire il provisioning del dispositivo, devi abilitare la registrazione automatica e associare un modello di provisioning al certificato CA usato per firmare il certificato del dispositivo. I successi e gli errori di provisioning vengono registrati come in Parametri di provisioning dei dispositivi Amazon. CloudWatch
Argomenti
Panoramica di JITP
Quando un dispositivo tenta di connettersi AWS IoT utilizzando un certificato firmato da un certificato CA registrato, AWS IoT carica il modello dal certificato CA e lo utilizza per chiamare. RegisterThing Il flusso di lavoro JITP prima registra un certificato con un valore di stato PENDING_ACTIVATION
. Quando il flusso di provisioning del dispositivo è completo, lo stato del certificato viene modificato in ACTIVE
.
AWS IoT definisce i seguenti parametri a cui è possibile dichiarare e fare riferimento nei modelli di provisioning:
-
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
I valori per questi parametri del modello di provisioning sono limitati a ciò che JITP può estrarre dal campo oggetto del certificato del dispositivo di cui viene effettuato il provisioning. Il certificato deve contenere valori per tutti i parametri nel corpo del modello. Il parametro AWS::IoT::Certificate::Id
si riferisce a un ID generato internamente, non a un ID contenuto nel certificato. È possibile ottenere il valore di questo ID utilizzando la principal()
funzione all'interno di una AWS IoT regola.
Nota
È possibile effettuare il AWS IoT Core just-in-time provisioning dei dispositivi utilizzando la funzionalità di provisioning (JITP) senza dover inviare l'intera catena di fiducia alla prima connessione di un dispositivo a. AWS IoT Core La presentazione del certificato emesso da una CA è facoltativa, ma il dispositivo deve inviare l'estensione Server Name Indication (SNI)
Modello di corpo di esempio
Il seguente file JSON è un esempio di modello di corpo completo di un modello JITP.
{ "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\"] }] }" } } } }
Questo modello di esempio dichiara i valori per i parametri di provisioning AWS::IoT::Certificate::CommonName
, AWS::IoT::Certificate::SerialNumber
, AWS::IoT::Certificate::Country
e AWS::IoT::Certificate::Id
che vengono estratti dal certificato e utilizzati nella sezione Resources
. Il flusso di lavoro JITP usa quindi questo modello per eseguire le seguenti operazioni:
-
Registrare un certificato e impostare il relativo stato su PENDING_ACTIVE.
-
Creare una risorsa oggetto.
-
Creare una risorsa policy.
-
Collegare la policy al certificato.
-
Collegare il certificato all'oggetto.
-
Aggiornare lo stato del certificato ad ACTIVE.
Il provisioning del dispositivo fallisce se il certificato non ha tutte le proprietà menzionate nella sezione delParameters
. templateBody
Ad esempio, se AWS::IoT::Certificate::Country
è incluso nel modello, ma il certificato non ha una proprietà Country
, il provisioning del dispositivo non riesce.
Puoi anche usarlo CloudTrail per risolvere problemi con il tuo modello JITP. Per informazioni sulle metriche registrate in Amazon CloudWatch, consulta. Parametri di provisioning dei dispositivi Per ulteriori informazioni sui modelli di provisioning, consulta Modelli di provisioning.
Nota
Durante il processo di provisioning, il just-in-time provisioning (JITP) richiama altre operazioni API del piano di controllo. AWS IoT Queste chiamate potrebbero superare le quote di throttling AWS IoT impostate per il tuo account e causare limitazioni delle chiamate. Se necessario, contatta il supporto clienti AWS
Registrare la CA utilizzando il modello di provisioning
Per registrare una CA utilizzando un modello di provisioning completo, attieniti alla seguente procedura:
-
Salva il modello di provisioning e le informazioni ARN del ruolo sotto forma di file JSON come nell'esempio seguente:
{ "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" }
Il valore del campo
templateBody
deve essere un oggetto JSON specificato come stringa con caratteri di escape e può utilizzare solo i valori dell'elenco precedente. È possibile utilizzare una varietà di strumenti per creare l'output JSON richiesto, ad esempiojson.dumps
(Python) oJSON.stringify
(Node). Il valore del camporoleARN
deve essere l'ARN di un ruolo a cui è associataAWSIoTThingsRegistration
. Inoltre, il modello può utilizzare unPolicyName
esistente invece diPolicyDocument
inline nell'esempio. -
Registra un certificato CA con l'API RegisterCACertificate o il comando
register-ca-certificate
della CLI. Specificherai la cartella del modello di provisioning e le informazioni ARN sui ruoli salvate nel passaggio precedente:Di seguito viene illustrato un esempio di come registrare un certificato CA in modalità
DEFAULT
utilizzando la 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
Di seguito viene illustrato un esempio di come registrare un certificato CA in modalità
SNI_ONLY
utilizzando la 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
Per ulteriori informazioni, consulta Registrazione di certificati CA.
-
(Facoltativo) Aggiorna le impostazioni di un certificato CA utilizzando l'operazione API UpdateCACertificate o il comando
update-ca-certificate
della CLI.Di seguito viene illustrato un esempio di come aggiornare un certificato CA utilizzando la AWS CLI:
aws iot update-ca-certificate --certificate-id
caCertificateId
--new-auto-registration-status ENABLE --registration-config file://your-template
Registrare una CA utilizzando il nome del modello di provisioning
Per registrare una CA utilizzando il nome di un modello di provisioning, attieniti alla seguente procedura:
-
Salva il corpo del modello di provisioning sotto forma di file JSON. Puoi trovare un esempio di corpo del modello in esempio di corpo del modello.
-
Per creare un modello di provisioning, utilizza l'API CreateProvisioningTemplate o il comando
create-provisioning-template
CLI: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
Per il just-in-time provisioning (JITP), è necessario specificare il tipo di modello da utilizzare al
JITP
momento della creazione del modello di provisioning. Per ulteriori informazioni sul tipo di modello, consulta CreateProvisioningTemplate nell'API Reference.AWS -
Per registrare la CA con il nome del modello, utilizza l'API RegisterCACertificate o il comando
register-ca-certificate
della 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