Chapter12 Hands-on #6 : Bashoutter’
今回使用するhandsonフォルダーは以下のコマンドより、ローカルにダウンロードしたものを使用する。
まず,以下のコマンドを実行する。
# handsonフォルダーをローカルにダウンロードする $ git clone https://github.com/tomomano/learn-aws-by-coding-source-code.git # プロジェクトのディレクトリに移動 $ cd learn-aws-by-coding-source-code/handson/bashoutter # venvを作成し,依存ライブラリのダウンロードを行う $ python3 -m venv .env $ source .env/bin/activate $ pip install -r requirements.txt # デプロイを実行 $ cdk deploy
AWSコンソールからデプロイ済みのエンドポイントの一覧が確認できる。
さらにAPIをクリックし以下のページに移る。 すると,それぞれのメソッドの詳細を見ることができる。
さらにS3のコンソール画面に移ると,Bucketsの「bashouter-」で始まるランダムな名前のバケットが見つかる。
バケットの中身も見ることができる。 index.hemlやcss/,js/などのディレクトリがある。 これらは,ウェブページの枠を定義している静的コンテンツである。
APIリクエストを送信する
これより,デプロイしたアプリケーションに対し,実際にAPIリクエストを送信してみる。以下のコマンドを実行して,先程デプロイを実行したときに得られたAPIのエンドポイントのURL(Bashoutter.BashoutterApiEndpoint = XXXX)をコマンドラインの変数に設定しておく。
$ export ENDPOINT_URL=XXXX
次に,俳句の一覧を取得するために,GET/haikuのAPIを送信してみる。
$ http GET "{ENDPOINT_URL}/haiku"
現時点では,まだ誰も俳句を投稿していないので,空の配列([])が返ってくる。
俳句の投稿,GETリクエスト
次に,POST/haikuを使って俳句を投稿してみよう。
$ http POST "${ENDPOINT_URL}/haiku" \ username="松尾芭蕉" \ first="閑さや" \ second="岩にしみ入る" \ third="蝉の声"
投稿されれば,以下のような表示が出る
ここで,再びGETリクエストを送信してみる。先程作成した俳句が投稿されていることが確認できる。
いいねの追加
次に,以下のコマンドより”PATCH /haiku/{item_id}”を呼ぶことでこの俳句にいいねを追加してみる。XXXXは,先程GETリクエストを送信した際に表示された,”item_id”を代入する。
$ http PATCH "${ENDPOINT_URL}/haiku/"XXXX
実行結果
ここで再びGETリクエストを送信してみる。
”like”が1増えたことが確認できる。
俳句の削除
最後に,以下のコマンドよりDELETEリクエストを送ることで俳句の削除を行ってみる。(XXXXはitem_idの値)
$ http DELETE "${ENDPOINT_URL}/haiku/XXXX"
実行結果
また,GETリクエストを送信してみると返り値が空([])になっていることが確認できる。
大量のAPIリクエストをシミュレートする
SNSのように多数のユーザーガイルのような状況では,1秒間に数千件以上の投稿がなされている。そこで,以下のコマンドを実行することでテストとして,APIを300回実行してみる。
$ python client.py $ENDPOINT_URL post_many 300
実行結果
先程のようなコマンドにより,大量の俳句を投稿するとデータベースに無駄なデータが大量に溜まっていってしまう。
以下のコマンドを実行することで,データベースを完全に空にできる。
$ python client.py $ENDPOINT_URL clear_database
実行結果
Bashoutter GUIを動かしてみる
今までは,コマンドラインからAPIを送信していた。ウェブアプリケーションでは,これと同じことがウェブブラウザの背後で行われ,ページのコンテンツが表示されている。
この章の最後にAPIとGUIの結合されるとどうなるか確認を行う。
”Bashoutter.BucketUrl=XXXX”で得られたURL(XXXXの部分)をウェブで検索してみる。すると,以下のような画面が出る。
ここで,俳句を投稿してみる
そして,GETリクエストを送信して投稿されたことを確認する
アプリケーションの削除
以下のコマンドを実行して,スタックを削除して終了。
$ cdk destroy