AWS IoT CoreをRaspberry Piで使ってみた その2

## 概要
* AWSにはIoT機器と接続、管理するためのAWS IoT Coreというサービスがある
* 公式にもハンズオンがあるが、最小限の手順、構成で動作を確かめてみる  
https://aws-iot-core-for-beginners.workshop.aws/phase2/step2.html
* 前回に引き続きRaspberry Pi側のセットアップを進めていく

![aws-iot-core.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/5b2e455f-a8b2-e09b-ba52-9fdeb020073d.png)

前回の記事
https://qiita.com/cami_oshimo/items/2a09048203d5c6223246

![スクリーンショット 2021-09-06 9.25.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/7f69c617-e88f-0f18-16ab-e0871733f82c.png)


## Raspberry Piの操作
aws-iot-device-sdk-python をgit cloneする  
https://github.com/aws/aws-iot-device-sdk-python  

```
# git clone https://github.com/aws/aws-iot-device-sdk-python.git 
```
~/aws-iot-device-sdk-python/samples 配下に、AWS IoT Coreからダウンロードした  証明書ファイルを入れる

```
pi@raspberrypi:~/aws-iot-device-sdk-python/samples/certs $ ls
AmazonRootCA1.pem
abc012abc012abc012abc012abc012abc012abc012abc012abc-certificate.pem.crt
abc012abc012abc012abc012abc012abc012abc012abc012abc012abc012-private.pem.key

設定→デバイスデータエンドポイントを確認しておく
![スクリーンショット 2021-09-05 10.05.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/12d2e07b-0456-4499-b81a-06cdb0322437.png)
```

AWS IoT Coreの画面より、「安全性」→「ポリシー」→作成をクリックする
![スクリーンショット 2021-09-05 9.51.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/04676ccb-3198-dd30-b808-bf99d05ff761.png)

以下の通りポリシーを設定し、作成をクリックする

* 名前：（任意の名前）
* アクション：iot:*
* リソースARN：*
* 効果：許可
![スクリーンショット 2021-09-05 9.54.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/ac1fdce8-a6a7-af4b-ef5e-3da366c34c92.png)
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3730313434352f66333135353733322d343663312d623738642d356166352d3438363639303862393661612e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/c7baaf4e-32cb-1729-6461-b273e8879579.png)


ポリシーを、任意のグループに割り当て、モノにアタッチする。更に証明書にもアタッチしておく
![スクリーンショット 2021-09-05 10.14.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/89e20db7-c3b0-5076-7ad2-0a78cd942683.png)
![スクリーンショット 2021-09-05 10.15.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/92a8f981-c9b7-70c5-8199-f4055130a446.png)
![スクリーンショット 2021-09-05 10.25.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/d13195fb-960f-486e-4d5c-20e3c6dc4e07.png)

サンプルプログラムのbasicPubSub.pyを実行する

```
pi@raspberrypi:~/aws-iot-device-sdk-python/samples/basicPubSub $ python3 basicPubSub.py  --endpoint abc123abc123abc123-ats.iot.ap-northeast-1.amazonaws.com --rootCA ../certs/AmazonRootCA1.pem --cert ../certs/abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123-certificate.pem.crt --key  ../certs/abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123-private.pem.key
```
トピック sdk/test/Python にPublishされていることを確認する
![スクリーンショット 2021-09-05 10.26.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/270908ef-3ba2-dba3-25c9-425c0da98b62.png)

テスト→MQTTクライアントでJSON形式のデータが到着していることを確認する
![スクリーンショット 2021-09-05 10.27.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/e2a3b874-9725-345f-97a3-4b1d25a09138.png)

## 次回
* 温湿度センサーの値がIoT CoreにPublishされることを確認する