教學課程:在執行 AWS IoT 裝置用戶端教學課程後清除 - AWS IoT Core

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

教學課程:在執行 AWS IoT 裝置用戶端教學課程後清除

本教學課程中的程序會在完成此學習路徑中的教學課程時,逐步引導您移除所建立的檔案和資源。

步驟 1:在使用 AWS IoT 裝置用戶端建置示範後清除裝置

本教學課程說明在此學習路徑中建置示範後,如何清除 microSD 卡的兩個選項。選擇提供所需安全等級的選項。

請注意,清理裝置的 microSD 卡並不會移除任何 AWS IoT 資源。若要在清理裝置的 microSD 卡後清除 AWS IoT 資源,請參閱 步驟 2:在使用 AWS IoT 裝置用戶端建置示範後清除 AWS 帳戶 上的教學課程。

選項 1:透過重新寫入 microSD 記憶卡進行清除

在完成此學習路徑中的教學課程後,清除 microSD 卡最簡單且最徹底的方法是,使用您在第一次準備裝置時所建立的儲存映像檔案覆寫 microSD 卡。

此程序會使用本機主機電腦,將儲存的 microSD 卡映像寫入 microSD 卡。

注意

如果裝置未針對其作業系統使用卸除式儲存媒體,請參閱該裝置的程序。

若要將新映像寫入 microSD 卡
  1. 在本機主機電腦上,找出要寫入至 microSD 卡的儲存 microSD 卡映像。

  2. 請將 microSD 卡插入主機電腦。

  3. 使用 SD 卡映像工具,將選取的影像檔案寫入至 microSD 卡。

  4. 寫入 Raspberry Pi 作業系統映像至 microSD 卡後,請退出 microSD 卡並安全地將其從本機主機電腦中移除。

您的 microSD 卡已可供使用。

選項 2:透過刪除使用者目錄進行清除

若要在完成教學課程後清理 microSD 卡而不重寫 microSD 卡映像,您可以個別刪除使用者目錄。這並不像從儲存映像重寫 microSD 卡那麼徹底,因為此操作不會移除任何可能已安裝的系統檔案。

如果移除使用者目錄足以滿足需求,您可以遵循此程序。

從裝置刪除此學習路徑的使用者目錄
  1. 在連接至裝置的終端機視窗中,執行這些命令來刪除在此學習路徑中建立的使用者目錄、子目錄及其所有檔案。

    注意

    在刪除這些目錄和檔案之後,您必須再次完成教學課程,才能執行示範。

    rm -Rf ~/dc-configs rm -Rf ~/policies rm -Rf ~/messages rm -Rf ~/certs rm -Rf ~/.aws-iot-device-client
  2. 在連接至裝置的終端機視窗中,執行這些命令來刪除應用程式來源目錄和檔案。

    注意

    這些命令不會解除安裝任何程式。它們只會刪除用於建置和安裝它們的來源檔案。刪除這些檔案之後,AWS CLI 與 AWS IoT 裝置用戶端可能無法運作。

    rm -Rf ~/aws-cli rm -Rf ~/aws rm -Rf ~/aws-iot-device-client

步驟 2:在使用 AWS IoT 裝置用戶端建置示範後清除 AWS 帳戶

在完成此學習路徑中的教學課程後,這些程序可協助您識別並移除所建立的 AWS 資源。

清除 AWS IoT 資源

在完成此學習路徑中的教學課程後,此程序可協助您識別並移除您建立的 AWS IoT 資源。

在此學習路徑中建立的 AWS IoT 資源
教學課程 物件資源 政策資源

教學課程:安裝和設定 AWS IoT 裝置用戶端

DevCliTestThing

DevCliTestThingPolicy

教學課程:示範與 AWS IoT Device Client MQTT的訊息通訊

PubSubTestThing

PubSubTestThingPolicy

教學課程:使用 AWS IoT 裝置用戶端來示範遠端動作 (任務)

使用者定義 (可能不止一個)

使用者定義 (可能不止一個)

若要刪除 AWS IoT 資源,請為建立的每個物件資源執行此程序
  1. 使用要刪除的物件資源名稱來取代 thing_name,然後執行此命令從本機主機電腦列出連接至物件資源的憑證。

    aws iot list-thing-principals --thing-name thing_name

    此命令會傳回像這樣的回應,其中會列出連接至 thing_name 的憑證。在大多數情況下,清單中只會有一個憑證。

    { "principals": [ "arn:aws:iot:us-west-2:57EXAMPLE833:cert/23853eea3cf0edc7f8a69c74abeafa27b2b52823cab5b3e156295e94b26ae8ac" ] }
  2. 針對上一個命令列出的每個憑證:

    1. 使用上一個命令的憑證 ID 來取代 certificate_ID。憑證 ID 是上一個命令傳回的 ARN 中 cert/ 後面的英數字元。然後執行此命令來停用憑證。

      aws iot update-certificate --new-status INACTIVE --certificate-id certificate_ID

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

    2. 使用之前傳回的憑證清單中的憑證 ARN 來取代 certificate_ARN,然後執行此命令來列出連接至此憑證的政策。

      aws iot list-attached-policies --target certificate_ARN

      此命令會傳回像這樣的回應,其中會列出連接至憑證的政策。在大多數情況下,清單中只會有一個政策。

      { "policies": [ { "policyName": "DevCliTestThingPolicy", "policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/DevCliTestThingPolicy" } ] }
    3. 每個連接至憑證的政策:

      1. 使用上一個命令的 policyName 值來取代 policy_name,使用憑證的 ARN 來取代 certificate_ARN,然後執行此命令從憑證分離政策。

        aws iot detach-policy --policy-name policy_name --target certificate_ARN

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

      2. 使用 policyName 值來取代 policy_name,然後執行此命令,查看政策是否已連接至任何憑證。

        aws iot list-targets-for-policy --policy-name policy_name

        如果命令傳回類似這樣的空白清單,代表政策未連接至任何憑證,您可以繼續列出政策版本。如果仍有連接至政策的憑證,請繼續進行 detach-thing-principal 步驟。

        { "targets": [] }
      3. 使用 policyName 值來取代 policy_name,然後執行此命令來檢查政策版本。若要刪除政策,該政策必須只有一個版本。

        aws iot list-policy-versions --policy-name policy_name

        如果政策只有一個版本 (例如此範例),您可以跳至 delete-policy 步驟,然後立即刪除政策。

        { "policyVersions": [ { "versionId": "1", "isDefaultVersion": true, "createDate": "2021-11-18T01:02:46.778000+00:00" } ] }

        如果政策具有多個版本 (例如此範例),就必須先刪除具有 isDefaultVersion 值的 false,才能刪除政策。

        { "policyVersions": [ { "versionId": "2", "isDefaultVersion": true, "createDate": "2021-11-18T01:52:04.423000+00:00" }, { "versionId": "1", "isDefaultVersion": false, "createDate": "2021-11-18T01:30:18.083000+00:00" } ] }

        如果需要刪除政策版本,請使用 policyName 值來取代 policy_name,使用上一個命令的 versionId 值取代 version_ID,然後執行此命令來刪除政策版本。

        aws iot delete-policy-version --policy-name policy_name --policy-version-id version_ID

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

        刪除政策版本後,請重複此步驟,直到政策只有一個政策版本為止。

      4. 使用 policyName 值來取代 policy_name,然後執行此命令來刪除政策。

        aws iot delete-policy --policy-name policy_name
    4. 使用物件的名稱來取代 thing_name,再使用憑證的 ARN 來取代 certificate_ARN,然後執行此命令來從物件資源分離憑證。

      aws iot detach-thing-principal --thing-name thing_name --principal certificate_ARN

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

    5. 使用上一個命令的憑證 ID 來取代 certificate_ID。憑證 ID 是上一個命令傳回的 ARN 中 cert/ 後面的英數字元。然後執行此命令來刪除憑證資源。

      aws iot delete-certificate --certificate-id certificate_ID

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

  3. 使用物件的名稱來取代 thing_name,然後執行此命令來刪除該物件。

    aws iot delete-thing --thing-name thing_name

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

清除 AWS 資源

在完成此學習路徑中的教學課程後,此程序可協助您識別並移除所建立的其他 AWS 資源。

在此學習路徑中建立的其他 AWS 資源
教學課程 資源類型 資源名稱或 ID

教學課程:使用 AWS IoT 裝置用戶端來示範遠端動作 (任務)

Amazon S3 物件 hello-world-job.json

教學課程:使用 AWS IoT 裝置用戶端來示範遠端動作 (任務)

AWS IoT 任務資源

使用者定義
刪除在此學習路徑中建立的 AWS 資源
  1. 刪除在此學習路徑中建立的任務

    1. 執行此命令來列出 AWS 帳戶 中的任務。

      aws iot list-jobs

      此命令會在 AWS 帳戶 和 AWS 區域 中傳回 AWS IoT 任務的清單,如下所示。

      { "jobs": [ { "jobArn": "arn:aws:iot:us-west-2:57EXAMPLE833:job/hello-world-job-2", "jobId": "hello-world-job-2", "targetSelection": "SNAPSHOT", "status": "COMPLETED", "createdAt": "2021-11-16T23:40:36.825000+00:00", "lastUpdatedAt": "2021-11-16T23:40:41.375000+00:00", "completedAt": "2021-11-16T23:40:41.375000+00:00" }, { "jobArn": "arn:aws:iot:us-west-2:57EXAMPLE833:job/hello-world-job-1", "jobId": "hello-world-job-1", "targetSelection": "SNAPSHOT", "status": "COMPLETED", "createdAt": "2021-11-16T23:35:26.381000+00:00", "lastUpdatedAt": "2021-11-16T23:35:29.239000+00:00", "completedAt": "2021-11-16T23:35:29.239000+00:00" } ] }
    2. 針對您從清單中辨識出在此學習路徑中建立的任務的每個任務,請使用要刪除任務的 jobId 值來取代 jobId,然後執行此命令來刪除 AWS IoT 任務。

      aws iot delete-job --job-id jobId

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

  2. 刪除儲存在此學習路徑 Amazon S3 儲存貯體中的任務文件

    1. 使用您採用的儲存貯體名稱來取代 bucket,然後執行此命令來列出您使用的 Amazon S3 儲存貯體中的物件。

      aws s3api list-objects --bucket bucket

      此命令會傳會儲存貯體中的 Amazon S3 物件清單,如下所示。

      { "Contents": [ { "Key": "hello-world-job.json", "LastModified": "2021-11-18T03:02:12+00:00", "ETag": "\"868c8bc3f56b5787964764d4b18ed5ef\"", "Size": 54, "StorageClass": "STANDARD", "Owner": { "DisplayName": "EXAMPLE", "ID": "e9e3d6ec1EXAMPLEf5bfb5e6bd0a2b6ed03884d1ed392a82ad011c144736a4ee" } }, { "Key": "iot_job_firmware_update.json", "LastModified": "2021-04-13T21:57:07+00:00", "ETag": "\"7c68c591949391791ecf625253658c61\"", "Size": 66, "StorageClass": "STANDARD", "Owner": { "DisplayName": "EXAMPLE", "ID": "e9e3d6ec1EXAMPLEf5bfb5e6bd0a2b6ed03884d1ed392a82ad011c144736a4ee" } }, { "Key": "order66.json", "LastModified": "2021-04-13T21:57:07+00:00", "ETag": "\"bca60d5380b88e1a70cc27d321caba72\"", "Size": 29, "StorageClass": "STANDARD", "Owner": { "DisplayName": "EXAMPLE", "ID": "e9e3d6ec1EXAMPLEf5bfb5e6bd0a2b6ed03884d1ed392a82ad011c144736a4ee" } } ] }
    2. 對於您從清單中辨識為在此學習路徑中建立的物件的每個物件,請使用儲存貯體名稱來取代 bucket,使用要刪除物件的鍵值來取代 key,然後執行此命令來刪除 Amazon S3 物件。

      aws s3api delete-object --bucket bucket --key key

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

在完成此學習路徑時刪除建立的所有 AWS 資源和物件之後,您可以重新開始並重複教學課程。