※2022年に下書きに書いたまま残っていた記事を2023年に投稿
AWS Lambda
はAWSが提供するサーバーレスでコードを実行するサービスですが。
今回、AWS Lambda
を普段さわっていない人間がその入門として、下記のような流れで学習してみました。
- AWSの各種ドキュメントを参照
- AWSのチュートリアルを実施(Python)
3つ実施したチュートリアルのうち最後に実施したひとつ。チュートリアル: Amazon S3 トリガーを使用してサムネイル画像を作成する
でドキュメントに書いてある内容の理解に時間を要し、チュートリアルを完了するのにだいぶ苦労しましたが。
それ以外は概ねスムーズに学習できたかと思います。
2022年現在、AWS Lambda
を知らない所からの理解の助けにはなったと思うの、どのように学習を進めたのか本記事に記載しておきます。
あと自分は、チュートリアル: Amazon S3 トリガーを使用してサムネイル画像を作成するをPython
でやろうとして記述に戸惑ったので、そのメモ。
参照した各種ドキュメント・チュートリアル
- AWS Lambda
- AWS Lambda デベロッパーガイド
- AWS サービス別資料のAWS Lambda Part1~4([AWS Black Belt Online seminar] Let's Dive Deep into AWS Lambda)
- 「Hello, World!」をサーバーレスで実行する
- チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出す
- チュートリアル: Amazon S3 トリガーを使用してサムネイル画像を作成する
- AWS サービス別資料のAWS Serverless Application Model
まずは製品ページとドキュメントにあたる。
- AWS Lambda
- AWS Lambda デベロッパーガイド
- AWS サービス別資料のAWS Lambda Part1~4([AWS Black Belt Online seminar] Let's Dive Deep into AWS Lambda)
AWS Lambdaの製品ページを確認し、どのようなサービスで料金体系がどんな感じのサービスなのか確認します。
製品ページについては、読むとリソースの所にホワイトペーパーだったりチュートリアルだったり、よくある質問だったりと。
多くの情報が提供されている事に気が付きます。
今回の入門時には直接は関係ない、開発ツールの話だったりもあり非常に幅広く情報が得られるかと思います。
製品ページを参照した後は、[AWS Lambda デベロッパーガイド]のAWS Lambda とは
とかLambda の基礎
あたりを読み込みます。
他の部分については、目次を気になる部分をよんでみるくらい。
次に AWS サービス別資料のページに掲載されているAWS Black Belt Online seminar
の資料と動画を参照して、理解を深めました。
AWS サービス別資料のAWS Lambda Part1~4([AWS Black Belt Online seminar] Let's Dive Deep into AWS Lambda)
AWS Black Belt Online seminar
はPart1からpart4までボリュームがありますが。
Lambdaについての知識がまとまっているので見ておくと、理解が深まるのでおすすめ。
チュートリアルをやってみる
AWS Lambda
がどのような物かイメージできてきたら、チュートリアルで実際に手を動かして感覚をつかんでいきます。
チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出す
チュートリアル: Amazon S3 トリガーを使用してサムネイル画像を作成する
Hello, WorldとAmazon S3 トリガーを使用して Lambda 関数を呼び出すのチュートリアルについては、手順が詳細に記載されているため、これをなぞってリソースを作り、確認すればOKです。
「Hello, World!」をサーバーレスで実行するでは用意されているテンプレートを利用してHello Wolrd
のコード実行 & テストの方法を確認する事ができ。
チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出すではS3バケットにS3トリガーを設定し、格納されたイメージファイルの情報を取得する方法とS3トリガーのイベントテストの方法が確認できます。
最初に記載しましたが、これらのチュートリアルは手順が詳細に記載されており。
実行にあたって悩む部分はないかと思います。
チュートリアル: Amazon S3 トリガーを使用してサムネイル画像を作成する(Python) ではまった
チュートリアル: Amazon S3 トリガーを使用してサムネイル画像を作成する
前段のチュートリアルが詳細に記載れているのに比べて、こちらのチュートリアルは3段階くらい色々と飛ばしている用に感じます。
このチュートリアルでは、中程度のレベルの AWS と Lambda ドメイン知識、Docker オペレーション、および AWS SAM が必要です。最初に チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出す を試すことをお勧めします。
ドキュメントの注記として上記のように記載されていて不穏な感じを受けますが。
チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出す を実施したのでこちらも試してみたところ見事にハマりました。
手順を進めていくと気が付きますが、ステップ 5. デプロイパッケージの作成(今回はPythonを選択)で壁にぶつかるかと思います。
このステップではデプロイパッケージを作成する必要がありますが、Python
を選択するとAWS
SAMCLIのsam buildコマンドを利用してデプロイパッケージを作成する事が推奨されます。 とだけ記載されています。
今回作成するPython番ではPillowというモジュールを利用するので、このモジュールが利用できるように依存関係を含めたデプロイパッケージを作成する必要がある事はわかりますが、どのように作成するかは手順が用意されていません。
Lambda デプロイパッケージではコンテナイメージ
と.zip ファイルアーカイブ
の2種類のデプロイパッケージをサポートしていますが、このステップではSAMを使い、コンテナイメージ
を利用する事を推奨しているだけしかわかりません。
冒頭にこのチュートリアルでは、中程度のレベルの AWS と Lambda ドメイン知識、Docker オペレーション、および AWS SAM が必要です。
と記載してあった部分がここで伏線回収されます。
AWS Lambda
の入門をさっくりやるつもりが、デプロイパッケージ(コンテナイメージ)を作成するためにここでAWS SAM
の入門にも手をだす事になります。
もしくはAWS SAM
に手を出さずに、AmazonLinux2
を用意してPillows
が利用できる.zip ファイルアーカイブ
を用意する方法もあるかと思います。
これを読み解くのに苦労しましたが、今回はAmazonLinux2を用意してその環境で.zip ファイルアーカイブ
を用意して対応しました。
総評
3つ実施したチュートリアルのうち、2022年現在は一つだけだいぶ説明がはしょられている気がしますが。
そこさえ乗り越えればチュートリアルとしては簡単かと思います。