AWS IoT Greengrass でパブリックコンポーネントをGreengrass コアデバイスへのデプロイ

記事タイトルとURLをコピーする

はじめに

Classic (v1)ではLambdaをデプロイできたり、コネクタという機能でAWSやそのほかのクラウドへ接続できましたが、v2ではコンポーネントという機能になったのでしょうか??

docs.aws.amazon.com

コンポーネントというのは、利用者側で開発したアプリやプログラムをGreengrassへ登録・コアデバイスへデプロイできるというものです。このコンポーネントは利用者側で作成することもできますが、よくあるユースケースについては、あらかじめAWS側で用意されているパブリックコンポーネントが利用できます。今回はこのパブリックコンポーネントをコアデバイスへのデプロイしてみます。

パブリックコンポーネントを確認する。

AWS IoT Greengrassのコンソールからパブリックコンポーネントは見ることができます。2021/01現在で21個のパブリックコンポーネントが用意されています。Lambda関連だけでなく、SNSやKinesisなど他のサービスとの連携につかえそうなもの、さらには機械学習関連のものもあります。

f:id:swx-mine:20210113162448p:plain

v1ではコアデバイスでLambda関数を実行する機能がありましたが、こちらの機能もv2ではパブリックコンポーネントの1つとなっているようです。

f:id:swx-mine:20210113163344p:plain
Lambdaランタイムコンポーネントは、GreengrassコアデバイスがLambda関数を実行できる環境を提供します。

パブリックコンポーネントをデプロイする。

今回はこの aws.greengrass.LambdaRuntimes を実際にデプロイします。

デプロイをクリックします。

f:id:swx-mine:20210113163726p:plain

既存のデプロイか新規のデプロイか選択します。既存の場合はその名の通り既存のデプロイにマージする形となります。新規の場合は既存のデプロイが置き換えられてしまうので注意です。今回は新規にしてしまっていますが、後述するようにGreengrass CLIが消えてしまいました。すでにデプロイ済みのコンポーネントを残す場合は既存を選択しましょう。

f:id:swx-mine:20210113163912p:plain

デプロイ名を入力します。わかりやすい名前にしましょう。デプロイ先は前回のブログで作成したコアデバイスです。ターゲットタイプは「コアデバイス」を選択するとある1つの特定のコアデバイスへデプロイを実行できます。「モノのグループ」を選択するとそのグループに属するすべてのコアデバイスへデプロイが実行されます。今回は1つのコアデバイスへのデプロイですが、今後コアデバイスが増えるかもしれないことも想定して、「モノのグループ」とします。

f:id:swx-mine:20210113164138p:plain

デプロイ対象のコンポーネントが選択されていることを確認します。

f:id:swx-mine:20210113164626p:plain

コンポーネントのバージョン選択や設定もできます、今回はしません。

f:id:swx-mine:20210113165203p:plain

デプロイのタイムアウトなどの設定もできます。今回はデフォルトです。

f:id:swx-mine:20210113165240p:plain

ようやくデプロイを作成します。

f:id:swx-mine:20210113165257p:plain

デプロイを押下するとデプロイの詳細画面へリダイレクトされ、デプロイ中であることがわかります。

f:id:swx-mine:20210113165312p:plain

ジョブIDをクリックしてステータスが成功となっていればokです。

f:id:swx-mine:20210113170623p:plain

まとめ

今回、新規でデプロイを作成したため、Greengrassコアデバイス設定時にデプロイされていたGreengrass CLIが使えなくなってしまいました。今回は検証でまっさらな環境だったのでダメージはこれだけで済みましたが、今後は気を付けたいです。

$ /greengrass/v2/bin/greengrass-cli help
-bash: /greengrass/v2/bin/greengrass-cli: No such file or directory

実はマイコンポーネントを作成する画面に「Lambda関数をインポートする」というのがあります。こちらは実際にLambda関数からコンポーネントを作成するものになってますが、今回デプロイしたパブリックコンポーネント LambdaRuntimes との環境は確認中です。

f:id:swx-mine:20210113171651p:plain