教程:运行 AWS IoTDevice Client 教程后清理 - AWS IoT Core

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

教程:运行 AWS IoTDevice Client 教程后清理

本教程中的过程将指导您在完成本学习路径中的教程时删除创建的文件和资源。

步骤 1:使用 Device Client AWS IoT构建演示后清理设备

本教程介绍了在此学习路径中构建演示后如何清理 microSD 卡的两个选项。选择提供所需安全级别的选项。

请注意,清理设备的 microSD 卡不会移除任何您创建的 AWS IoT资源。要在清理设备的 microSD 卡后清理 AWS IoT资源,应查看 步骤 2:使用 AWS IoT Device Client 构建演示后清理您的 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 IoTDevice Client 可能不适用。

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

步骤 2:使用 AWS IoT Device Client 构建演示后清理您的 AWS 账户

这些过程可以帮助您识别和删除您在完成此学习路径中的教程时创建的 AWS资源。

清理 AWS IoT资源

此过程可以帮助您识别并删除您在完成此学习路径中的教程时创建的 AWS IoT资源。

在此学习路径中创建的 AWS IoT资源
教程 事物资源 策略资源

教程:安装和配置 AWS IoT Device Client

DevclitestTthing

PubSubTestThingPolicy

教程:演示与 AWS IoT 设备客户端的MQTT消息通信

PubSubTestThing

PubSubTestThingPolicy

教程:使用 AWS IoT Device Client 演示远程操作(任务)

定义的用户(可能有不止一个)

定义的用户(可能有不止一个)

要删除 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. certificate_ID替换为上一个命令中的证书 ID。证书ID是上一个命令返回的 ARN 中遵循 cert/的字母数字字符。然后运行此命令以停用证书。

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

      如果成功,该命令不返回任何内容。

    2. certificate_ARN替换为之前返回的证书列表中的证书 ARN,然后运行此命令列出附加到此证书的策略。

      aws iot list-attached-policies --target certificate_ARN

      此命令返回类似这样的响应,其中列出了附加到证书的策略。在大多数情况下,列表中只有一个策略。

      { "policies": [ { "policyName": "DevCliTestThingPolicy", "policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/DevCliTestThingPolicy" } ] }
    3. 对于附加到该证书的每个策略。

      1. policy_name替换为上一个命令中的 policyName值,将 certificate_ARN替换为证书的 ARN,然后运行此命令将策略与证书分离。

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

        如果成功,该命令不返回任何内容。

      2. policy_name替换为 policyName值,然后运行此命令查看策略是否附加到其他证书。

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

        如果该命令返回这样的空列表,该策略不会附加到任何证书,您将继续列出策略版本。如果还有附加到策略的证书,请继续 detach-thing-principal步骤。

        { "targets": [] }
      3. policy_name替换为 policyName值,然后运行此命令检查策略版本。要删除策略,它必须只有一个版本。

        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" } ] }

        如果策略有多个版本,如本例所示,则必须先删除 false值为 isDefaultVersion的策略版本,然后才能删除策略。

        { "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" } ] }

        如果您需要删除策略版本,将 policy_name替换为 policyName值,将 version_ID替换为来自上一个命令的 versionId值,然后运行此命令删除策略版本。

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

        如果成功,该命令不返回任何内容。

        删除策略版本后,请重复此步骤,直到该策略只有一个策略版本。

      4. policy_name替换为 policyName值,然后运行此命令删除策略。

        aws iot delete-policy --policy-name policy_name
    4. thing_name替换为事物名称,将 certificate_ARN替换为证书的 ARN,然后运行此命令将证书与事物资源分离。

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

      如果成功,该命令不返回任何内容。

    5. certificate_ID替换为上一个命令中的证书 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 Device Client 演示远程操作(任务)

Amazon S3 对象 hello-world-job.json

教程:使用 AWS IoT Device Client 演示远程操作(任务)

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资源和对象,您可以重新开始并重复教程。