選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

使用機群佈建來佈建沒有裝置憑證的裝置

焦點模式
使用機群佈建來佈建沒有裝置憑證的裝置 - AWS IoT Core

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

透過使用 AWS IoT 叢集佈建, AWS IoT 可以在裝置首次連線時產生裝置憑證和私密金鑰,並將其安全地傳遞至 AWS IoT 裝置。 AWS IoT 提供由 Amazon 根憑證授權單位 (CA) 簽署的用戶端憑證。

使用機群佈建的方式有兩種:

透過要求佈建

裝置可以使用內嵌的佈建宣告憑證和私有金鑰 (這是特殊用途的憑證憑證) 來製造。如果這些憑證是在註冊的 AWS IoT,則服務可以將它們交換為裝置可用於一般作業的唯一裝置憑證。此程序包含以下步驟:

在您交付裝置之前
  1. 呼叫 CreateProvisioningTemplate 來建立佈建範本。這個 API 傳回範本 ARN。如需詳細資訊,請參閱 裝置佈建 MQTT API

    您也可以在 AWS IoT 主控台中建立叢集佈建範本。

    1. 從導覽窗格中,選擇 Connect (連接),然後選擇 Fleet provisioning templates (機群佈建範本)。

    2. 選擇 Create template (建立範本),並依照提示進行。

  2. 建立要用作佈建宣告憑證的憑證和關聯私有金鑰。

  3. 將這些憑證註冊到限制憑證使用的 IoT 原則, AWS IoT 並將其關聯起來。下列範例 IoT 政策會限制使用與此政策相關聯的憑證來佈建裝置。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["iot:Connect"], "Resource": "*" }, { "Effect": "Allow", "Action": ["iot:Publish","iot:Receive"], "Resource": [ "arn:aws:iot:aws-region:aws-account-id:topic/$aws/certificates/create/*", "arn:aws:iot:aws-region:aws-account-id:topic/$aws/provisioning-templates/templateName/provision/*" ] }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": [ "arn:aws:iot:aws-region:aws-account-id:topicfilter/$aws/certificates/create/*", "arn:aws:iot:aws-region:aws-account-id:topicfilter/$aws/provisioning-templates/templateName/provision/*" ] } ] }
  4. 在佈建裝置時,授予 AWS IoT 服務權限,以建立或更新您帳戶中的物件和憑證等 IoT 資源。透過將AWSIoTThingsRegistration受管政策附加到信任 AWS IoT 服務主體的 IAM 角色 (稱為佈建角色) 來執行此操作。

  5. 製造裝置,並安全地將佈建宣告憑證內嵌其中。

裝置現已準備就緒,可以傳送到將安裝的位置以供使用。

重要

佈建要求私有金鑰應該始終加以保護,包括在裝置上。我們建議您使用 AWS IoT CloudWatch 指標和記錄來監控濫用的跡象。如果您偵測到誤用,請關閉佈建宣告憑證,使其無法用於裝置佈建。

初始化裝置以供使用
  1. 裝置會使用連線AWS IoT 裝置 SDK、行動 SDK 和 AWS IoT 裝置用戶端到裝置上安裝的佈建宣告憑證,並 AWS IoT 使用進行驗證。

    注意

    為了安全起見,由 CreateCertificateFromCsrCreateKeysAndCertificate 傳回的 certificateOwnershipToken 會在一小時後過期。必須在 certificateOwnershipToken 過期之前呼叫 RegisterThing。如果由 CreateCertificateFromCsr 或者 CreateKeysAndCertificate 建立的憑證尚未啟用,並且在權杖過期時,尚未附加到政策或物件,憑證會遭到刪除。如果字符過期,裝置可以再次呼叫 CreateCertificateFromCsrCreateKeysAndCertificate 來產生新憑證。

  2. 裝置會使用其中一個選項取得永久憑證和私密金鑰。裝置將使用憑證和金鑰進行所有 future 的驗證 AWS IoT。

    1. 呼叫CreateKeysAndCertificate以使用憑證授權單位建立新的 AWS 憑證和私密金鑰。

    2. 呼叫 CreateCertificateFromCsr 以從保持私有金鑰安全的憑證簽署要求產生憑證。

  3. 從裝置呼叫 RegisterThing,以向 AWS IoT 註冊裝置,並建立雲端資源。

    同時,機群佈建服務會使用佈建範本來定義並建立雲端資源,例如 IoT 物件。範本可以指定物件所屬的屬性與群組。必須先有物件群組,才能將新物件加入其中。

  4. 在裝置上儲存永久憑證後,裝置必須中斷與佈建宣告憑證初始化的工作階段連線,然後使用永久憑證重新連線。

裝置現在已準備就緒,可以正常通訊 AWS IoT。

由信任的使用者佈建

在許多情況下,當受信任的使 AWS IoT 用者 (例如使用者或安裝技術人員) 使用行動應用程式在其部署位置設定裝置時,裝置會首次連線至裝置。

重要

您必須管理信任之使用者的存取權和許可,才能執行此程序。其中一種方法是為信任的使用者提供和維護帳戶,以驗證他們,並授予他們存取執行此程序所需的 AWS IoT 功能和 API 操作。

在您交付裝置之前
  1. 呼叫 CreateProvisioningTemplate 以建立佈建範本,並傳回其 templateArntemplateName

  2. 建立受信任使用者用來啟動佈建程序的 IAM 角色。佈建範本只允許該使用者佈建裝置。例如:

    { "Effect": "Allow", "Action": [ "iot:CreateProvisioningClaim" ], "Resource": [ "arn:aws:iot:aws-region:aws-account-id:provisioningtemplate/templateName" ] }
  3. 在佈建裝置時,授予 AWS IoT 服務權限以建立或更新 IoT 資源,例如帳戶中的項目和憑證。您可以透過將AWSIoTThingsRegistration受管政策附加到信任 AWS IoT 服務主體的 IAM 角色 (稱為佈建角色) 來達到此目的。

  4. 提供識別受信任使用者的方法,例如向他們提供可驗證使用者的帳戶,並授權他們與註冊其裝置所需的 AWS API 作業互動。

初始化裝置以供使用
  1. 信任的使用者會登入您的佈建行動應用程式或 Web 服務。

  2. 行動應用程式或 Web 應用程式會使用 IAM 角色並呼叫 CreateProvisioningClaim,以從 AWS IoT取得暫時佈建宣告憑證。

    注意

    為了安全起見,CreateProvisioningClaim 傳回的暫時佈建宣告憑證會在五分鐘後過期。在暫時佈建宣告憑證到期之前,下列步驟必須成功傳回有效的憑證。暫時佈建宣告憑證不會出現在您帳戶的憑證清單中。

  3. 行動應用程式或 Web 應用程式會將暫時佈建宣告憑證以及任何必要的設定資訊 (例如 Wi-Fi 認證) 提供給裝置。

  4. 裝置會使用暫時佈建宣告憑證,使用 AWS IoT 來連線至 AWS IoT 裝置 SDK、行動 SDK 和 AWS IoT 裝置用戶端

  5. 裝置會在連線至 AWS IoT 暫時佈建宣告憑證後的五分鐘內,使用其中一個選項取得永久憑證和私密金鑰。設備將使用這些選項返回的證書和密鑰,以便將 future 進行所有身份驗證 AWS IoT。

    1. 呼叫CreateKeysAndCertificate以使用憑證授權單位建立新的 AWS 憑證和私密金鑰。

    2. 呼叫 CreateCertificateFromCsr 以從保持私有金鑰安全的憑證簽署要求產生憑證。

    注意

    請記住CreateKeysAndCertificateCreateCertificateFromCsr必須在連接到 AWS IoT 臨時佈建聲明證書的五分鐘內返回有效證書。

  6. 裝置會呼叫RegisterThing以向裝置註冊 AWS IoT 並建立雲端資源。

    同時,機群佈建服務會使用佈建範本來定義並建立雲端資源,例如 IoT 物件。範本可以指定物件所屬的屬性與群組。必須先有物件群組,才能將新物件加入其中。

  7. 在裝置上儲存永久憑證之後,裝置必須中斷與使用暫時佈建宣告憑證起始的工作階段的連線,然後使用永久憑證重新連線。

裝置現在已準備就緒,可以正常通訊 AWS IoT。

將預先佈建掛接與 AWS CLI 搭配使用

下列程序會建立具有預先佈建掛接的佈建範本。這裡使用的 Lambda 函數是一個可修改的範例。

若要建立預先佈建掛接,並將其套用至佈建範本
  1. 建立具有所定義輸入和輸出的 Lambda 函數。Lambda 函數是可高度自訂的。需有 allowProvisioningparameterOverrides 才能建立預先佈建的掛接。如需建立 Lambda 函數的詳細資訊,請參閱AWS Lambda 搭配命 AWS 令列介面使用

    以下是 Lambda 函數輸出的範例:

    { "allowProvisioning": True, "parameterOverrides": { "incomingKey0": "incomingValue0", "incomingKey1": "incomingValue1" } }
  2. AWS IoT 使用以資源為基礎的政策來呼叫 Lambda,因此您必須 AWS IoT 授予呼叫 Lambda 函數的權限。

    重要

    請務必在連接到 Lambda 動作的政策的全域條件內容金鑰中包含 source-arnsource-account,以防止許可操作。如需此項目的詳細資訊,請參閱預防跨服務混淆代理人

    以下是使用 add-permission 將 IoT 許可授予您 Lambda 的範例。

    aws lambda add-permission \ --function-name myLambdaFunction \ --statement-id iot-permission \ --action lambda:InvokeFunction \ --principal iot.amazonaws.com
  3. 使用 create-provisioning-templateupdate-provisioning-template 命令,將預先啟動設定掛接新增至樣板。

    下列 CLI 範例使用 create-provisioning-template 建立具有預先啟動設定掛接的佈建範本:

    aws iot create-provisioning-template \ --template-name myTemplate \ --provisioning-role-arn arn:aws:iam:us-east-1:1234564789012:role/myRole \ --template-body file://template.json \ --pre-provisioning-hook file://hooks.json

    此令命的輸出結果如下所示:

    { "templateArn": "arn:aws:iot:us-east-1:1234564789012:provisioningtemplate/myTemplate", "defaultVersionId": 1, "templateName": myTemplate }

    您也可以從檔案載入參數,而不必一一輸入所有命令列參數值,以節省時間。如需詳細資訊,請參閱從檔案載入 AWS CLI 參數。以下顯示了擴展 JSON 格式的 template 參數:

    { "Parameters" : { "DeviceLocation": { "Type": "String" } }, "Mappings": { "LocationTable": { "Seattle": { "LocationUrl": "https://example.aws" } } }, "Resources" : { "thing" : { "Type" : "AWS::IoT::Thing", "Properties" : { "AttributePayload" : { "version" : "v1", "serialNumber" : "serialNumber" }, "ThingName" : {"Fn::Join":["",["ThingPrefix_",{"Ref":"SerialNumber"}]]}, "ThingTypeName" : {"Fn::Join":["",["ThingTypePrefix_",{"Ref":"SerialNumber"}]]}, "ThingGroups" : ["widgets", "WA"], "BillingGroup": "BillingGroup" }, "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:504350838278:topic/foo/bar"] }] } } } }, "DeviceConfiguration": { "FallbackUrl": "https://www.example.com/test-site", "LocationUrl": { "Fn::FindInMap": ["LocationTable",{"Ref": "DeviceLocation"}, "LocationUrl"]} } }

    以下顯示了擴展 JSON 格式的 pre-provisioning-hook 參數:

    { "targetArn" : "arn:aws:lambda:us-east-1:765219403047:function:pre_provisioning_test", "payloadVersion" : "2020-04-01" }
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。