ForgeVision Engineer Blog

フォージビジョン エンジニア ブログ

AWS ChaliceでHello World

f:id:fvkikuchi:20201007204238p:plain Buonasera. クラウドインテグレーション事業部の菊池です。
AWS Lambda関数を開発するにあたって、みなさんはどのような開発フレームワークを利用してますでしょうか?
AWS SAMServerless FrameworkJeffyなどありますが、今回から数回に渡ってAWS Chaliceを紹介していきます。
第1回目にあたる本記事では、AWS ChaliceでHello Worldしていきます。

AWS Chaliceとは

AWS Chalice(以降Chalice)は以下の特徴を持ったフレームワークになります。

  • AWSが提供しているPythonフレームワーク
  • AWS Lambda + Amazon API GatewayのサーバーレスAPIの実装とデプロイを簡潔に行える
  • 様々なトリガーに対応したAWS Lambdaも開発可能
  • 単一のAWS Lambda関数

aws.github.io

インストール方法

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のいろいろな機能について説明していきます。