Raspberry Pi の Node-RED から AWS IoT に MQTT でデータを送信する設定手順

2026年6月5日

Raspberry Pi で収集したセンサーデータをクラウドに送りたい——そう考えたとき、Node-REDAWS IoT の組み合わせは最有力の選択肢です。Node-RED のフローベース UI で MQTT 送信のロジックを組み、AWS IoT に証明書認証で接続するまでの手順を解説します。IoT システムの入門として、同じ構成を検討している方にも役立つ内容です。

Node-RED と MQTT の基礎知識

Node-RED は JavaScript(Node.js)をフローベースで記述できるビジュアルエディタです。ノードを線でつなぐだけで処理を組み立てられるため、センサーデータの取得・加工・送信をコード量少なく実装できます。

MQTT は軽量なパブリッシュ/サブスクライブ型の通信プロトコルです。IoT デバイスのように帯域やリソースが限られた環境に適しており、AWS IoT Core の主要な通信プロトコルとして採用されています。

Node-RED のフローエディタ画面

AWS IoT の設定手順

1. 証明書の発行

課題:AWS IoT への接続には X.509 証明書による相互 TLS 認証が必要です。
解決策:AWS IoT コンソールの「1-Click 証明書作成」で証明書・キーを一括発行します。

AWS マネジメントコンソールで AWS IoT を開き、左メニューの「セキュリティ」→「証明書」をクリックします。

AWS IoT の証明書メニュー

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

1-Click 証明書作成の選択画面

証明書・キーを必ずすべてダウンロードしてください。この画面を閉じると再取得できません。

  • XXXXXXXXXX-certificate.pem.crt … デバイス証明書
  • XXXXXXXXXX-private.pem.key … 秘密鍵
  • XXXXXXXXXX-public.pem.key … 公開鍵

加えて、ルート CA(AmazonRootCA1.pem) も AWS のドキュメントページからダウンロードしておきます。

ダウンロード後、「有効化」→「ポリシーのアタッチ」をクリックします。

証明書の有効化とポリシーのアタッチ

2. ポリシーの作成とアタッチ

「新規ポリシーの作成」をクリックし、以下の設定でポリシーを作成します。

  • アクション:iot:*
  • リソース ARN:*
IoT ポリシーの設定画面(アクション: iot:*, リソースARN: *)

ポリシー作成後、証明書の画面に戻り「アクション」→「ポリシーのアタッチ」で作成したポリシーを紐付けます。

3. MQTT エンドポイントの確認

AWS IoT の左メニューから「設定」を開くと、MQTT の接続先エンドポイントが表示されます。このアドレスを Node-RED の設定で使用します。

AWS IoT の MQTT エンドポイント確認画面

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
Node-RED のフローエディタ起動後の画面

2. 3 つのノードで MQTT 送信フローを組む

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

Inject → Function → mqtt out の 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;
Function ノードの設定例(JSON ペイロードの作成)

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
TLS 設定で証明書・秘密鍵・CA 証明書を指定する画面

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

mqtt out ノードに「接続済」が表示された状態

動作確認:AWS IoT テストクライアントで受信を確認する

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

MQTT テストクライアントでトピックをサブスクライブする画面

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

AWS IoT テストクライアントで Raspberry Pi からのデータを受信した画面

まとめ: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 サービスとの連携をスムーズに拡張できます。