Raspberry Pi の Node-RED から AWS IoT に MQTT でデータを送信する設定手順
Raspberry Pi で収集したセンサーデータをクラウドに送りたい——そう考えたとき、Node-RED と AWS IoT の組み合わせは最有力の選択肢です。Node-RED のフローベース UI で MQTT 送信のロジックを組み、AWS IoT に証明書認証で接続するまでの手順を解説します。IoT システムの入門として、同じ構成を検討している方にも役立つ内容です。
目次
Node-RED と MQTT の基礎知識
Node-RED は JavaScript(Node.js)をフローベースで記述できるビジュアルエディタです。ノードを線でつなぐだけで処理を組み立てられるため、センサーデータの取得・加工・送信をコード量少なく実装できます。
MQTT は軽量なパブリッシュ/サブスクライブ型の通信プロトコルです。IoT デバイスのように帯域やリソースが限られた環境に適しており、AWS IoT Core の主要な通信プロトコルとして採用されています。

AWS IoT の設定手順
1. 証明書の発行
課題:AWS IoT への接続には X.509 証明書による相互 TLS 認証が必要です。
解決策:AWS IoT コンソールの「1-Click 証明書作成」で証明書・キーを一括発行します。
AWS マネジメントコンソールで AWS IoT を開き、左メニューの「セキュリティ」→「証明書」をクリックします。

画面右上の「作成」ボタンをクリックし、「1-Click 証明書作成」を選択します。

証明書・キーを必ずすべてダウンロードしてください。この画面を閉じると再取得できません。
- XXXXXXXXXX-certificate.pem.crt … デバイス証明書
- XXXXXXXXXX-private.pem.key … 秘密鍵
- XXXXXXXXXX-public.pem.key … 公開鍵
加えて、ルート CA(AmazonRootCA1.pem) も AWS のドキュメントページからダウンロードしておきます。
ダウンロード後、「有効化」→「ポリシーのアタッチ」をクリックします。

2. ポリシーの作成とアタッチ
「新規ポリシーの作成」をクリックし、以下の設定でポリシーを作成します。
- アクション:
iot:* - リソース ARN:
*

ポリシー作成後、証明書の画面に戻り「アクション」→「ポリシーのアタッチ」で作成したポリシーを紐付けます。
3. MQTT エンドポイントの確認
AWS IoT の左メニューから「設定」を開くと、MQTT の接続先エンドポイントが表示されます。このアドレスを Node-RED の設定で使用します。

Raspberry Pi(Node-RED)のフロー設定
1. Node-RED の起動
Raspberry Pi OS(Raspbian)には Node-RED がデフォルトでインストールされています。以下のコマンドで起動し、ブラウザで http://<ラズパイのホスト名>.local:1880/ にアクセスします。
sudo systemctl enable nodered.service
sudo systemctl start nodered

2. 3 つのノードで MQTT 送信フローを組む
MQTT でデータを送信するフローに必要なノードは以下の 3 つです。

- Inject(タイムスタンプ): 送信トリガー。一定間隔または手動で起動します
- Function(create payload): AWS IoT に送るペイロードを JavaScript で生成します
- mqtt out: AWS IoT の MQTT ブローカーにデータを送信します
3. Function ノードのペイロード設定
以下は色情報と温度を JSON で送信するサンプルです。msg.payload にオブジェクトを代入してから return msg します。
msg.payload = {
color: "red",
temperature: 100
};
return msg;

4. mqtt out ノードの TLS 設定
課題:AWS IoT への接続は TLS 相互認証が必須で、証明書ファイルのパスを正確に設定する必要があります。
解決策:mqtt out ノードのサーバー設定でエンドポイントと証明書を指定します。
mqtt out ノードを開き、「サーバ」欄の鉛筆アイコンをクリックして以下を設定します。
- サーバ:AWS IoT のエンドポイント(例:
xxxxxxxxxxxx.iot.ap-northeast-1.amazonaws.com) - ポート:8883
続けて「TLS 設定」の鉛筆アイコンを開き、各証明書ファイルを設定します。
- 証明書:
XXXXXXXXXX-certificate.pem.crt - 秘密鍵:
XXXXXXXXXX-private.pem.key - CA 証明書:
AmazonRootCA1.pem

設定が正しく完了すると、mqtt out ノードの下に「接続済」と表示されます。

動作確認:AWS IoT テストクライアントで受信を確認する
AWS IoT コンソールの左メニューから「テスト」→「MQTT テストクライアント」を開き、Node-RED で設定したトピック名(例: myTopic/mqtt)をサブスクライブします。

Node-RED の Inject ノード左のボタンをクリックしてデータを送信すると、AWS IoT のテスト画面に JSON ペイロードが表示されます。

まとめ:Node-RED + AWS IoT で IoT データ送信を最短で構築できる理由
今回の記事で紹介した構成のポイントをまとめます。
- Node-RED のフロー UI で MQTT 送信ロジックをコーディング最小で実装できる
- AWS IoT の 1-Click 証明書作成で X.509 証明書を素早く発行できる
- mqtt out ノードの TLS 設定で証明書認証の接続を簡単に構成できる
- AWS IoT テストクライアントで接続と受信をすぐに検証できる
この構成を基盤にすることで、Raspberry Pi に接続したセンサーのデータを AWS IoT Rules Engine 経由で DynamoDB や S3 に保存したり、Lambda で処理したりと、AWS サービスとの連携をスムーズに拡張できます。







ディスカッション
コメント一覧
とても分かりやすかったです。ありがとうございます:)
moui-san,
本当ですか!お役に立てたようで良かったです!
何かありましたら是非ご相談下さいね。