【アップデート】外部ライブラリ込みの Lambda Function のソースコードもマネジメントコンソールから閲覧・編集できるようになりました
こんにちは、藤本です。
本日、AWS Lambda をご利用中の方には地味に嬉しいアップデートがありました。
Announcement: AWS Lambda enables code editing for deployment packages that include custom libraries
今まで Lambda Function は追加ライブラリがないという条件付きで、マネジメントコンソールからソースコードを作成、編集することができました。ライブラリを含めたい場合、ライブラリ込みのソースコードをパッケージ化(zip化)した上でアップロードする必要がありました。またソースコードを閲覧したい場合、API経由でダウンロードして、確認する必要がありました。正直面倒でした。
それが本日のアップデートによって、ライブラリ込みの Lambda Function も一度、ライブラリ込みでアップロードしてしまえば、マネジメントコンソールからソースコードを編集することが可能になりました。ライブラリを追加・削除したい場合は現在と変わらず zipファイルでアップロードする必要がありますが、ソースコードの編集することに比べれば機会は少ないでしょう。
外部ライブラリ込みだということが分かりづらいキャプチャですが、以下のように「外部ライブラリ込みが含まれている、ライブラリを更新する時はアップロードして」というメッセージが表示されています。
This function contains external libraries. Uploading a new file will override these libraries.
既存の外部ライブラリ込みの Lambda Function もソースコードが閲覧・編集可能となっています。
制限として、アップロードする zipファイルが2MBを超える場合、ソースコードを閲覧・編集できません。以下のようなメッセージが表示されます。
The deployment package of your Lambda function "FUNCTION_NAME" is too large to enable inline code editing. However, you can still invoke your function right now.
試してみる
それでは一応試してみましょう。今回は Python で試しました。Python の requests ライブラリを使って、Webリクエストするだけの Lambda Function です。
まずは Lambda Function のパッケージを作成します。Requests をインストールし、zip化します。
# pip install requests -t . You are using pip version 7.1.0, however version 9.0.0 is available. You should consider upgrading via the 'pip install --upgrade pip' command. Collecting request Downloading request-0.0.12.tar.gz : Successfully built request get post setupfiles query-string public Installing collected packages: setuptools, setupfiles, public, query-string, get, post, request Successfully installed get post public query-string request setupfiles setuptools-24.0.2 requests-2.8.1 # ls easy_install.py post-0.0.0.dist-info requests-2.11.1.dist-info easy_install.pyc public-0.0.0.dist-info setupfiles get-0.0.0.dist-info query_string-0.0.0.dist-info setupfiles-0.0.13.dist-info lambda_function.py request-0.0.0.dist-info setuptools pkg_resources requests setuptools-28.7.1.dist-info # vi lambda_function.py import requests def lambda_handler(event, context): response = requests.get("https://dev.classmethod.jp/") return 'HTTP Response status cude is %d' % response.status_code # zip -rq lambda.zip .
マネジメントコンソールから Lambda Function を作成します。
Blank Function から空の Lambda Function を作成します。Blank Function が出来たのも知らなかった。。今まで Blue Print を利用しない場合は、Skip を選択していたと思います。
今回はテスト実行だけなのでトリガーは設定せずそのまま Next をクリックします。
Code entry type にUpload a .zip file
を選択し、作成した zipファイルを選択します。
確認画面で設定を確認したら、作成します。
作成が完了したら、zipファイルでアップロードした場合もソースコードが表示され、編集可能となっています。
今まではzipファイルでアップロードした場合、Upload a .ZIP file
、Upload a .ZIP from Amazon S3
の2択しかありませんでした。
実際に編集してみましょう。
編集前は Developers.IO のトップページにアクセスしており、テスト実行すると、200が返ってきています。
存在しないページへのアクセスに変更し、テスト実行すると、404が返ってくるように変更されました。
まとめ
いかがでしたでしょうか?
今まで Lambda Function を作成する時、zip化、アップロードがめんどくさく、ユーティリティライブラリを使いたいケースも外部ライブラリを利用しないようにコーディングしていました。今回のアップデートにより、外部ライブラリを使うのも大分気が楽になりました。