AWSアカウントのセットアップ
AWSの各サービスを利用するためには、無料のアカウント登録を行います。事前に支払いのためのクレジットカードと認証のための電話を準備しましょう。具体的な手順は次のページを参照してください。
AWS アカウント作成の流れ|アマゾン ウェブ サービス(AWS日本語)
また今回は、日本国内では最寄りのリージョンとなる「AWS東京リージョン」を利用します。また、AWSを継続して利用する場合は、セキュリティ対策としてIAMユーザー(制限ユーザー)の利用とMFA(多要素認証)の設定をお奨めします。
Amazon DynamoDBのセットアップ
Amazon DynamoDBは、AWS独自のNoSQLデータベースのマネージドサービスです。拡張性の高さが特徴で、扱うデータが増えた場合にも容易に対応できます。今回はセンサーデータを保存するためのテーブルをAmazon DynamoDB(以下、DynamoDB)作成します。
DynamoDBのWeb管理画面にアクセスして、「東京リージョン」を選択し、[Create Table(テーブルの作成)]ボタンをクリックします。
[テーブル名]に「iot_light」、[パーティションキー]に「id」、データ型は既定値(文字列)のまま、[ソートキーの追加]のチェックをオンにします。するとテキストボックスが追加されるので、そこに「date」と入力し、データ型は既定値(文字列)のままにします。DynamoDBでは、テーブル作成時にキー以外のカラムを設定する必要はありません。
テーブル設定は[デフォルト設定の使用]にチェックが入っていることを確認し、[作成]をクリックしてテーブルを作成します。
しばらく待ち、作成中の表示が消えれば作成完了です。
AWS IoTのセットアップ
AWS IoTは、IoTデバイスのバックエンドを提供するマネージドサービスです。今回はRaspberry Piから送信されるセンサーデータを受信し、DynamoDBに保存する処理をAWS IoTで行います。
AWS IoTのWeb管理画面にアクセスし、[Get started]をクリックします。
デバイス作成画面では、任意のデバイス名を入力し、[Create]をクリックしてデバイスを作成します。なお、AWS IoTではデバイスのことをthingと呼びます。今回はデバイス(thing)名を「sensor1」としました。
デバイスsensor1が作成されたので、[View thing]をクリックしてプロパティを表示します。
右下の[Connect a device]をクリックします。
AWS IoTにデータを送信するためのプロトコルには、HTTPSとMQTTの2つが利用できます。今回はMQTTを使用します。MQTTを使用するためには、X509証明書とポリシーを作成する必要があります。また、AWS IoTに接続するデバイスでは、AWS IoT Device SDKという専用のSDKを利用することができますが、今回は汎用のMQTTライブラリを利用します。任意のSDK(今回は「NodeJS」)を選択し、[Generate Certificate and Policy]をクリックします。
作成された3つのX509証明書ファイルをダウンロードします。[Download Public Key]、[Download Private Key]、[Download Certificate]の3つのリンクをクリックすると、それぞれのファイルをダウンロードできます。ダウンロードが終わったら[Confirm and Start Connecting]をクリックします。
AWS IoT Node.js SDKでのコード例が表示されますが、今回は汎用のMQTT Node.jsモジュールを利用するため、このコードは使用しません。ただし、SORACOM BeamでAWS IoTの接続ホスト名を設定するため、host
の値をどこかにコピーしておきましょう。それから[Return to Thing Detail]をクリックします。
続いて、メッセージの転送ルールを作成します。転送ルールでは、SQLのようなクエリ構文で、転送する条件や転送データの加工が可能です。詳細はAWS IoTのドキュメントを参照してください。[Create a Rule]をクリックします。
[Name]には任意のルール名(今回は「rule1」)を入力します。
[Rule Query Statement]は自動入力されるのでそのままにし、[Attribute](転送する属性)には「*」、[Topic Filter](対象トピック)は「topic/grove」(ラズパイのコードに合わせる)、[Condition](転送する条件)は空のまま、[Choose an action]は「Insert message into a database table(DynamoDB)」を選択します。
[Table Name]は、先ほど作成したDynamoDBテーブル「iot_light」を選択し、[Hash Key Value]には「${id}」、[Range Key Value]には「${date}」を入力して、[Create a new role]リンクをクリックします。
AWS IoTからDynamoDBにアクセスするための権限追加画面が表示されるので、[許可]ボタンをクリックします。
元の画面に戻ると、[Role Name]に作成したIAMロールが設定されています。[Add Action]をクリックします。
DynamoDB Action(DynamoDBへの転送設定)が表示されるので、[Create]をクリックしてルールを作成します。
これでAWS IoTの設定は完了です!