LoginSignup
0
0

AWS APIGatewayを使ってお手軽にAPIモックを作成する

Posted at

はじめに

APIGatewayの学習がてらチュートリアルやネット上の記事を見ているとlambdaを使わずお手軽にMockの機能を用いて、お手軽にSPAサイトを作れることが分かったので記事にしてみました。
フロントエンジニアの方はサクッとモックAPIを作ってフロント側に表示できて便利なので是非に。

利用するサービス、技術

  • APIGateway(REST API)
    • MockのAPIを作成するために使います。
  • S3
    • HTMLファイルをホスティングするために使います。(今回はCDNのVueを使っています。)
  • Cloudfront
    • APIGatewayのMockとS3上のHTMLファイルをキャッシュするために使います。

APIGatewayにてモックのAPI作成

APIの選択、構築

AWSコンソール>APIGateway>RESTAPIにて「構築」を押し、以下添付の画像の画面へ
スクリーンショット 2023-08-22 23.59.00.png

API名は個人の好きなものを記入し、「APIの作成」を押す。

リソース(パス)の作成

APIGatewayコンソール>API>先程作成した名前のAPIを選択し以下の画面へ遷移する。

スクリーンショット 2023-08-23 0.11.51.png

この「リソース」と呼ばれるものは作成後、実際にアクセスするパスになります。
本記事で自分がやっているようなお試しではなく、今後バックエンドを本格的に作っていくのであれば実際にアクセスするであろうパス名にしておく良いかもしれません。

今回、自分はhelloという名前でリソースを作成しました。

メソッドの作成

上記までの工程を行うとサイドメニュー右横のリソースの欄に/hello(作成したリソース名)が表示されていると思います。こちらをクリックし選択した状態でリソース欄の「アクション」のドロップダウンメニューを押し、メソッドの作成を選びます。

するとリソース名(配下)に空欄のプルダウンが表示されるため、そこから作成するメソッドを選択します。(今回はGETを選択しました。)作成したメソッドを選択すると以下画面になるため、上記のように「Mock」を選択します。
スクリーンショット 2023-08-23 0.31.10.png

リソース欄の作成したメソッド名/GET(メソッド名)をクリックし以下画像の画面に遷移します。
今回は「総合レスポンス」を編集するので選択し編集画面へ。

スクリーンショット 2023-08-23 23.13.51.png

マッピングテンプレートにapplication/jsonを記入し、エディターに返したいJSONを記述します。

スクリーンショット 2023-08-23 23.25.11.png

今回記述したJSON

{
    "user": "hoge",
    "message": "hello",
    "time_stamp": "Wed Aug 16 2023 15:46:13"
}

デプロイとテスト

上記までの工程を終えたら外部公開のためデプロイを行います。
作成したメソッド名/GET(メソッド名)を再度選択し、ドロップダウンから「APIのデプロイ」を押し、
スクリーンショット 2023-08-23 23.36.37.png

ポップアップのデプロイされるステージを記入し、デプロイします。(ステージ名はアクセスするパスの一部になります。今回はdevとしました。)

スクリーンショット 2023-08-23 23.40.45.png

実際にデプロイされているかcurlで確認しましょう。
urlはAPIGatewayコンソールサイドメニュー/ステージ/作成したメソッド名/GET(メソッド名)の順で遷移していくとたどり着きます。

curl  https://{ここは構築したAPIGWのユニークな文字列}.execute-api.ap-northeast-1.amazonaws.com/dev/hello
{
    "user": "hoge",
    "message": "hello",
    "time_stamp": "Wed Aug 16 2023 15:46:13"
}%                                                                                                                                                                                         

無事設定した値が返ってきました。

簡易的なフロントの作成

続いて作成したモックAPIを表示するフロントおよび、2つのリソースをキャッシュするCloudfrontを設定していきます。

HTMLファイル作成

以下のHTMLファイルを用意します。

<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="utf-8">
  <title>multi-origin-spa-test</title>
</head>

<body>
<div id="app">
  <ul>
    <li>
        名前: {{ user }}
    </li>
    <li>
        メッセージ: {{ message }}
    </li>
    <li>
        時刻: {{ timestamp }}
    </li>
  </ul>
</div>

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script>
new Vue({
  el: '#app',
  data: {
    result: '',
    user: '名無し',
    message: '特になし',
    timestamp: 'Wed Aug 16 2023 15'
  },
  mounted: function(){
    const api = axios.create({
      baseURL: "https://{ここは構築したCFのユニークな文字列}.cloudfront.net/dev/", 
      headers: {
        'Content-Type': 'application/json'
      },
      responseType: 'json',
      timeout: 3000
    })

    api.get("hello")
    .then(response => {
      this.user = response.data.user;
      this.message = response.data.message;
      this.timestamp = response.data.time_stamp
    })
    .catch(err => {
      console.error(err)
    })
  }
})
</script>
</body>

</html>

s3の設定

特に設定はそのままで変更することなくバケットを作成。
スクリーンショット 2023-08-25 0.16.17.png

作成したバケットの画面より先程作成したindex.htmlファイルをアップロードする。
スクリーンショット 2023-08-25 0.17.59.png

s3コンソール/作成したバケット名/プロパティ(一番下までスクロール)/静的ウェブサイトホスティングより設定を行う。
スクリーンショット 2023-08-25 0.19.42.png
有効にするを選択し、インデックスドキュメントをindex.html(アップロードしたファイル名)に設定し保存。

Cloudfrontディストリビュージョンの設定

s3に対する設定

cloudfrontコンソール/ディストリビュージョンを作成よりオリジンドメインは作成したS3バケットのドメインを設定。
スクリーンショット 2023-08-25 0.32.02.png

外部からS3へ直接アクセスできないようにOAIを設定します。(新しいOAIを作成を押すと作成できます。)
スクリーンショット 2023-08-25 0.34.03.png

他の設定としてACMより証明書を取得し、ディストリビュージョンに設定します。

他の設定はそのままで作成してOKです。

APIGatewayに対する設定

cloudfrontコンソール/ディストリビュージョン/ビヘイビアより設定していきます。
オリジンとオリジングループは作成したAPIGatewayのドメインを設定します。
スクリーンショット 2023-08-25 0.46.57.png

「ヘッダーを追加」を以下画像のように設定します。
スクリーンショット 2023-08-25 0.51.12.png

これで一旦設定は終わりです。
実際にCloudfrontのURLより確認してみましょう。

cloudfrontのURLへアクセス

生成されたリンクに/index.htmlを追加してブラウザより開いてみます。

スクリーンショット 2023-08-25 0.56.14.png

無事APIGatewayのMockの値が取れました。
ここまで1時間もかからないと思います。お手軽なのでぜひ試してみてください。

以上で終了になります。読んでいただきありがとうごいました〜

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0