2021/05/26

「AWS Chalice」とは?その特徴や利用方法を詳細に解説します!

 
  

「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」を利用したサーバーレスアプリケーションの開発に挑戦してみてはいかがでしょうか。

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】