この記事の目次
「AWS Chalice」とは?
「AWS Chalice」とは、「AWS Lambda」を利用するサーバーレスアプリケーション構築用の「マイクロサービスフレームワーク」です。
「AWS Chalice」は、Python製のオープンソースソフトウェアとして、「aws org」のGitHubで公開されています。
「AWS Chalice」を活用することで、「Amazon API Gateway」と「AWS Lambda」を利用するアプリケーションを迅速に構築・デプロイすることが可能です。
「マイクロサービスフレームワーク」とは?
「マイクロサービスフレームワーク」とは、「マイクロサービスアーキテクチャ」を構築するための最小限の機能に絞り込んだフレームワークです。
そもそも「マイクロサービスアーキテクチャ」とは、アプリケーションを小規模なサービス群(マイクロサービス)を組み合わせて構築する設計手法のことです。
これらのマイクロサービスは、お互いに「疎結合」な状態で接続し、「RESTful API」等によりデータを連携します。
つまり「マイクロサービスフレームワーク」とは、「マイクロサービスアーキテクチャ」を構築するために、各開発言語で用意されたフレームワークになります。
「AWS Chalice」のメリットとは?
「AWS Chalice」のメリットは、「フォーカス」、「デコレーター」、「マルチデプロイ」の3点が挙げられます。
それぞれのメリットについて詳しく解説します。
「AWS Chalice」のメリット1:フォーカス
「AWS Chalice」の1つ目のメリットとして、「フォーカス」があります。具体的には、アプリケーションをデプロイするために必要なリソースやサービスが不要で、アプリケーションのコード作成に「重点的に取り組む(フォーカス)」ことが可能になります。
また「AWS Chalice」は、アプリケーションに必要なリソース類に対して、どのように設定や配置を行うかも自動的に決定してくれます。
「AWS Chalice」のメリット2:デコレーター
「AWS Chalice」の2つ目のメリットとして、「デコレーター」があります。ここでの「デコレーター」とは、Pythonの関数を修飾するための仕組みやその関数のことです。
「AWS Chalice」のAPIは、サーバーレスアプリケーションを作成する際に利用されますが、普段から馴染みのある「デコレーター」をベースとした構文ルールを採用しています。
例えば、「Flask(Python用の軽量なWebアプリケーションフレームワーク)」、「bottle(Flaskと同様)」、「FastAPI(Python用の高速なWebフレームワーク)」等の構文ルールが採用されています。
つまり、「AWS Chalice」を利用することで、フレームワーク等を利用するための学習を新たに行う必要がなく、あまり時間を掛けずにアプリケーションを動作させることができます。
「AWS Chalice」のメリット3:マルチデプロイ
「AWS Chalice」の3つ目のメリットとして、「マルチデプロイ」があります。この「マルチデプロイ」とは、既に使用して馴染みのある多種多様なデプロイツールを利用することを意味します。
例えば、「AWS CloudFormation」や「Terraform」に加えて、Python用「AWS SDK」をベースにビルトインされたデプロイツールを利用してデプロイすることが可能です。
「AWS Chalice」の特徴とは?
「AWS Chalice」の特徴について、「パッケージング」、「デプロイツール」、「CI/CDパイプライン」、「ローカルテスト」、「Websocket API」、「IAMポリシー生成」の6点があります。
これらの特徴について、詳細に解説してきます。
「AWS Chalice」の特徴1:「パッケージング」
「AWS Chalice」の特徴の1つ目として、「パッケージング」があります。具体的には、「AWS Chalice」はPython用パッケージツールを備え付けの機能としてサポートしています。
また「AWS Chalice」は、アプリケーションのパッケージ化を自動で実行し、設定ファイルに基づいてサードパーティの依存関係をインストールしてくれます。
「AWS Chalice」の特徴2:デプロイツール
「AWS Chalice」の特徴の2つ目として、「デプロイツール」があります。具体的には、Python用「AWS SDK」を利用するように作られた「AWS Chalice」のデプロイツールを使うことが可能です。
また「AWS Chalice」を利用して、「AWS CloudFormation」や「Terraform」によってデプロイできるパッケージを生成することも可能です。
「AWS Chalice」の特徴3:CI/CDパイプライン
「AWS Chalice」の特徴の3つ目として、「CI/CDパイプライン」があります。
具体的には「AWS Chalice」は、「AWS CodePipeline」と「AWS CodeBuild」で作成されたデプロイ用「CI/CD(継続的インテグレーション/継続的デリバリー)パイプライン」を自動的に生成してくれます。
コード修正をGitに反映するだけで、修正版のアプリケーションをいつでもデプロイすることができます。
「AWS Chalice」の特徴4:ローカルテスト
「AWS Chalice」の特徴の4つ目として、「ローカルテスト」があります。具体的には、テスト用のローカルサーバを利用して「REST API」をテストできます。
つまり、コード修正とその動作確認のサイクルを高速で実行できるようになり、AWS上にデプロイする前に十分にテストを行えるようになります。
「AWS Chalice」の特徴5:Websocket API
「AWS Chalice」の特徴の5つ目として、「Websocket API」があります。具体的には、「Amazon API Gateway」を利用して「Websocket API」を作成できます。
また接続したクライアント側にメッセージを送り返す「ランタイムAPI」を含めることもできます。
「AWS Chalice」の特徴6:IAMポリシー生成
「AWS Chalice」の特徴の6つ目として、「IAMポリシー生成」があります。具体的には、ソースコードを走査する結果に基づいて、アプリケーション用のIAMポリシーを自動的に生成してくれます。
「AWS Chalice」の利用方法
「AWS Chalice」の利用方法について、サンプルコードと共にご紹介します。
「AWS Chalice」は、「AWS Lambda for Python」と「Amazon API Gateway」とによるAPI環境を構築できるAWSのアプリケーションフレームワークですが、その一部について解説します。
コードサンプル1:メッセージ返却
あるURLにアクセスすると指定したメッセージを返却する場合のPythonのサンプルコードをご紹介します。
以下のサンプルコードでは、「/hello」へのアクセスに対して「{“message”: “Welcome to GG Media!} を返却(レスポンス)します。
from chalice import Chalice app = Chalice(app_name='GG_Media_Chalice')
@app.route('/hello') def welcome(): return {'message': 'Welcome to GG Media!'}
コードサンプル2:AWS上へのデプロイ
作成したコードを実際にAWS上にデプロイする際のBash用サンプルコードをご紹介します。
「AWS Chalice」ではCLIも提供しており、デプロイするための「deploy」コマンドをこのサンプルコードでは利用しています。
$ chalice deploy
Creating deployment package.
Creating IAM role: GG_Media_chalice-dev
Creating lambda function: GG_Media_chalice-dev
Creating Rest API
Resources deployed:
- Lambda ARN: arn:aws:lambda:ap-northeast-1:************:function:GG_Media_chalice-dev
- Rest API URL: https://**********.execute-api.ap-northeast-1.amazonaws.com/api/
「AWS Chalice」を活用してサーバーレスアプリケーション開発しよう!
こちらの記事では、「サーバーレスアプリケーション」を高速で開発するためのフレームワーク「AWSChalice」について、その概要やメリットについて解説しました。
またその特徴や実際に利用する際のサンプルコードも紹介しました。
これらをご参考に、「AWS Chalice」を利用したサーバーレスアプリケーションの開発に挑戦してみてはいかがでしょうか。