4.1 Lambdaファンクションの作成

Lambdaファンクション用のソースを準備

AWS IoT Greengrassで動くLambdaファンクションを使ってGreengrassの機能を使う場合は、AWS Greengrass Core SDKを利用します。今回は、Python版を利用して、MQTTメッセージのパブリッシュを行います。

Cloud9で、新しくターミナルを開きます。そして、ターミナルで以下のコマンドを入力します

cd ~/environment/lambda
git clone https://github.com/aws/aws-greengrass-core-sdk-python.git
mv aws-greengrass-core-sdk-python/greengrasssdk ./

すると以下のように、lambdaのディレクトリの下に、greengrasssdklambda_function.pyがある状態になります。

Lambda

この状態で以下ののコマンドを入力して、zipファイルにソースコードを固めます。

cd ~/environment/lambda
zip -r lambda.zip greengrasssdk lambda_function.py

zipファイルが出来たら、そのzipファイルを選択状態にして、右クリックでメニューを表示し、Downloadを選択して、自分のPCにzipファイルをダウンロードします。

Lambda

AWS IoT GreengrassにLambdaファンクションを追加

AWS IoT Coreのマネージメントコンソールを開き、Greengrassグループの詳細を開きます。詳細画面で、Lambdaを選択するとLambdaの一覧画面が表示されます。その中のLambdaの追加を選択します。

Lambda

新しいLambdaの作成を選択します。

Lambda

新しいタブにAWS Lambdaの登録画面が表示されます。関数名には、DataCheckerと名前をつけます。ランタイムにはPython 3.7を選択し、最後に関数の作成を選択します。

複数人で同じAWSアカウントを利用している場合は、DataChecker-自分の名前の様にユニークな値をLambda名で指定してください、以降の手順では、DataCheckerというLambda名が手順で出てくる場合は、指定した名前に置き換えながら進めてください。

Lambda

Lambdaの登録画面では下にスクロールすると関数コードのセクションがあるので、

  1. 関数コードセクションの右上にあるアクションボタンを押す
  2. .zip ファイルをアップロードを選択
  3. .zip ファイルをアップロードの画面でアップロードボタンを押す
  4. Cloud9からダウンロードしたzipファイルを指定
  5. 右下にある保存を押す

このようにしてコードをアップロードし保存します。

Lambda

Greengrassで実行するLambdaで利用可能な言語やバージョンについては、FAQAWS IoT Greengrass はどの AWS Lambda 開発言語をサポートしていますか?を参照してください。

Lambdaのエイリアスを作成

画面上部のアクション > 新しいバージョンを発行 と選択します。

Lambda

そのまま発行を選択します

Lambda

画面上部のアクション > エイリアスの作成 と選択します。

Lambda

名前handsonと入力し、バージョン1を指定して、作成を選択します。

Lambda

Greengrassのコンソールを表示してたタブに戻り、次は既存のLambdaの使用を選択します。

Lambda

さきほど作成したDataCheckerを選択し、次へを選択します

Lambda

エイリアス:handsonを選択し、完了でLambdaを登録します。

Aliasを利用することで、Greengrass側の設定を変更しなくても、Lambda側でAliasに紐づくバージョンを変更するだけで、デプロイすべきバージョンを変えることが出来ます。デプロイすべきバージョンを厳密に管理する場合は、Aliasを利用しないで、Greengrassにはバージョンを指定してLambdaを登録します。

Lambda

Greengrassで実行するLambdaには、様々な実行方法やライフサイクルがあります。今回はデフォルトのまま進めていますので、メッセージを受け取ると起動するLambdaとして登録しています。Greengrass上のLambdaについて詳しく知りたい場合は、こちらを参照してください。

この手順での作業は以上となります。