AWS Lambdaにコードを登録する方法

cover

こんにちは。クラウドイノベーションセンターの丸山です。
Lambdaのイベントソースに関する記事を書いておりますが、実際にLambdaにコードを登録する際の方法について書いておりませんでしたので、今回の記事で解説したいと思います。

 

Lambdaにコードを登録する方法は下記の3パターンがあります。

  1. Lambdaの管理コンソールで直接編集(Webブラウザで編集)
  2. ZIPファイルをアップロードする
  3. ZIPファイルをS3に保存し、リンクを指定する

1.Lambdaの管理コンソールで直接編集

こちらは特に難しいことはありません。
Lambdaの管理コンソールを開き、「Edit code inline」を選択しておけば、Webブラウザ上でコードの編集が可能です。

注意事項としては、Lambdaに標準で同梱されているモジュール(aws-sdk, http,child_process等)以外を使いたい場合には、ローカルPC等でモジュールを含めたデプロイパッケージ(ZIPファイル)を作成する必要があります。

コード内で使用したモジュールがZIPファイルに含まれていない場合には、下記のように “Cannot find module ‘●●●●'” というエラーメッセージが出ますので、エラーになった際には確認してみてください。

#3_01_ErrorMessage

もう1点の注意事項としては、標準で同梱されているモジュール以外(例えばexpressやmoment等)を含むコードを、ZIPファイルにてコードの登録を行うと、Webブラウザ上でのコード編集ができなくなる点です。

逆に管理コンソールでコード編集するメリットとしては、書式のチェック機能が搭載されているため、括弧の閉じ忘れやセミコロンの付け忘れ等、文法ミスに気づきやすいという点や、インターネット環境とWebブラウザがあれば、どこに居てもコードの編集ができるといった点があります。

おまけ情報ですが、コード編集画面の右下に2つのボタンがあり、歯車マークをクリックすると、コードの編集画面の配色を変更することができますので、お好みの配色があれば使ってみてください。
もう一方のボタンは編集ウインドを広げるためのボタンです。

#3_02_EditCodeInline

2.ZIPファイルをアップロードする

上記で説明したように、Lambdaに標準で同梱されていないモジュールを使用したい場合や、ローカル環境で編集したコードを登録したい場合に選択する方法です。

ZIPファイルの構成としては、以下のようにする必要があります。

Linux環境をお使いの場合、以下のようなコマンドで上記ZIPファイルを作成することができます。

作成されたZIPファイルをLambdaの管理コンソールからアップロードします。
「Upload a .ZIP file」を選択し、「Upload」ボタンを押すことで、ファイルを選択することができます。
アップロード後は、Lambda関数をSavaしましょう。

#3_03_UploadZip

ここでの注意事項としては、LambdaのConfigurationです。

Lambdaの管理コンソール(Webブラウザ)で編集していた場合には、デフォルトで問題ないのですが、ZIPファイルでアップロードした場合、Handlerの項目を変更する必要があります。(JavaScriptファイル名をindex.jsとした場合は、デフォルト設定で動きます。)

例えば以下のようなコードを event-test.js という名前で作成し、ZIPファイル dst.zip にしたとします。

アップロード後のLambdaのConfigurationは以下のようにする必要があります。

#3_04_LambdaConfiguration

上記のように、JavaScriptファイルのファイル名をHandlerに設定する必要があります。

また、コード1行目の exports.handler の “handler” 部分を exports.testFunc と変更した場合には、LambdaのConfigurationにて、handler部分を、 event-test.testFunc と修正する必要があります。

3.ZIPファイルをS3に保存し、リンクを指定する

ほぼ上記2の手順と同じですが、ZIP圧縮したファイルが10MBを超える場合には、S3を使う方法が推奨されています。
コードの登録方法は以下のように「Upload a .ZIP from Amazon S3」を選択し、対象ファイルのURLをウインドウに入力してから、Saveします。

#3_05_UploadZipFromS3

S3に保存したファイルはプライベートな状態で問題ありません。

S3の管理コンソールを開き、対象のファイルを選択した状態で右上の「Properties」を選択し、Linkと書かれた項目をコピーします。

#3_06_ObjectProperties

こちらの方法を選択した場合にも、2.で説明したようにLambdaのConfigurationに注意してください。

 

以上、Lambdaへのコード登録方法でした。

Pocket

コメント