Help us understand the problem. What is going on with this article?

APIgatewayとS3でRestAPIのスタブを作る

More than 1 year has passed since last update.

背景

  • コーディング課題用にAPIを2本用意する必要があった
  • S3へのProxy程度なので、APIgatewayの勉強がてら実装

API

エンドポイント

  • GET /areas
  • GET /stores?region_number={地方を示す番号}
    • クエリ文字があるので、単にS3 Proxyでは不十分

構成図

infra.png

  • S3
    • jsonファイルを設置
  • API gateway
    • IAMでS3にReadOnlyのアクセス権を付与

S3内の物理ファイル配置

/areas/all.json
/stores/region/{region_number}.json

API gatawayの設定

GET areas は S3の /areas/all.json に固定でマッピング

areas_mapping.png

GET /stores は region_numberのクエリ文字列をパスにマッピング

stores_query.png

stores_mapping.png

両方のAPIともに文字コードはutf-8に設定

charset.png

実例

API gatewayのstage名 v1 としてデプロイした

  • GET /areas
    • https://cyc6gmq1i4.execute-api.ap-northeast-1.amazonaws.com/v1/areas
  • GET /stores
    • https://cyc6gmq1i4.execute-api.ap-northeast-1.amazonaws.com/v1/stores?region_number=3

所感

  • ドメイン名当てるのが面倒だった
    • USのAWSリージョンに証明書を置いておく必要がある
  • 変換ルールは単純なものだけ
    • 例えば、ヘッダに固定値を付ける
    • 例えば、クエリをパスに変換する (今回の実装)
  • 「このクエリがないとき〜」 のような条件判定には向かない
    • GET /stores の region_numberがクエリにないときは 本当はS3の /stores/all.json を返したかった
  • 複数のクエリが付くときには不向き
    • S3に用意するファイルが組み合わせ爆発する
    • offsetpage のクエリで、追加読み込みを模擬する程度が落とし所
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away