

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# チュートリアル: AWS IoT Device Client チュートリアルの実行後のクリーンアップ
<a name="iot-dc-cleanup"></a>

このチュートリアルの手順では、このラーニングパスのチュートリアルを完了するまでに作成したファイルとリソースを削除する手順を説明します。

**Topics**
+ [ステップ 1: Device Client でデモを構築した後で AWS IoT デバイスをクリーンアップする](#iot-dc-cleanup-devices)
+ [ステップ 2: AWS IoT Device Client でデモを構築 AWS アカウント した後で をクリーンアップする](#iot-dc-cleanup-cloud)

## ステップ 1: Device Client でデモを構築した後で AWS IoT デバイスをクリーンアップする
<a name="iot-dc-cleanup-devices"></a>

このチュートリアルでは、このラーニングパスでデモを作成した後に microSD カードをクリーンアップする方法の 2 つのオプションについて説明します。必要なセキュリティレベルを提供するオプションを選択します。

デバイスの microSD カードをクリーニングしても、作成した AWS IoT リソースは削除されないことに注意してください。デバイスの microSD カードをクリーンアップした後に AWS IoT リソースをクリーンアップするには、「」のチュートリアルを確認してください[ステップ 2: AWS IoT Device Client でデモを構築 AWS アカウント した後で をクリーンアップする](#iot-dc-cleanup-cloud)。

### オプション 1: microSD カードを書き換えてクリーンアップする
<a name="iot-dc-cleanup-devices-flash"></a>

このラーニングパスのチュートリアルを完了した後、microSD カードをクリーニングする最も簡単で徹底的な方法は、デバイスの最初の準備時に作成して保存しておいたイメージファイルで microSD カードを上書きすることです。

この手順では、ローカルホストコンピュータを使用して、保存された microSD カードイメージを microSD カードに書き込みます。

**注記**  
デバイスがオペレーティングシステムにリムーバブルストレージメディアを使用していない場合は、そのデバイスの手順を参照してください。

**microSD カードに新しいイメージを書き込むには**

1. ローカルホストコンピュータで、microSD カードに書き込む保存した microSD カードイメージを見つけます。

1. microSD カードをローカルホストコンピュータに挿入します。

1. SD カードイメージングツールを使用して、選択したイメージファイルを microSD カードに書き込みます。

1. Raspberry Pi OS イメージを microSD カードに書き込んだ後、microSD カードを取り出し、ローカルホストコンピュータから安全に取り外します。

microSD カードは使用可能になっています。

### オプション 2: ユーザーディレクトリを削除してクリーンアップする
<a name="iot-dc-cleanup-devices-dirs"></a>

チュートリアルを完了した後、microSD カードのイメージを書き換えずに microSD カードをクリーニングするには、ユーザーディレクトリを個別に削除します。この方法では、システムファイルがインストールされている場合、そのファイルは削除されないため、保存されたイメージで microSD カードを書き換える方法ほど徹底的ではありません。

必要性に対して、ユーザーディレクトリが十分に削除されるならば、この手順に従うことができます。

**このラーニングパスのユーザーディレクトリをデバイスから削除するには**

1. 次のコマンドを実行して、デバイスに接続されたターミナルウィンドウで、このラーニングパスで作成されたユーザーディレクトリ、サブディレクトリ、およびそのすべてのファイルを削除します。
**注記**  
これらのディレクトリとファイルを削除すると、チュートリアルを再度完了しないとデモを実行できなくなります。

   ```
   rm -Rf ~/dc-configs
   rm -Rf ~/policies
   rm -Rf ~/messages
   rm -Rf ~/certs
   rm -Rf ~/.aws-iot-device-client
   ```

1. 次のコマンドを実行して、デバイスに接続されているターミナルウィンドウで、アプリケーションのソースディレクトリとファイルを削除します。
**注記**  
これらのコマンドはプログラムをアンインストールしません。プログラムのビルドとインストールに使用されたソースファイルのみを削除します。これらのファイルを削除すると、 AWS CLI と AWS IoT Device Client が機能しない場合があります。

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

## ステップ 2: AWS IoT Device Client でデモを構築 AWS アカウント した後で をクリーンアップする
<a name="iot-dc-cleanup-cloud"></a>

これらの手順は、このラーニングパスのチュートリアルを完了する際に作成した AWS リソースを特定して削除するのに役立ちます。

### AWS IoT リソースをクリーンアップする
<a name="iot-dc-cleanup-cloud-iot"></a>

この手順は、このラーニングパスのチュートリアルを完了する際に作成した AWS IoT リソースを特定して削除するのに役立ちます。


**AWS IoT このラーニングパスで作成された リソース**  

| チュートリアル | モノのリソース | ポリシーリソース | 
| --- | --- | --- | 
|  [チュートリアル: AWS IoT Device Client のインストールと設定](iot-dc-install-dc.md)  |  **DevCliTestThing**  | DevCliTestThingPolicy | 
|  [チュートリアル: AWS IoT Device Client との MQTT メッセージ通信のデモンストレーション](iot-dc-testconn.md)  |  **PubSubTestThing**  | PubSubTestThingPolicy | 
|  [チュートリアル: AWS IoT Device Client を使用したリモートアクション (ジョブ) のデモンストレーション](iot-dc-runjobs.md)  | ユーザー定義 (複数ある可能性があります) |  *ユーザー定義* (複数ある可能性があります)  | 

**AWS IoT リソースを削除するには、作成したモノのリソースごとに以下の手順に従います。**

1. `thing_name` を削除するモノのリソースの名前に置き換えてから、次のコマンドを実行して、ローカルホストコンピュータからモノのリソースにアタッチされた証明書を一覧表示します。

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

   このコマンドは、`thing_name` にアタッチされている証明書を一覧表示するこのようなレスポンスを返します。ほとんどの場合、リストに含まれる証明書は 1 つだけです。

   ```
   {
       "principals": [
           "arn:aws:iot:us-west-2:57EXAMPLE833:cert/23853eea3cf0edc7f8a69c74abeafa27b2b52823cab5b3e156295e94b26ae8ac"
       ]
   }
   ```

1. 前のコマンドでリストされた各証明書について、次の手順を実行します。

   1. `certificate_ID` を前のコマンドの証明書 ID に置き換えます。証明書 ID は、前のコマンドで返された ARN で `cert/` の後に続く英数字です。次に、次のコマンドを実行して、証明書を無効にします。

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

      成功すると、このコマンドは何も返しません。

   1. `certificate_ARN` を以前に返された証明書のリストの証明書 ARN に置き換えてから、次のコマンドを実行して、この証明書にアタッチされたポリシーを一覧表示します。

      ```
      aws iot list-attached-policies --target certificate_ARN
      ```

      このコマンドは、証明書にアタッチされたポリシーを一覧表示するこのようなレスポンスを返します。ほとんどの場合、リストにはポリシーが 1 つしかありません。

      ```
      {
          "policies": [
              {
                  "policyName": "DevCliTestThingPolicy",
                  "policyArn": "arn:aws:iot:us-west-2:57EXAMPLE833:policy/DevCliTestThingPolicy"
              }
          ]
      }
      ```

   1. 証明書にアタッチされた各ポリシーについて、次の手順を実行します。

      1. `policy_name` を 前のコマンドの `policyName` の値に置き換え、`certificate_ARN` を証明書の ARN に置き換えてから、次のコマンドを実行して、証明書からポリシーをデタッチします。

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

         成功すると、このコマンドは何も返しません。

      1. `policy_name` を `policyName` の値に置き換えてから、次のコマンドを実行して、ポリシーがその他の証明書にアタッチされているかどうかを確認します。

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

         コマンドがこのような空のリストを返す場合、ポリシーはどの証明書にもアタッチされていません。その場合、ポリシーのバージョンを一覧表示します。ポリシーにまだ証明書が添付されている場合は、**detach-thing-principal** ステップに進みます。

         ```
         {
             "targets": []
         }
         ```

      1. `policy_name` を `policyName` の値に置き換えてから、次のコマンドを実行してポリシーのバージョンを確認します。ポリシーを削除するには、ポリシーのバージョンが 1 つだけであることが必要です。

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

         次の例のように、ポリシーにバージョンが 1 つしかない場合は、スキップして **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"
                 }
             ]
         }
         ```

         ポリシーバージョンを削除する必要がある場合は、`policy_name` を `policyName` の値に置き換え、`version_ID` を前のコマンドの `versionId` の値に置き換えてから、次のコマンドを実行してポリシーバージョンを削除します。

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

         成功すると、このコマンドは何も返しません。

         ポリシーバージョンを 1 つ削除した後、ポリシーのポリシーバージョンが 1 つになるまで、このステップを繰り返します。

      1. `policy_name` を `policyName` の値に置き換えてから、次のコマンドを実行してポリシーを削除します。

         ```
         aws iot delete-policy --policy-name policy_name
         ```

   1. `thing_name` をモノの名前に置き換え、`certificate_ARN` を証明書の ARN に置き換えてから、次のコマンドを実行してモノのリソースから証明書をデタッチします。

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

      成功すると、このコマンドは何も返しません。

   1. `certificate_ID` を前のコマンドの証明書 ID に置き換えます。証明書 ID は、前のコマンドで返された ARN で `cert/` の後に続く英数字です。次に、次のコマンドを実行して、証明書リソースを削除します。

      ```
      aws iot delete-certificate --certificate-id certificate_ID
      ```

      成功すると、このコマンドは何も返しません。

1. `thing_name` をモノの名前に置き換えて、次のコマンドを実行してモノを削除します。

   ```
   aws iot delete-thing --thing-name thing_name
   ```

   成功すると、このコマンドは何も返しません。

### AWS リソースをクリーンアップする
<a name="iot-dc-cleanup-cloud-aws"></a>

この手順は、このラーニングパスのチュートリアルを完了する際に作成した他の AWS リソースを特定して削除するのに役立ちます。


**このラーニングパスで作成されたその他の AWS リソース**  

| チュートリアル | リソースタイプ | リソース名または ID | 
| --- | --- | --- | 
|  [チュートリアル: AWS IoT Device Client を使用したリモートアクション (ジョブ) のデモンストレーション](iot-dc-runjobs.md)  | Amazon S3 オブジェクト | hello-world-job.json | 
|  [チュートリアル: AWS IoT Device Client を使用したリモートアクション (ジョブ) のデモンストレーション](iot-dc-runjobs.md)  |  AWS IoT ジョブリソース  | ユーザー定義 | 

**このラーニングパスで作成された AWS リソースを削除するには**

1. このラーニングパスで作成されたジョブを削除するには

   1. このコマンドを実行して、 のジョブを一覧表示します AWS アカウント。

      ```
      aws iot list-jobs
      ```

      コマンドは、 AWS アカウント および 内の AWS IoT ジョブのリストを返します AWS リージョン 。

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

   1. このラーニングパスで作成したジョブとしてリストから認識したジョブごとに、 を削除するジョブ`jobId`の値`jobId`に置き換え、このコマンドを実行して AWS IoT ジョブを削除します。

      ```
      aws iot delete-job --job-id jobId
      ```

      コマンドが正常に終了すると、何も返しません。

1. このラーニングパスの 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"
                  }
              }
          ]
      }
      ```

   1. このラーニングパスで作成したオブジェクトとしてリストから認識したオブジェクトごとに、`bucket` をバケット名に置き換え、`key` を削除するオブジェクトのキー値に置き換えてから、次のコマンドを実行して Amazon S3 オブジェクトを削除します。

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

      コマンドが正常に終了すると、何も返しません。

このラーニングパスの完了時に作成したすべての AWS リソースとオブジェクトを削除したら、チュートリアルを最初からやり直すことができます。