大柳です。
前回のAWS IoT記事ではどんなデバイスが使えるかを調べてみました。
AWS IoTを始めよう -使えるIoT機材を探す-
早速デバイスとAWS IoTを連携させたいところですが、前回記事で調べたようにデバイス側で未対応のケースもあるため、まずはAWS IoTとWindows PCでMQTT通信を行い、AWS IoTの設定方法を理解するところから始めていきます。
ゴール
AWS IoTとWindows PC上のMQTTクライアントで、MQTT接続してメッセージのPublish/Subscribe(送信/受信)を行います。
通信は、MQTTのクライアント認証(X509証明書+TLS1.2)で行い、設定はCLIを使わずにマネジメントコンソールで作業を行います。PC側のクライアントはMQTT.fxを利用します。
今回の記事ではAWS IoT側の設定を行います。
AWS IoT側での設定項目
今回、設定を行う項目を説明します。
なお、AWS IoTの機能概要は以下の記事が詳しいです。
AWS IoTについて簡単にまとめてみた
Thing(モノ)
管理したいデバイスやセンサーをThing(モノ)として登録します。
MQTTでPub/Subするだけなら設定は不要なので今回は登録しません。
モノには属性(Attributes)を任意に登録することができ、シリアル番号やファームウェアバージョンの管理に利用できます。またShadowというデバイスの状態を管理するための機能もThingに設定可能です。
MQTT クライアントIDをThingの名前とすることがAWSドキュメントでは推奨されています。
https://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/iot-thing-management.html
Certificate(証明書)
モノを認証するための証明書です。デフォルトではX.509証明書が作成できます。ThingやPolicyはこの証明書に紐づけて管理されます。証明書を起点にしてPolicyとThingが紐づくのは違和感があって、作業中にどこで設定するのかに迷いました。
Policy(ポリシー)
モノに対してどの操作を許可するかを管理します。
以下のアクションとリソースに対して許可/不許可を設定できます。
アクション | リソース |
---|---|
iot:DeleteThingShadow | モノのARN |
iot:Connect | クライアントIDのARN |
iot:Publish | トピックのARN |
iot:Subscribe | トピックフィルターのARN |
iot:Receive | トピックのARN |
iot:UpdateThingShadow | モノのARN |
iot:GetThingShadow | モノのARN |
http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/authorization.html から引用
今回はテストなので、アクション(iot:*)、リソース(*)ともワイルドカード指定にして、制限はかけないでおきます。
エンドポイント
MQTTもしくはHTTPでAWS IoTにアクセスするためのエンドポイントは、AWSアカウントごとに1つ存在します。振り分けなどはMQTTのトピックを利用します。
AWS IoT側設定
全体的な設定の流れは、Certificateの作成→Policyの作成→CertificateへのPolicyの紐づけになります。
Thingを利用する場合は、Thingの作成、CertificateへThingを紐づける作業が追加になります。
では、マネジメントコンソールからAWS IoTの設定を行います。
AWS IoTへのアクセス
AWS IoTを選択します。
Certificateの作成
左のサイドバーから[Security] → [Certificates] を選択して、[Create a certificate]ボタンを選択します。
今回はAWS IoTで生成できる証明書を利用します。[Create certificate]ボタンを選択すると証明書が作成されます。
作成した証明書が表示されます。
A certificate for this thing(サーバ証明書)、A public key(公開鍵)、A private key(秘密鍵)をローカルにダウンロードします。ダウンロードは作成時にしかできないので、ダウンロードを忘れた場合は、Certificateを削除してから、再作成しましょう。rootCAもダウンロードしておきます。
すべてダウンロードしたら、[Activate]ボタンをクリックして証明書を有効化します。
次にポリシーを作成します。[Attach policy]をクリックします。
ポリシーの作成
ポリシーが未作成ですので既存のポリシーはありません。
[Create new policy]を選択して、新たにポリシーを作成します。
ポリシー名(Name)、Action、Resource ARNを画面のように入力し、EffectはAllow(許可)を選択します。
今回はテスト用に作成するので全許容の設定にしています。[Create]ボタンを選択します。
ポリシーが作成されました。json形式で設定内容が確認できます。
証明書にポリシーを紐づけ(アタッチ)
次に証明書に作成したポリシーを紐づけます。
左のサイドバーから[Security] → [Certificates] を選択して、紐づけたい証明書を選択します。
右上のActionsメニューから[Attach policy]を選択します。
紐づけるポリシーにチェックをして[Attach]を選択すると、証明書とポリシーの紐づけは完了です。
証明書を選択して[Policies]を表示させるとポリシーが紐づけされていることが確認できます。
エンドポイントの確認
最後にエンドポイントを確認します。
左のサイドバーから[Settings]を選択すると、エンドポイントが確認できます。
エンドポイントは以下のような形式で、ユーザ固有のIDとリージョンから構成されます。
abcdefg123hijk.iot.ap-northeast-1.amazonaws.com
まとめ
AWS IoT側の設定はこれで終わりです。マネジメントコンソール上から簡単に設定することができました。特に証明書の発行、取得もマネジメントコンソールで完結し、CLIを使う必要がなく本当に簡単でした。
次回はMQTTクライアントを設定してAWS IoTに接続してみます。
次回記事
AWS IoTを始めよう -MQTTの設定(MQTT.fx編)-
次回もお楽しみに。