12章
準備
俳句アプリを作るために,以下を入力して,ローカルにダウンロードした.
git clone https://github.com/tomomano/learn-aws-by-coding-source-code.git
デプロイを行う
先程ローカルにダウンロードしたフォルダを利用して進めていく.まずはディレクトリの移動から行う.
cd learn-aws-by-coding-source-code/handson/bashoutter
それから,awsのシークレットキーを設定し,以下を入力
python3 -m venv .env source .env/bin/activate pip install -r requirements.txt cdk deploy
デプロイが完了すると,次の画面が出てくるはずだ.
後に出力された2つの「=」以下のものは使用するため,ひかえておく.
デプロイができ,awsのAPI Gatewayをみると,以下の画面のようになっているはずだ.
また,S3→バケットでは,以下の画面のようになっている.
APIリクエストの送信
まず,デプロイの実行時に出力された,Bashoutter.BashoutterApiEndpointの「=」以下をENDPOINT_URLに代入しておく.
export ENDPOINT_URL=「=」以下
では,俳句を投稿する前に一覧を取得する.当たり前だが,何も投稿していないので空の配列が返ってくる.
http GET "${ENDPOINT_URL}/haiku"
これから俳句を投稿して,もう一度一覧を取得してみる.
まず,POSTコマンドで俳句を投稿する.
http POST "${ENDPOINT_URL}/haiku" \username="松尾芭蕉" \first="閑さや" \second="岩にしみ入る" \third="蝉の声"
このコマンドを入力すれば,以下のように出力される.なお,俳句の内容は何でも良い.
追加した俳句を取得するため,もう一度GETコマンドを使い,取得する.
http GET "${ENDPOINT_URL}/haiku"
俳句の追加ができていることが確認できる.
次に,俳句にいいねをつける.いいねしたい俳句のitem_idを使用することで対象の俳句にいいねができる.
先程投稿した,松尾芭蕉の俳句にいいねしたい場合を考える.POSTやGETコマンドでの出力のitem_idを見てみる.
入力は以下のようにする.今回はitem_idをどうしたかの写真も載せておく.
http PATCH "${ENDPOINT_URL}/haiku/haiku_id"
もう一度GETコマンドを入力する.すると出力は以下のようになる.likesが1.0になっているので,いいねができている.
これで一通りやり方はわかったので,最後に俳句を削除する.削除には,削除する俳句のitem_idと,DELETEコマンドを使用する.
http DELETE "${ENDPOINT_URL}/haiku/item_id"
もう一度GETコマンドを打ってみると,空になっているはずだ.
大量のAPIリクエストの送信
大量のAPIリクエストをシミュレートするために用意されているclient.pyを使い,APIを300回実行してみる.
python client.py $ENDPOINT_URL post_many 300
すると以下のような出力が返ってくる.これはAPIリクエストの実行が解決したことを表している.
それがわかれば,データベースが重くならないように削除する.
python client.py $ENDPOINT_URL clear_database
削除が完了した.
GUIを動かしてみる
GUIを動かすために,デプロイしたときに出力されたBashoutter.BucketUrlの「=」以下のリンクにアクセスする.
その後,API Endpoint URLにもデプロイ時出力されたものを入力する.
そして,名前と好きな俳句を投稿する.
日本語にしていて意味は違ってしまったが,真ん中の役職を押すと,投稿できる.また,右の更新で最新の俳句リストに更新でき,俳句の下のハートマークでいいねができる.
後片付け
俳句アプリに満足すれば,今回も以下のコマンドでスタックを削除する.
cdk destroy
cdkのバージョンにより,S3のバケットを空にしてから出ないとスタックの削除ができない.
その場合は以下のコマンドを入力してからスタックを削除する.
aws s3 rm 削除するバケット名 --recursive
おわりに
今回は,俳句アプリを用いてAPIを使ってみた.GETやPOSTの使い方を学び,webとコマンドの対応を見てみたりができるようになった.