🕹️
AWS IoT Greengrassを調べる
Greengrass?
AWS IoT Greengrassはいわゆるエッジコンピューティング系のサービス。
以下の図[1]のようにAWSのサービスにはエッジといってもいろんなレベルがあるみたいだが、Greengrassは一言で言うと、めっちゃエッジ。リージョンからローカルゾーンを超えて右の端のIoTデバイスをターゲットとしたサービス。
Greengrassのアーキテクチャ
GreengrassクライアントソフトウェアはAWSクラウドど連携して動く、概ねJavaで書かれたソフトウェアで、少し前にオープンソースになったみたい[2]
Greengrassクライアントのデプロイメント構成
- エッジのデバイス上に直接インストールしてクラウドと接続する
- エッジのゲートウェイ(Greengrass Core Deviceと呼ぶ)にインストールして、デバイス群とクラウドを接続する
また、必ずしもクラウドと接続しなくてもローカルだけで動かすこともできる。
Greengrassのクライアントソフトウェアをインストールする方法
- デバイスのOSに直接インストール
- デバイスにGreengrassのDockerコンテナをpull
Greengrassではエッジのソフトウェアをコンポーネントと呼んでいて、コンポーネント単位でデプロイ・更新などの管理が可能。コンポーネントは基本的なものをAWSが提供。またもちろんユーザーが自由に作成することもできる。必要なコンポーネントだけをエッジにデプロイできるようになっていて、デバイスのリソースを有効活用できるようになっている。
なお、Greengrassのクライアントソフトウェアはクラウド側(IoT Core)からはAWS IoTのThingとして扱われるので他のデバイスと同じように管理可能
コンポーネント
コンポーネントはartifacts
と呼ばれるコード(Pythonなど)とrecipes
というJSONのメタデータでできている。
コンポーネントのデプロイ方法
- Greengrassのクライアント上で
artifacts
とrecipes
を用意してCLIでデプロイ。ローカルで完結するが、デプロイ先が増えるにつれつらくなると思われる。 -
artifacts
をS3に置いておいて、Webコンソールでrecipes
を用意してデプロイ。デプロイ先が増えても大丈夫。 - Lambda Functionをコンポーネントとしてデプロイ。これが一番楽な気がする。
デプロイ時にはDeployments
というオブジェクトを作ってデプロイする。このあたりの考え方はKubernetesとかと似ている。
次回
さて、Greengrass完全に理解したので、次は実際に動かしてみることにする。触りながら分かったことは随時このページにも反映したい。
Discussion