素敵なサムシングを独断と偏見で一方的に紹介するブログ(´・ω・`)

投稿日: 2019年1月16日
最終更新日:

【Python3】コマンドラインから簡単にAWS lambdaに関数をアップロード出来ちゃう「lambda-uploader」のインストール方法と使い方【手順まとめ】

YouTubeも見てね♪

ねこじゃすり

created by Rinker
PEPPY(ペピイ)
¥3,850 (2024/03/15 19:03:46時点 Amazon調べ-詳細)

猫を魅了する魔法の装備品!

[ノースフェイス] THE NORTH FACE メンズ アウター マウンテンライトジャケット

created by Rinker
THE NORTH FACE(ザノースフェイス)
¥29,280 (2024/03/15 19:06:01時点 Amazon調べ-詳細)

防水暴風で耐久性抜群なので旅行で大活躍です!

ペヤング ソースやきそば 120g×18個

created by Rinker
ペヤング
¥2,600 (2024/03/15 19:03:46時点 Amazon調べ-詳細)

とりあえず保存食として買っておけば間違いなし!

モンスターエナジー 355ml×24本 [エナジードリンク]

created by Rinker
モンスター
¥4,748 (2024/03/15 19:03:48時点 Amazon調べ-詳細)

脳を活性化させるにはこれ!

ドラゴンクエスト メタリックモンスターズギャラリー メタルキング

created by Rinker
スクウェア・エニックス(SQUARE ENIX)
¥3,250 (2024/03/15 19:03:48時点 Amazon調べ-詳細)

みんな大好き経験値の塊をデスクに常備しておこう!

Bauhutte ( バウヒュッテ ) 昇降式 L字デスク ブラック BHD-670H-BK

created by Rinker
Bauhutte(バウヒュッテ)
¥13,861 (2024/03/15 15:06:46時点 Amazon調べ-詳細)

メインデスクの横に置くのにぴったりなおしゃれな可動式ラック!

サンディスク microSD 128GB

スマホからSwitchまで使える大容量MicroSDカード!

AWS Lambaへのアップロードを簡単に行いたい

ローカル開発はpython-lambda-localで決まり

先日、python-lambda-localを使ったローカル環境でのPythonによるLambda関数の実装及び動作確認方法についてご紹介致しました。

アップロードがめんどくさい・・・

ローカルでの動作確認は完了したので、実際にAWSに配置したい!となった場合、通常の手段ではとてもめんどくさいのがデメリットと言えるでしょう。

依存するライブラリを含めてZIP化し、マネジメントコンソールからアップロードをする、と言う作業は地味にめんどくさいのですorz

lambda-uploaderならコマンド一発

そんな面倒くさがりな筆者にぴったりなツールを見つけてしまいました!

lambda-uploaderは、ローカルのLambda用のPythonスクリプトをコマンドラインから一発でAWS Lambdaにアップロードしてくれるのです!

使い方もとても簡単で、設定ファイルを用意すれば自動でライブラリを含めたZIPを作成してくれて、アップロード時の設定も行ってくれます。

今回はシンプルなアップロードと動作確認までの手順をご紹介致します♪

手順

lambda-uploaderをインストール

まずはいつも通りpipコマンドを使ってlambda-uploaderをインストールしましょう。

環境によっては既にインストール済みのモジュールがあると思いますが、とりあえずSuccessfully installed lambda-uploader-X.Y.Zが出力されればインストール完了です。

IAM Roleの準備

インストールが完了したら、Lambdaを取り扱えるIAM Roleを用意しましょう。

マネジメントコンソールからIAMを選択し、ロール > ロールの作成ボタンをクリックします。

次の画面では、AWSサービスが選択された状態で、Lambdaをクリックし次のステップ:アクセス権限ボタンをクリックします。

次はロールに持たせるポリシーを設定します。

今回は実行権限をつけたいのでAWSLambdaExecuteポリシーをつけていますが、用途に合わせて設定してください。

設定が終わったら次のステップ:タグボタンをクリックします。

タグにはキー/値の形式で任意のタグを設定することが出来ます。

必須ではないので未入力のまま次へ進んでも良いですが、今回は適当にnameを設定して次のステップ:確認ボタンをクリックします。

次の画面ではロール名と説明の入力と、前画面までに入力した値の確認を求められます。

問題が無ければ、ロールの作成ボタンをクリックしましょう。

これでロールが正常に作成されました。

必要ファイルの準備

インストールが完了したら、次は必要なファイルを作成していきましょう。

lambda_function.py

まずはメインとなる関数ファイルを用意しましょう。

今回は動くかの確認だけ出来れば良いので、以下のような簡単な関数を用意しましょう。

lambda.json

次にアップロードするLambda関数の概要をまとめたJsonファイルを用意します。

関数名やtimeout/memoryなどを定義します。

このJsonのrole項目の値は先ほど作成したロールのロール ARNを指定してください。

requirements.txt

次はrequirements.txtを用意します。

こちらは、作成したLambda関数が必須としている外部ライブラリを定義するファイルとなっています。

ご存知の通り、Lambdaを用意するにあたって外部ライブラリも含めてZIP化する必要があるのですが、lambda-uploaderを使えばこのファイルの記述を元に自動で行ってくれるとの事です。

しゅごい。

作成はpip freeze > requirements.txtコマンドでサクッと自動生成しちゃいましょう。

手入力で作成しても良いですが、タイポやバージョン違いなどが発生する可能性がるので自動で作成することをオススメします。

不要なパッケージを削除

上記コマンドで作成すると、その環境にてインストールされている全てのライブラリが出力されてしまい、そのままだとZIPファイルが肥大化してしまうので、利用するもの以外は削除しておきましょう。

アップロード処理

必要ファイルは用意出来たので、対象ディレクトリに移動してlambda-uploaderを使ったアップロードを実行してみましょう。

おぉ!
無事に終わりましたね。
早速AWS cliからLambda関数を取得して確認してみましょう。

先ほどアップロードしたものが正しく登録されていそうですね♪

PythonのRuntimeの指定漏れ

しかし、先ほどアップロードしたものだとRuntimeがPython2.7になってしまっていました。

今回作成したものはPython3.6で動かしたいのですが、lambda.jsonに項目を追加することでRuntimeを変えることが出来るそうです。

以下のようにlambda.jsonを修正したら再度同じコマンドでuploadしてみましょう。

正しくRuntimepython3.6に変わりましたね♪

マネジメントコンソールから動作確認

では、次は実際にアップロードされた関数の動作確認を行いましょう。

マネジメントコンソールからアップロードした関数を選択します。

関数を開いたら上部のテストボタンをクリックします。

すると、テストイベントの設定ダイアログが表示されます。

ここでは、以下のようなJsonを定義して作成ボタンをクリックしましょう。

すると、今定義したテストイベントを選べるようになるので、そちらを選択した上でテストボタンをクリックしてみましょう。

すると、正常に動作したことが確認出来ます。

あとは、環境変数AWSサービス等の連携設定を行うことでLambda関数が完成します♪

終わりに

以上のように、手間がかかっていたアップロードの部分をコマンドラインから一発で行えるので、とても便利でした。

使わない手はないので、皆さんも是非こちらのツールを利用してアップロードするようにしてみてはいかがでしょうか♪

CATEGORIES & TAGS

IT