AWS IoT Greengrassは、AWS Lambdaや機械学習モデル、独自のコードを手元のエッジデバイス上で実行できる、オープンソースのエッジランタイムとクラウドサービスです。データをローカルで処理してからクラウドへ必要な分だけ送るため、通信量とレイテンシを抑え、ネットワークが不安定な現場でも止まりません。この記事では、現行のV2アーキテクチャと主な機能、料金(アクティブなCoreデバイス1台あたり月$0.16)、そして混同されやすいAWS IoT Coreとの違いを、公式仕様に沿って整理します。
まとめ:AWS IoT Greengrassの要点
- 正体:エッジデバイス側で動くランタイム。クラウドのAWS IoT Coreを土台に、ローカル実行・オフライン動作・遠隔デプロイを足すサービス。
- 現行版:2020年12月GAのV2が現行。モノリシックだったV1からコンポーネント型へ刷新。新規はV2を選ぶ。
- できること:Lambda・カスタムコンポーネントの実行、エッジでのML推論、ローカルMQTT通信、OTAでのソフト配布、フリート管理。
- 料金:月内にAWSへ認証したCoreデバイス1台あたり$0.16/月。ローカル接続のデバイスは無料。別途IoT Coreの接続・メッセージ料金が発生。
- IoT Coreとの違い:IoT Coreは「クラウド側の接続基盤」、Greengrassは「エッジ側の実行環境」。どちらか一方ではなく組み合わせて使う。
AWS IoT Greengrassとは何か
AWS IoT Greengrassは、IoTデバイスにクラウドの処理ロジックを持ち込むためのエッジ向けソフトウェアです。中核となる「Greengrass Core」ソフトウェアをLinuxやWindowsのデバイスにインストールすると、そのデバイス上でLambda関数やコンテナ、機械学習の推論を動かせるようになります。取得したセンサーデータをその場でフィルタ・集約し、価値の高いデータだけをクラウドへ送れるため、通信コストと遅延を同時に下げられます。
もう一つの役割が、デバイスソフトウェアの遠隔管理です。ファームウェア全体を焼き直さなくても、必要な機能を「コンポーネント」単位で無線経由(OTA)で配布・更新でき、数千台規模のフリートへ一括適用できます。ランタイムはオープンソースとして公開されており、対応言語やランタイムを問わず動かせます。
仕組みとアーキテクチャ(V2)
V2はV1のモノリシックな構造を捨て、機能を独立した「コンポーネント」の集合として扱うアーキテクチャに変わりました。個々の機能を別々に更新・管理でき、デバイスに載せるソフトの容量も必要なものだけに絞れます。
Greengrass Coreとnucleus
Greengrass Coreソフトウェアのうちインストール必須の中核が「nucleus(ニュークリアス)」です。nucleusはデプロイの受け取り、コンポーネントのオーケストレーション、ライフサイクル管理を担います。標準のnucleusはJavaランタイムで動作します。2024年12月のリリース2.14.0では、C言語で書かれた軽量版「nucleus lite」が追加され、メモリやストレージの限られた組み込み機器でも動かせるようになりました。
コンポーネントとレシピ
コンポーネントには、AWS提供の既製品と自作のものがあります。各コンポーネントは「レシピ」と呼ばれる定義ファイルを持ち、メタデータ・パラメータ・依存関係・ライフサイクルの各段階で実行するスクリプトを記述します。必要なコンポーネントを足し引きすることで、デバイスの機能構成を柔軟に組み替えられます。
ローカルMQTTブローカとオフライン動作
V2はローカルのMQTTブローカ(Moquette)を内蔵し、クラウドと切断されている間もデバイス間のメッセージングを継続できます。通信が復旧したときにクラウドと同期する設計のため、断続的な接続環境や遠隔地の設備でも処理を止めずに運用できます。
AWS IoT Greengrassの主な機能
| 機能 | 内容 |
|---|---|
| ローカル実行 | Lambda関数・Dockerコンテナ・カスタムコンポーネントをデバイス上で実行 |
| エッジML推論 | 学習済みモデルをデバイスへ配布し、クラウドに送らずローカルで推論 |
| ローカルメッセージング | 内蔵MQTTブローカでデバイス間・プロセス間を接続。オフラインでも継続 |
| リモートデプロイ/OTA | コンポーネント単位でソフトを無線配布・更新。フリートへ一括適用 |
| フリート管理 | 多数のCoreデバイスの構成・状態を集中管理 |
| クラウド連携 | フィルタ・集約したデータをAWS IoT Core経由でS3やKinesis等へ転送 |
これらは「クラウドでやっていた処理を現場に降ろす」ためのパーツです。たとえば設備の振動データをエッジで異常判定し、異常の兆候だけをクラウドへ上げる、といった構成を組めます。
エッジコンピューティングとの関係とメリット
Greengrassは、処理をデータ発生源の近くで行うエッジコンピューティングの基本をAWSで実装するための土台です。すべてのデータをクラウドへ送って処理する従来型に対し、エッジで前処理する構成には次の利点があります。
- 通信量の削減:エッジでフィルタ・集約し、価値の高いデータだけをクラウドへ送るため、送信メッセージ量を大幅に減らせる。IoT Coreのメッセージ課金もその分下がる。
- 低レイテンシ:ローカルで完結する制御はクラウド往復を待たないため、リアルタイム性が求められる制御に向く。
- 可用性:ネットワーク断でもローカル処理を継続でき、遠隔地・移動体・工場内の閉域でも止まらない。
- データの選別:外へ出すデータを現場側で絞れるため、機微なデータをローカルに留めやすい。
AWS IoT CoreとGreengrassの違い
「aws iot core greengrass 違い」で検索されるほど混同されやすい2つですが、担当する層が異なります。AWS IoT Coreはクラウド側でデバイスとAWSをつなぐMQTT/HTTPのメッセージブローカ、Greengrassはデバイス側でコードを動かすエッジランタイムです。対立する選択肢ではなく、Greengrass CoreはクラウドとつながるためにIoT Coreを利用します。
| 観点 | AWS IoT Core | AWS IoT Greengrass |
|---|---|---|
| 役割 | クラウド側の接続・認証・メッセージ基盤 | エッジ側のランタイム(ローカル実行環境) |
| 実行場所 | AWSクラウド | 手元のCoreデバイス |
| オフライン | 常時接続が前提 | 切断中もローカルで継続動作 |
| 主な用途 | デバイスとクラウドの接続・認証・双方向通信 | ローカル処理・Lambda実行・ML推論 |
| 関係 | Greengrassの接続先(土台) | IoT Coreを利用してクラウドへ接続 |
クラウドにデータを集めて処理するだけならAWS IoT Core単体で足りますが、現場でのリアルタイム処理やオフライン動作が要るときにGreengrassを重ねる、という関係で捉えると選定を誤りません。ラズパイをCoreデバイスに使う前提で、まずIoT Coreへ直接つないで疎通を確認したい場合はラズパイとAWS IoT Coreを接続する手順|証明書・MQTT送信・SSH設定が出発点になります。
主なユースケース
- 製造・設備保全:生産設備のセンサーデータをエッジで異常検知し、予知保全につなげる。ライン停止に直結する判定をクラウド往復なしで行う。
- 精密農業:圃場のセンサーで異常を現地判定し、通信環境が悪い農地でも自律的に動かす。
- 店舗・小売:カメラや棚センサーの映像・データをローカルで推論し、必要な集計だけをクラウドへ送る。
- 遠隔・低帯域環境:船舶・鉱山・遠隔設備など、常時接続が難しい現場でローカル処理を継続する。
Greengrassのセキュリティ:証明書認証と最小権限
Greengrass CoreデバイスはX.509証明書で認証され、クラウドとの通信はTLSで暗号化されます。ローカルで接続するデバイスにも認証を課し、コンポーネントには最小権限のIAMロールを割り当てるのが基本です。フリート全体の設定逸脱や異常な振る舞いを監視したい場合は、AWS IoT Device Defenderと組み合わせます(Device DefenderのDetect機能は提供終了予定があるため、利用可否は最新の公式情報で確認してください)。
料金体系
Greengrass本体の課金は、その月にAWSへ認証した「アクティブなGreengrass Coreデバイス」の台数に基づきます。ローカルにぶら下がるデバイスは何台つないでも追加料金はかかりません。
| 項目 | 料金(米国東部リージョン基準) |
|---|---|
| アクティブCoreデバイス | $0.16 / 台 / 月 |
| 無料枠 | 最初の12か月、毎月3台まで無料 |
| ローカル接続デバイス | 無料 |
| 非アクティブなデバイス | その月に認証しなければ課金なし |
これはGreengrass単体の料金で、実運用では別途AWS IoT Coreの接続料金(接続時間100万分あたり$0.08・米国東部)やメッセージ料金(100万件あたり$1)、利用するS3やKinesisなどの料金が加算されます。リージョンや最新の単価は公式の料金ページで確認してください。
導入手順(V2の始め方)
V2はデバイスにGreengrass Coreソフトウェアをインストールして立ち上げます。標準のnucleusはJava(Java 11以上)が動くLinux/Windowsデバイスが前提です。AWS側でIAM権限を用意したうえで、インストーラを実行してデバイスをプロビジョニングします。
sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \
-jar ./GreengrassInstaller/lib/Greengrass.jar \
--aws-region ap-northeast-1 \
--thing-name MyGreengrassCore \
--component-default-user ggc_user:ggc_group \
--provision true \
--setup-system-service true
このコマンドはThing(デバイス)とロールを自動作成し、Greengrassをシステムサービスとして常駐させます。起動後はAWS IoTコンソールやCLIからコンポーネントをデプロイして機能を追加していきます。まずは検証用に1台をプロビジョニングし、動作を確認してからフリートへ広げる進め方が安全です。
よくある質問
AWS IoT CoreとGreengrassはどちらを使えばよいですか?
クラウドにデータを集めて処理するだけならIoT Core単体で足ります。現場でのリアルタイム処理や、通信が切れても動き続ける必要があるならGreengrassを重ねます。GreengrassはIoT Coreを土台に使うため、両者は排他ではありません。
Greengrass V1とV2の違いは?V1は今から使えますか?
V1はモノリシックな構造、V2は機能をコンポーネントに分けて個別に更新できる構造です。現行はV2で、新規導入はV2が推奨されます。V1は保守フェーズにあるため、新しく始めるならV2を選んでください。
料金はいくらですか?無料で試せますか?
アクティブなCoreデバイス1台あたり月$0.16です。AWS無料枠では最初の12か月、毎月3台まで無料で使えます。ローカル接続のデバイスは無料ですが、IoT Coreの通信料金は別途かかります。
インターネットが切れても動きますか?
動きます。V2はローカルのMQTTブローカを内蔵し、クラウド切断中もローカル処理とデバイス間通信を継続します。接続が戻るとクラウドと同期します。
どんなデバイス・OSで動きますか?
標準のnucleusはJavaが動くLinux/Windowsデバイスが対象です。メモリやストレージが限られた組み込み機器向けには、C言語製のnucleus lite(リリース2.14.0以降)を利用できます。