第 2 步:在 AWS IoT 中佈建 Raspberry Pi - AWS IoT Core

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

第 2 步:在 AWS IoT 中佈建 Raspberry Pi

本節的程序是從已安裝了 AWS CLI 和 AWS IoT 裝置用戶端的儲存 microSD 映像開始,然後是建立會在 AWS IoT 中佈建 Raspberry Pi 的 AWS IoT 資源和裝置憑證。

在 Raspberry Pi 中安裝 microSD 卡

此程序會安裝載入了所需軟體並設定至 Raspberry Pi 的 microSD 卡,然後設定 AWS 帳戶,以便您可以繼續使用此學習路徑中的教學課程。

使用 (選用) 儲存 microSD 卡映像 中的 microSD 卡,其中包含此學習路徑中的練習和教學課程所需的軟體。

在 Raspberry Pi 安裝 microSD 卡
  1. 在 Raspberry Pi 斷開電源後,將 microSD 卡插入 Raspberry Pi。

  2. 將電源連接至 Raspberry Pi。

  3. 大約一分鐘後,在本機主機電腦上重新啟動終端機視窗工作階段,然後登入 Raspberry Pi。

  4. 在本機主機電腦的終端機視窗中,使用 Raspberry Pi 的 Access Key ID (存取金鑰 ID) 和 Secret Access Key (私密存取金鑰) 憑證:

    1. 使用此命令執行 AWS 設定應用程式:

      aws configure
    2. 出現提示時,請輸入 AWS 帳戶 憑證和組態資訊:

      AWS Access Key ID [****************YXYX]: your Access Key ID AWS Secret Access Key [****************YXYX]: your Secret Access Key Default region name [us-west-2]: your AWS 區域 code Default output format [json]: json

在還原 AWS 帳戶 憑證之後,您就可以繼續進行 在 AWS IoT Core 上佈建裝置

在 AWS IoT Core 上佈建裝置

本節中的程序會建立能在 AWS IoT 中佈建 Raspberry Pi 的 AWS IoT 資源。建立這些資源時,系統會要求您記錄各種資訊。AWS IoT 裝置用戶端組態會在接下來的程序中使用此資訊。

若要讓 Raspberry Pi 搭配 AWS IoT 工作,則必須對其進行佈建。佈建是建立和設定 AWS IoT 資源的程序,這些資源是支援 Raspberry Pi 作為 IoT 裝置的必要資源。

在 Raspberry Pi 開啟電源和重新啟動之後,請在本機主機電腦上的終端機視窗中連接至 Raspberry Pi 並完成這些程序。

建立並下載裝置憑證檔案

此程序會建立此示範的裝置憑證檔案。

為 Raspberry Pi 建立並下載裝置憑證檔案
  1. 在本機主機電腦的終端機視窗中,輸入這些命令來建立裝置的裝置憑證檔案。

    mkdir ~/certs/testconn aws iot create-keys-and-certificate \ --set-as-active \ --certificate-pem-outfile "~/certs/testconn/device.pem.crt" \ --public-key-outfile "~/certs/testconn/public.pem.key" \ --private-key-outfile "~/certs/testconn/private.pem.key"

    此命令會傳回類似以下的回應。記錄 certificateArn 值,供之後使用。

    { "certificateArn": "arn:aws:iot:us-west-2:57EXAMPLE833:cert/76e7e4edb3e52f52334be2f387a06145b2aa4c7fcd810f3aea2d92abc227d269", "certificateId": "76e7e4edb3e52f5233EXAMPLE7a06145b2aa4c7fcd810f3aea2d92abc227d269", "certificatePem": "-----BEGIN CERTIFICATE-----\nMIIDWTCCAkGgAwIBAgI_SHORTENED_FOR_EXAMPLE_Lgn4jfgtS\n-----END CERTIFICATE-----\n", "keyPair": { "PublicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BA_SHORTENED_FOR_EXAMPLE_ImwIDAQAB\n-----END PUBLIC KEY-----\n", "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQE_SHORTENED_FOR_EXAMPLE_T9RoDiukY\n-----END RSA PRIVATE KEY-----\n" } }
  2. 輸入下列命令來設定憑證目錄及其檔案的許可。

    chmod 745 ~ chmod 700 ~/certs/testconn chmod 644 ~/certs/testconn/* chmod 600 ~/certs/testconn/private.pem.key
  3. 執行此命令來檢閱憑證目錄和檔案的許可。

    ls -l ~/certs/testconn

    命令的輸出應該與您在此處看到的相同,但檔案日期和時間會有所不同。

    -rw-r--r-- 1 pi pi 1220 Oct 28 13:02 device.pem.crt -rw------- 1 pi pi 1675 Oct 28 13:02 private.pem.key -rw-r--r-- 1 pi pi 451 Oct 28 13:02 public.pem.key

此時,您已在 Raspberry Pi 上安裝了裝置憑證檔案,可以繼續進行 建立 AWS IoT 資源

建立 AWS IoT 資源

此程序會在 AWS IoT 中佈建裝置,方法是建立裝置需要存取 AWS IoT 功能與服務的資源。

在 AWS IoT 中佈建裝置
  1. 在本機主機電腦的終端機視窗中輸入下列命令,取得 AWS 帳戶 裝置資料端點的地址。

    aws iot describe-endpoint --endpoint-type IoT:Data-ATS

    先前步驟的命令會傳回類似以下的回應:記錄 endpointAddress 值,供之後使用。

    { "endpointAddress": "a3qjEXAMPLEffp-ats.iot.us-west-2.amazonaws.com" }
  2. 輸入此命令來為 Raspberry Pi 建立 AWS IoT 物件資源。

    aws iot create-thing --thing-name "DevCliTestThing"

    如果 AWS IoT 物件資源已建立,此命令會傳回類似這樣的回應。

    { "thingName": "DevCliTestThing", "thingArn": "arn:aws:iot:us-west-2:57EXAMPLE833:thing/DevCliTestThing", "thingId": "8ea78707-32c3-4f8a-9232-14bEXAMPLEfd" }
  3. 在終端機視窗中:

    1. 開啟文字編輯器,例如 nano

    2. 複製此 JSON 政策文件並將其貼入開啟的文字編輯器中。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Receive", "iot:Connect" ], "Resource": [ "*" ] } ] }
      注意

      本政策文件會慷慨地授予每個資源許可,以便進行連線、接收、發佈和訂閱。通常,政策只會授予特定資源許可,以便執行特定動作。不過,對於初始裝置連線能力測試,這個過度寬鬆的政策能夠在此測試期間盡力降低出現存取問題的機率。在後續教學課程中,將使用範圍較窄的政策文件來示範政策設計的更佳實務。

    3. 將文字編輯器中的檔案儲存為 ~/policies/dev_cli_test_thing_policy.json

  4. 執行此命令,以使用先前步驟的政策文件來建立 AWS IoT 政策。

    aws iot create-policy \ --policy-name "DevCliTestThingPolicy" \ --policy-document "file://~/policies/dev_cli_test_thing_policy.json"

    如果建立此政策,此命令會傳回類似以下的回應。

    { "policyName": "DevCliTestThingPolicy", "policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/DevCliTestThingPolicy", "policyDocument": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"iot:Publish\",\n \"iot:Subscribe\",\n \"iot:Receive\",\n \"iot:Connect\"\n ],\n \"Resource\": [\n \"*\"\n ]\n }\n ]\n}\n", "policyVersionId": "1" }
  5. 執行此命令,將此政策連接至裝置憑證。使用之前儲存的 certificateArn 值來取代 certificateArn

    aws iot attach-policy \ --policy-name "DevCliTestThingPolicy" \ --target "certificateArn"

    如果成功,此命令不會傳回任何內容。

  6. 執行此命令,將裝置憑證連接至 AWS IoT 物件資源。使用之前儲存的 certificateArn 值來取代 certificateArn

    aws iot attach-thing-principal \ --thing-name "DevCliTestThing" \ --principal "certificateArn"

    如果成功,此命令不會傳回任何內容。

成功在 AWS IoT 中佈建裝置之後,您就可以繼續進行 步驟 3:設定要測試連線能力的 AWS IoT 裝置用戶端