🕹️

AWS IoT Greengrassを調べる

2022/02/12に公開

Greengrass?

AWS IoT Greengrassはいわゆるエッジコンピューティング系のサービス。

以下の図[1]のようにAWSのサービスにはエッジといってもいろんなレベルがあるみたいだが、Greengrassは一言で言うと、めっちゃエッジ。リージョンからローカルゾーンを超えて右の端のIoTデバイスをターゲットとしたサービス。

Greengrassのアーキテクチャ

GreengrassクライアントソフトウェアはAWSクラウドど連携して動く、概ねJavaで書かれたソフトウェアで、少し前にオープンソースになったみたい[2]

Greengrassクライアントのデプロイメント構成

  1. エッジのデバイス上に直接インストールしてクラウドと接続する
  2. エッジのゲートウェイ(Greengrass Core Deviceと呼ぶ)にインストールして、デバイス群とクラウドを接続する

また、必ずしもクラウドと接続しなくてもローカルだけで動かすこともできる。

Greengrassのクライアントソフトウェアをインストールする方法

  1. デバイスのOSに直接インストール
  2. デバイスにGreengrassのDockerコンテナをpull

Greengrassではエッジのソフトウェアをコンポーネントと呼んでいて、コンポーネント単位でデプロイ・更新などの管理が可能。コンポーネントは基本的なものをAWSが提供。またもちろんユーザーが自由に作成することもできる。必要なコンポーネントだけをエッジにデプロイできるようになっていて、デバイスのリソースを有効活用できるようになっている。

なお、Greengrassのクライアントソフトウェアはクラウド側(IoT Core)からはAWS IoTのThingとして扱われるので他のデバイスと同じように管理可能

コンポーネント

コンポーネントはartifactsと呼ばれるコード(Pythonなど)とrecipesというJSONのメタデータでできている。

コンポーネントのデプロイ方法

  1. Greengrassのクライアント上でartifactsrecipesを用意してCLIでデプロイ。ローカルで完結するが、デプロイ先が増えるにつれつらくなると思われる。
  2. artifactsをS3に置いておいて、Webコンソールでrecipesを用意してデプロイ。デプロイ先が増えても大丈夫。
  3. Lambda Functionをコンポーネントとしてデプロイ。これが一番楽な気がする。

デプロイ時にはDeploymentsというオブジェクトを作ってデプロイする。このあたりの考え方はKubernetesとかと似ている。

次回

さて、Greengrass完全に理解したので、次は実際に動かしてみることにする。触りながら分かったことは随時このページにも反映したい。

シリーズ

脚注
  1. AWS Summitの資料から ↩︎

  2. AWS IoT Greengrass client software components and SDKs ↩︎

Discussion