LoginSignup
1
1

More than 3 years have passed since last update.

Lambda関数のローカル作成方法(lambda-uploader)

Posted at

サーバーレスでアプリを作っていて、日々Lambda関数を生産しています。
コンソールから作成することもできますが、コード管理が煩雑になるのと、IDEの補完機能を使いたいのとで、私はできるだけローカルで作成してからデプロイするようにしています。ただ、ローカルで作成したLambdaをデプロイするには、コードのZip化とファイルのアップロードが必要で地味に面倒です。
そういった作業をサポートしてくれるツールがあるので紹介したいと思います。
まずは手軽なやつから

lambda-uploader

いくつか使っている中で一番手軽なツール(だとおもう)
https://github.com/rackerlabs/lambda-uploader

インストール

pip install lambda-uploader

プロジェクト作成

mkdir myFunction
cd myFunction
touch my_function.py

my_function.pyに所望の実装を施します。

例:my_function.py
def lambda_handler(event, context):
    return {'hello': 'world'}

lambda.jsonを作成します。

例;lambda.json
{
  "name": "myFunction",
  "description": "hello world",
  "region": "ap-northeast-1",
  "runtime": "python3.7",
  "handler": "my_function.lambda_handler",
  "role": "arn:aws:iam::00000000000:role/lambda_basic_execution",
  "requirements": ["pygithub"],
  "timeout": 30,
  "memory": 128,
}

外部ライブラリを利用したい場合は、lambda.jsonにrequirementsを追加します。

{
...snip...
  "role": "arn:aws:iam::00000000000:role/lambda_basic_execution",
  "requirements": ["requests"],
  "timeout": 30,
...snip...
}

(requirements.txtで指定することもできます。)

デプロイ

lambda.jsonを作成したディレクトリで以下のコマンドを実行します。

lambda-uploader

ターミナルに次のようなメッセージが出れば無事成功。

λ Building Package
λ Uploading Package
λ Fin

その他

lambda.jsonにはアカウントに依存した情報(role)が入っています。CI/CDにlambda-uploaderを利用する場合には、lambda.jsonをDevとPrdに分けて、--configオプションで切り替えるようにすると良さそう。

1
1
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
1
1