Buonasera. クラウドインテグレーション事業部の菊池です。
AWS Lambda関数を開発するにあたって、みなさんはどのような開発フレームワークを利用してますでしょうか?
AWS SAM、Serverless Framework、Jeffyなどありますが、今回から数回に渡ってAWS Chaliceを紹介していきます。
第1回目にあたる本記事では、AWS ChaliceでHello Worldしていきます。
AWS Chaliceとは
AWS Chalice(以降Chalice)は以下の特徴を持ったフレームワークになります。
- AWSが提供しているPythonフレームワーク
- AWS Lambda + Amazon API GatewayのサーバーレスAPIの実装とデプロイを簡潔に行える
- 様々なトリガーに対応したAWS Lambdaも開発可能
- 単一のAWS Lambda関数
インストール方法
Chaliceはpipでインストールします。
$ python3 -m pip install chalice --user
Hello World!
Chaliceのプロジェクトを作成します。ここではプロジェクト名をhelloworld
とします。
プロジェクト作成はchalice new-project
コマンドを使います。
$ chalice new-project helloworld
プロジェクト名のフォルダが作成されるので、フォルダ内に移動しAWS環境にデプロイします。
デプロイはchalice deploy
コマンドを使います。
$ cd helloworld $ chalice deploy 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:xxxx:function:helloworld-dev - Rest API URL: https://yyyy.execute-api.ap-northeast-1.amazonaws.com/api/
出力の最後にAPI Gatewayの出力先が表示されるので、APIを叩いてみます。
$ curl https://yyyy.execute-api.ap-northeast-1.amazonaws.com/api/ {"hello":"world"}
Hello Worldできました!
後片付け
Chaliceによってデプロイされたリソースは.chalice/deployed/dev.json
に出力されています。
{ "resources": [ { "name": "default-role", "resource_type": "iam_role", "role_arn": "arn:aws:iam::xxxx:role/helloworld-dev", "role_name": "helloworld-dev" }, { "name": "api_handler", "resource_type": "lambda_function", "lambda_arn": "arn:aws:lambda:ap-northeast-1:xxxx:function:helloworld-dev" }, { "name": "rest_api", "resource_type": "rest_api", "rest_api_id": "yyyy", "rest_api_url": "https://yyyy.execute-api.ap-northeast-1.amazonaws.com/api/" } ], "schema_version": "2.0", "backend": "api" }
これらのリソースはchalice delete
コマンドを使って削除することができます。
$ chalice delete Deleting Rest API: yyyy Deleting function: arn:aws:lambda:ap-northeast-1:xxxx:function:helloworld-dev Deleting IAM role: helloworld-dev
最後に
今回はChaliceを使ってHello Worldしました。
小規模なAPI作成にはChaliceは有用だと思います。次回からはChaliceのいろいろな機能について説明していきます。