あまぶろぐ

インフラと趣味のゆるいブログ

インフラエンジニア、初めてのLambda(前編)

コードを書いたことがないインフラエンジニア(私)が、独学でLambdaを触って、「ハマった部分」を記載。同じように初めて触る方の参考になればと。記事は2回(前編、後編)に分けます。

Lambdaの設定

Lambdaはサーバーレスでコードを実行できるサービスです。

AWS Lambda(イベント発生時にコードを実行)| AWS

 

「なんらかのイベント」をトリガーにLambdaを動作させるというもののようです(私の理解)。設定方法としては2つあります。

(1)Lambdaの設定画面でコードを直接入力する
(2)Lambdaが備えていないライブラリを実行したい場合は、「外部ライブラリ」と「コード」をパッケージ化してzip化したものをLambdaに登録

素人には(1)と(2)の区別をどうすればよいのか?がすぐにはわかりません。現時点(2021/7時点)での私の理解は、下記サイトのコードであれば(1)でよいのではと思ってます。間違っていれば別途訂正します。

Lambda — Boto3 Docs 1.18.2 documentation

いろいろなサイトをみるとサンプルコードが公開されています。その中で、「外部ライブラリ」の記述がなければ、(1)で実行できると思っています。
ここでハマったことの1つ目です。後述しますが、Lambdaを設定するコンソールの操作を間違っていたため、意図した通りLambdaが動作しませんでした。当初は操作の誤りという認識がなかったため、上記の(1)で動作しないので(2)でやる必要があるのか?と思い込んでました。

 コードの中身

上述の通り、Lambdaは「なんらかのイベント」をトリガーとします。素人的には「そのトリガーを受け取ったLambdaが、コードに記載された値を実行する」と考えていました。この先入観をもって、世の中のサンプルコードを見ていたので中身を理解できなかったことが、ハマったことの2つ目です。
私の検証では、「CloudWatch Events」をトリガーにLambdaを動作させるというものでした。いくつかのサンプルコードでは、CloudWatch Eventsの中に「値」を入れてLambdaのコードは「変数」という構造でした。コードを書く人はこのような構造が多いんですかね。今回の検証内容を運用で利用する場合、Lambdaは1つだけ設定し、CloudWatch Eventsを複数作成するとなりますが、そちらの方が運用に最適だなと気付かされました。

(検証内容、参考にしたサイト)

CloudWatchアラームに定時ダウンタイム設定をいれる - Qiita

CloudWatchAlarmにLambdaでダウンタイム設定をいれてみた | DevelopersIO

本当に勉強になりました。ありがとうございました。

 

 操作方法、コードの保存

ハマったことの3つ目です。操作方法です。Lambdaの設定画面で、コードを保存しました。その際にデフォルトの名前「lambda_function.py」から異なる名前にしました。拡張子を「.py」としなかったためコードが読まれませんでした。サンプルコードが記載されたサイトではコードの文字列がカラフルでしたが、私のLambdaの画面は「黒文字のみ」だったため、不思議でした。また、テスト機能にどんな値を入れて良いのかわからず、切り分けができませんでした・・・

 

以上が前編です。後編は実際の操作画面を記載します。