AWS APIを用いた俳句アプリケーションの作成


 
今回はこれまで用いてきたDynamoDBやLambda、S3に加えAPI Gatewayを用いて俳句アプリケーションを作成しました。
 
nissin-geppox.hatenablog.com
nissin-geppox.hatenablog.com
nissin-geppox.hatenablog.com

 
また、今回も使用させていただくhandsonフォルダーは以下のコマンドより、ローカルにダウンロードしたものを使用しました。

$ git clone https://github.com/tomomano/learn-aws-by-coding-source-code.git


 

アプリケーションのデプロイ

 
まず、ローカルにダウンロードしたhandsonフォルダ内に用意されたファイルを利用するために、以下のコマンドのようにプロジェクトのディレクトリに移動しました。

$ cd learn-aws-by-coding-source-code/handson/bashoutter

  
次にvenvを用いて、Pythonの依存ライブラリをインストールしました。

$ python3 -m venv .env
$ source .env/bin/activate
$ pip install -r requirement.txt

 
最後にデプロイを行いました。

cdk deploy


 
デプロイに成功するとターミナル上に以下のような出力が表示されます。
 

 
ここに表示されている"Bashoutter.BashoutterApiEndpointE9A7B94F = "以降に表示されている文字列は以降のコマンド実行に使用します。
 
また、"Bashoutter.BucketUrl = "以降の文字列はデプロイしたアプリケーションをGUIで操作する際に必要になります。


 
AWSコンソール上のAPIには以下のような項目が追加されました。
 

 
また、S3のバケットには以下のようなオブジェクトが追加されました。
 




 

ターミナルからのAPIリクエストの送信

 
デプロイしたアプリケーションをターミナル上から操作しました。
 
まず、先ほど表示された文字列を変数、ENDPOINT_URLに代入しました。

$ export ENDPOINT_URL=<Bashoutter.BashoutterApiEndpointE9A7B94F>

 
次に、以下のコマンドより俳句の一覧を表示するGET/haikuAPIを送信しました。

$ http GET "${ENDPOINT_URL}/haiku"

 
このコマンドにより、以下のようにターミナル上に出力されました。
 

 
この画像より、まだ、俳句が要素に追加されていないことがわかります。

 
よって、以下のコマンドによりPOST/haikuAPIを用いて俳句を追加しました。

$ http POST "${ENDPOINT_URL}/haiku" \
> username="与謝蕪村" \
> first="春の海" \
> second="ひねもすのたり" \
> third="のたりかな"

 
このコマンドにより、以下のようにターミナル上に出力されました。
 

 
これにより、俳句が追加されたのでGET/haikuAPIを用いて確認しました。
 

 
先ほど追加した俳句が確認できます。


 
次に、追加した俳句にいいねを追加します。
 
いいねを追加するには以下のコマンドより、PATCH/haikuAPIを送信することで行うことができます。
 
また、コマンド中に入力するはGET/haikuAPIを用いることにより調べることができます。

$ http PATCH "${ENDPOINT_URL}/haiku/<item_id>"

 
このコマンドを用いることで、以下の画像のようにlikesの値が1増加しました。
 


 
最後に追加した俳句をDELETE/haikuAPIを用いることによりデータベースから削除しました。
 
俳句の削除は以下のコマンドより行うことができます。

$ http DELETE "${ENDPOINT_URL}/haiku/<item_id>"

 
以下の画像はGET/haikuAPIを送信した際のターミナル上の出力です。
 

 
追加された俳句が削除されていることが確認できます。




 

大量のAPIリクエストの送信

 
以下のコマンドより、APIリクエストを300回送信した。
 
APIリクエストの送信にはhandsonファイル内のclient.pyを使用しました。

$ python client.py $ENDPOINT_URL post_many 300

 
このコマンドにより、ターミナル上に以下のように出力されました。
 


 
この出力が表示されるまでにかかった時間は数秒であり、300回のAPIリクエストが短時間で実行が完了したことを表しています。
 
これにより、このサーバーレスアプリケーションは多数のユーザによる同時の投稿にも対応することができることがわかりました。




 

GUIを用いた操作

 
デプロイ成功時に表示された"Bashoutter.BucketUrl = "以降の文字列をウェブブラウザ上に入力することにより、これまで行ってきた操作をGUIを用いて行うことができます。
 
文字列を入力すると以下のような画面が表示されます。
 

 
この画面上で以下のように俳句を追加しました。
 

 
追加した俳句はREFRESHをクリックすることにより表示することができます。
 
また、表示された俳句にいいねを追加することができます。
 




 

アプリケーションの削除

 
アプリケーションの削除は以下のコマンドより行うことができます。

$ cdk destroy