4
2

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 5 years have passed since last update.

Lambda関数のローカル作成方法(chalice)

Last updated at Posted at 2019-05-22

lambda-uploaderの記事を書きましたが続いてchaliceのご紹介を。

chalice

chaliceはAWS謹製のツールで、非常に簡単にLambda + API Gatewayをデプロイできるすぐれものです。
https://chalice.readthedocs.io/en/latest/

インストール〜デプロイ

公式サイトにも記述がありますが、

$ pip install chalice
$ chalice new-project helloworld && cd helloworld
$ chalice deploy

たったこれだけでLambda + API Gatewayのデプロイをしてくれます。
デプロイが完了すると以下のように生成されたエンドポイントをガイドしてくれます。

Creating deployment package.
Creating IAM role: helloworld-dev
Creating lambda function: helloworld-dev
Creating Rest API
Resources deployed:
  - Lambda ARN: arn:aws:lambda:ap-northeast-1:000000000:function:helloworld-dev
  - Rest API URL: https://000000.execute-api.ap-northeast-1.amazonaws.com/api/

Flaskをベースに作られているので、Flaskに馴染みのある方であればすぐにご利用いただけるかと。また、以下のコマンドを実行するとローカルでサービス起動できるので、デプロイ前のローカルテストもできます。

chalice local

Lambdaの設定カスタマイズ

chaliceを使ってデプロイするとIAMロール作成など必要な設定を自動で実行してくれます。ただ、運用によっては困るケースもありますよね。以下の設定ファイル(config.json)をカスタマイズすることで手動で指定することもできます。

$ tree -a
.
├── .chalice
│   └── config.json
├── app.py
└── requirements.txt

例えば、既存のIAMロールを指定したい場合などは以下のように設定します。

{
  "version": "2.0",
  "app_name": "app",
  "stages": {
    "dev": {
      "autogen_policy": true,
      "api_gateway_stage": "dev"
    },
    "beta": {
      "autogen_policy": false,
      "iam_policy_file": "beta-app-policy.json"
    },
    "prod": {
      "manage_iam_role": false,
      "iam_role_arn": "arn:aws:iam::...:role/prod-role"
    }
  }
}

上の例では、3つのステージ(dev, beta, prod)を指定しています。devステージはポリシーを自動生成します。betaステージは設定ファイル(.chalice/beta-app-policy.json)をロードし、IAMロールとの関連付けを行います。prodステージは、IAMロールの変更はされません。Lambda関数に指定されたロール(arn:aws:iam::...:role/prod-role)の設定のみを行います。

詳細は公式を参照してくださいませ。

スケジュール、SNS、SQS、S3イベント

chaliceは、API Gateway以外にもスケジュール、SNS、SQS、S3イベントの設定もサポートしています。サーバーレス構成のバリエーションが広がりますね。
https://chalice.readthedocs.io/en/latest/topics/events.html#

まとめ

最高ですね。
ただ、このツールがサポートしているのはpythonのみです。サーバーレス環境のバックエンドをpythonで手軽に書きたい方にはオススメです。お試しいかがでしょうか?

4
2
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
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?