AWS IoT Coreとの連携

お客様で用意していただいたAWS IoT Coreのインスタンスに、sakura.ioがクライアント(Publisher/Subscriber)として接続しにいくことでモジュールとのデータ送受信を可能にします。

AWS IoT 連携サービスの作成

連携サービスの追加を行いたいプロジェクトの 詳細 ボタンをクリックします。

プロジェクトの詳細ボタンをクリックして、プロジェクトの設定を開始します。

プロジェクトの詳細ページ内の 連携サービス をクリックします。連携サービス一覧表示に切り替わるので、右端の 連携サービス追加 をクリックします。

連携サービスを追加

連携サービスの選択画面で AWS IoT をクリックします。

createawsiot1

以下の項目を入力し、 作成 ボタンをクリックします。

項目 入力内容
名前 任意
ホスト名 AWS IoT Core側のホスト名 => カスタムエンドポイントの取得
ポート番号 8883を入力
PublishするTopicのプレフィックス sakura.ioがメッセージをPublishするトピックを指定
SubscribeするTopic sakura.ioがメッセージをSubscribeするトピックを指定
TLS AWS IoT Coreのコンソール上で取得したルート証明書、クライアント証明書、クライアント秘密鍵を入力 => 証明書の作成
createawsiot2 createawsiot3

注意事項

  • AWS IoT連携サービスではTLSの設定は必須です。 利用するルート証明書、クライアント証明書、クライアント秘密鍵は別途AWS IoT Coreのコンソールで取得してください。 また、Amazon Trust Serviceが署名した証明書を使用する場合には、 Amazon ルート CA 1 のルート証明書を使用してください。 詳しくは以下のリンクを参照してください。

  • Publishは 指定したトピック/モジュールID というトピックに行われます。

  • PublishおよびSubscribeはQoS Lv0で行われます。

  • Publish先トピックとSubscribe先トピックの重複は許可されません。

    • 許可されない例:Publishプレフィックス sakura/hoge/ 、Subscribeトピック sakura/hoge/
  • Subscribe先トピック名にワイルドカードはご利用いただけません。

    • 許可されない例:Subscribeトピック sakura/hoge/#

AWS IoT 連携サービスの設定変更

作成後の AWS IoT の連携サービス名称や各種パラメータは変更が可能です。

各プロジェクト内の AWS IoT 連携サービスをクリックします。

連携サービスの詳細画面が表示されるので、修正したい項目を入力し、 保存 ボタンをクリックします。

AWS IoT Coreの設定について

連携サービスの作成前にAWS IoT Coreのコンソールを用いて モノ に関する設定を行う必要があります。 以下では連携サービス作成画面で入力を求められる項目ごとに解説を行います。

ポリシーの作成

モノに割り当てる証明書を作成する前に、モノに割り当てるためのポリシーを作成しておきます。

ポリシーについては、以下を参考にして適切に設定してください。

注釈

  • アクション: iot:*
  • リソース ARN: *
  • 効果: 許可 にチェック
awscreatepolicy

カスタムエンドポイントの取得

カスタムエンドポイントはAWS IoT連携サービスの接続先ホスト名として使用します。

AWS IoT Coreのコンソール内 「設定 / Setting」の項目から下記のように参照出来ます。

awsendpoint

証明書の作成

「1-Click 証明書作成 / One-click certificate creation」を用いて証明書を作成できます。

awsoneclick

「有効化 / Activate」で証明書を有効にします。

awsdeactivated

証明書を有効にしたら、証明書とプライベートキーのダウンロードを行います。

awsactivated

上記図中①で示したダウンロードリンクをクリックし、証明書( ******-certificate.pem.crt )とプライベートキー( ******-private.pem.key )をダウンロードします。 パブリックキーをダウンロードする必要はありません。

次に、ルート証明書をダウンロードします。 AWS IoT連携サービスで使用するルート証明書は VeriSign-Class 3-Public-Primary-Certification-Authority-G5.pem または AmazonRootCA1.pem のどちらかであり、AWS IoT Coreコンソール上で証明書を作成した時期によりどちらを使用するか異なります。 詳しくは AWS IoT Core がお客様に提供する Symantec の認証局無効化の対応方法 | Amazon Web Services ブログ を参照してください。

なお、Amazon Trust Serviceが署名した証明書を使用する場合には、 Amazon ルート CA 1 のルート証明書を使用してください。

sakura.io コントロールパネルでの連携サービス作成時に、以下の通りにダウンロードしたファイルの内容をコピーして貼り付けてください。

注釈

  • VeriSign-Class 3-Public-Primary-Certification-Authority-G5.pem または AmazonRootCA1.pem は、「ルート証明書(PEM 形式)」のフォームにペーストします。
  • ******-certificate.pem.crt は、「クライアント証明書(PEM 形式)」のフォームにペーストします。
  • ******-private.pem.key は、「クライアント秘密鍵(PEM形式)」のフォームにペーストします。

ポリシーのアタッチ

ポリシーの作成 で事前に作成しておいたポリシーをモノにアタッチします。

awsapplypolicy

アタッチしておかないと、sakura.io側から接続した際に接続拒否されてしまい、sakura.ioコントロールパネルで表示される接続ステータスが error となります。

errorとなってしまった場合、ポリシーを適切に割り当てた後、AWS IoT連携サービスの名称を変更するなど再設定を行うと再接続することができます。

メッセージの疎通を確認

上記で設定した AWS IoT Core / sakura.io の連携サービスの設定から疎通を確認します。

  1. サンプルとして下記のようなトピックを設定した連携サービスを用意します。
sampleservice
項目 設定内容
Publishするトピック sample/pub
Subscriptするトピック sample/sub
  1. お客様の sakura.io 通信モジュールからメッセージを送信します。

注釈

  • AWS IoT Core 側にトピックを設定したタイミングからメッセージが確認が可能なので、1メッセージずつ送信するのでなく、ループ処理などで常にメッセージを送信し続けるとより確認が容易です。
  1. AWS IoT Core のテストを開きます。
iotcoretest

4. 「トピックへサブスクライブする」から トピックのサブスクリプションに先程設定した sample/pub の末尾に、ワイルドカードの /# を結合した sample/pub/# を入力して「トピックへのサブスクライブ」をクリックします。

iotcoretest

5. 通信モジュールから送信されたメッセージが 「sample/pub/{通信モジュールのID}」というトピックへパブリッシュされていることが確認できます。

iotcoretest