【AWS】AWS ChaliceでAPI Gateway/Lambdaを自動生成する
はじめに
ご覧いただきありがとうございます。阿河です。
今回は小ネタです。
AWS ChaliceはPython 製のフレームワークで、PythonでAWS Lambdaを用いたサーバーレスアプリケーションを構築するにおいて、シンプルかつパワフルな機能を提供しています(公式参照)
最近触る機会があり便利だったので、アウトプットしようと思います。
API GatewayとLambdaを自動作成します。
対象者
- AWSを運用中
- Lambda/Python初心者
- API Gatewayの設定が面倒
概要
(★)がついているセクションは、今回手を動かして頂く項目です。
- CloudShell上に開発環境を作る(★)
- API GatewayとLambdaを自動生成する(★)
各種ドキュメントを参照しながら、進めていきます。
事前準備
- AWSアカウント作成
- AdministratorAccessを付与したIAMユーザーの作成
1.CloudShell上に開発環境を作る
AWS Chaliceを使用すると、Lambdaを使用するPythonアプリケーションをすばやく作成してデプロイできます。
Chalice CLIを使用すると、REST APIをAPI GatewayとLambdaを数分でデプロイできます。
まず開発環境を整えます。
CloudShellを開きましょう。
右上のCloudShellアイコンをクリックします。
CloudShell
$ python3 --version
Python 3.7.10
$ python3 -m venv venv37
$ . venv37/bin/activate
(venv37)
$ python3 -m pip install chalice
$ chalice --version
chalice 1.27.1, python 3.7.10, linux 4.14.276-211.499.amzn2.x86_64
セットアップ方法は公式に載っています。
Chaliceをインストールできたら、成功です。
2.API GatewayとLambdaを自動生成する
チュートリアルを参考にしながら、作成を進めていきます。
まずプロジェクトを作成します。
CloudShellで以下のプロジェクトを作成します。
$ cd
$ chalice new-project trans_en_jp
Your project has been generated in ./trans_en_jp
$ ls
trans_en_jp
$ cd trans_en_jp
$ ls
app.py requirements.txt
プロジェクトを作成すると、配下にディレクトリが作成されます。
またディレクトリ配下には、app.pyとrequirements.txtがあります。
app.pyは「APIの実装を行うファイル」、requirements.txtは「利用するライブラリの定義を行うファイル」です。
app.py
from chalice import Chalice
app = Chalice(app_name='trans_en_jp')
@app.route('/')
def index():
return {'hello': 'world'}
app.pyの中身には上記のようなコードが書かれています。
公式にも、app.pyについて記載があります。
ルーティングについては、こちらを参照ください。Chalice.route()メソッドは、APIに対してどのようなルートを作成するかを構築するために使用されます。
関数を @app.route(...) で装飾し、ユーザーがそのURLをリクエストするたびに、装飾した関数が呼び出されます。
このapp.pyを書き換えます。
以前作成した翻訳のコードを使います。
一部書き換えて、英語を渡すと日本語に翻訳するようにします。
from chalice import Chalice
import boto3
app = Chalice(app_name='trans_en_jp')
@app.route('/{name}')
def translate(name):
trans_client = boto3.client('translate', region_name='us-east-1')
res = trans_client.translate_text(
Text=name,
SourceLanguageCode='en',
TargetLanguageCode='ja'
)
return res.get('TranslatedText')
chalice deploy を実行すれば、アプリケーションをデプロイできます。
$ cd translate
$ chalice deploy
Creating deployment package.
Creating IAM role: trans_en_jp-dev
Creating lambda function: trans_en_jp-dev
Creating Rest API
Resources deployed:
- Lambda ARN: arn:aws:lambda:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- Rest API URL: https://xxxxxxxxxxxxxxxxxxxx.ap-northeast-1.amazonaws.com/api/
URLが発行されました。
AWSマネジメントコンソールを確認しましょう。
Lambdaのページに飛びます。
Lambda関数が作成されています。
またAPI Gatewayも自動で紐づいているようです。
CLIで行った設定に基づいて、AWS上でLambda関数が作成されたことを確認できました。
次はAPI Gatewayを見てみましょう。
GETメソッドが作成されています。
試しにURL/Hello にアクセスしてみましょう。
今回はURL/Hello にアクセスしてみました。
「Hello」が「こんにちは」に翻訳されています。
「英語を投げると日本語に翻訳して返す」APIが作成されているのが分かります。
このようにChaliceを使えば、API GatewayとLambdaをCLIベースで手軽に自動生成できます。
最後にお片付けします。
chalice delete
Deleting Rest API: xxxxxxxxxxxx
Deleting function: arn:aws:lambda:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Deleting IAM role: trans_en_jp-dev
AWSマネジメントコンソールに移動すると、API GatewayおよびLambda関数が削除されています。
さいごに
今回は簡単な検証でしたが、AWS Chaliceを使って簡単にAPI GatewayとLambda関数をデプロイできました。
お疲れ様でした!!
Discussion