7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS Lambdaの入門としてやってみた事をまとめた話(Python)

Posted at

※2022年に下書きに書いたまま残っていた記事を2023年に投稿

AWS LambdaはAWSが提供するサーバーレスでコードを実行するサービスですが。

今回、AWS Lambdaを普段さわっていない人間がその入門として、下記のような流れで学習してみました。

  • AWSの各種ドキュメントを参照
  • AWSのチュートリアルを実施(Python)

3つ実施したチュートリアルのうち最後に実施したひとつ。チュートリアル: Amazon S3 トリガーを使用してサムネイル画像を作成する
でドキュメントに書いてある内容の理解に時間を要し、チュートリアルを完了するのにだいぶ苦労しましたが。

それ以外は概ねスムーズに学習できたかと思います。

2022年現在、AWS Lambdaを知らない所からの理解の助けにはなったと思うの、どのように学習を進めたのか本記事に記載しておきます。

あと自分は、チュートリアル: Amazon S3 トリガーを使用してサムネイル画像を作成するPythonでやろうとして記述に戸惑ったので、そのメモ。

参照した各種ドキュメント・チュートリアル

まずは製品ページとドキュメントにあたる。

AWS Lambdaの製品ページを確認し、どのようなサービスで料金体系がどんな感じのサービスなのか確認します。

製品ページについては、読むとリソースの所にホワイトペーパーだったりチュートリアルだったり、よくある質問だったりと。

多くの情報が提供されている事に気が付きます。

今回の入門時には直接は関係ない、開発ツールの話だったりもあり非常に幅広く情報が得られるかと思います。

製品ページを参照した後は、[AWS Lambda デベロッパーガイド]のAWS Lambda とはとかLambda の基礎あたりを読み込みます。

他の部分については、目次を気になる部分をよんでみるくらい。

AWS 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がどのような物かイメージできてきたら、チュートリアルで実際に手を動かして感覚をつかんでいきます。

「Hello, World!」をサーバーレスで実行する

チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出す

チュートリアル: Amazon S3 トリガーを使用してサムネイル画像を作成する

Hello, WorldAmazon S3 トリガーを使用して Lambda 関数を呼び出すのチュートリアルについては、手順が詳細に記載されているため、これをなぞってリソースを作り、確認すればOKです。

「Hello, World!」をサーバーレスで実行するでは用意されているテンプレートを利用してHello Wolrdのコード実行 & テストの方法を確認する事ができ。

チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出すではS3バケットにS3トリガーを設定し、格納されたイメージファイルの情報を取得する方法とS3トリガーのイベントテストの方法が確認できます。

最初に記載しましたが、これらのチュートリアルは手順が詳細に記載されており。
実行にあたって悩む部分はないかと思います。

チュートリアル: Amazon S3 トリガーを使用してサムネイル画像を作成する(Python) ではまった

チュートリアル: Amazon S3 トリガーを使用してサムネイル画像を作成する

前段のチュートリアルが詳細に記載れているのに比べて、こちらのチュートリアルは3段階くらい色々と飛ばしている用に感じます。

image.png

このチュートリアルでは、中程度のレベルの AWS と Lambda ドメイン知識、Docker オペレーション、および AWS SAM が必要です。最初に チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出す を試すことをお勧めします。

ドキュメントの注記として上記のように記載されていて不穏な感じを受けますが。
チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出す を実施したのでこちらも試してみたところ見事にハマりました。

手順を進めていくと気が付きますが、ステップ 5. デプロイパッケージの作成(今回はPythonを選択)で壁にぶつかるかと思います。

image.png

このステップではデプロイパッケージを作成する必要がありますが、Pythonを選択するとAWS
 SAMCLIのsam buildコマンドを利用してデプロイパッケージを作成する事が推奨されます。 とだけ記載されています。

Lambda デプロイパッケージ

今回作成するPython番ではPillowというモジュールを利用するので、このモジュールが利用できるように依存関係を含めたデプロイパッケージを作成する必要がある事はわかりますが、どのように作成するかは手順が用意されていません。

Lambda デプロイパッケージではコンテナイメージ.zip ファイルアーカイブの2種類のデプロイパッケージをサポートしていますが、このステップではSAMを使い、コンテナイメージを利用する事を推奨しているだけしかわかりません。

冒頭にこのチュートリアルでは、中程度のレベルの AWS と Lambda ドメイン知識、Docker オペレーション、および AWS SAM が必要です。と記載してあった部分がここで伏線回収されます。

AWS Lambdaの入門をさっくりやるつもりが、デプロイパッケージ(コンテナイメージ)を作成するためにここでAWS SAMの入門にも手をだす事になります。

もしくはAWS SAMに手を出さずに、AmazonLinux2を用意してPillowsが利用できる.zip ファイルアーカイブを用意する方法もあるかと思います。

これを読み解くのに苦労しましたが、今回はAmazonLinux2を用意してその環境で.zip ファイルアーカイブを用意して対応しました。

総評

3つ実施したチュートリアルのうち、2022年現在は一つだけだいぶ説明がはしょられている気がしますが。
そこさえ乗り越えればチュートリアルとしては簡単かと思います。

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?