LoginSignup
6
5

More than 5 years have passed since last update.

API GatewayのHTTPプロキシ統合のURL・リクエストヘッダーを眺める

Last updated at Posted at 2019-02-10

API GatewayのHTTPプロキシ統合の設定ごとのリクエストヘッダー・URLの値を眺めます。

パターン

  1. リソースパスが / (HTTP統合)
  2. リソースパスが /{myProxy+}
  3. リソースパスが /{myProxy+} & CORSを有効に設定

準備

API Gatewayの裏側はVPC_LINK → NLB → Flaskのアプリ@ECSの構成です。

Flaskのアプリはこちら。リクエストヘッダーを返すだけの簡単な構成です。

1. リソースパスが / (HTTP統合)

http://example.com/
X-Amzn-Apigateway-Api-Id: fc5vwzacp2
X-Amzn-Trace-Id: Root=1-5c5fb0f2-843387cadeadbf4c9d3c9036
User-Agent: AmazonAPIGateway_fc5vwzacp2
Accept: application/json
Host: example.com
Connection: Keep-Alive

次に登場するHTTPプロキシ統合よりヘッダーの要素数が少ないです。

ちなみに /しか指定していない状態で /hoge にアクセスすると、↓のようなエラーで失敗します。/≠ワイルドカードなんですね。

{"message":"Missing Authentication Token"}

2. リソースパスが {myProxy+}

http://example.com/hoge
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: en,en-US;q=0.9,ja;q=0.8
Cache-Control: max-age=0
Cookie: s_pers=%20s_vnum%3D1546597042049%2526vn%253D1%7C1546597042049%3B%20s_invisit%3Dtrue%7C1544007119025%3B%20s_nr%3D1544005319028-Repeat%7C1551781319028%3B
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
X-Amzn-Trace-Id: Root=1-5c5fb581-c2979900f0d0ce0267df3340
X-Forwarded-For: 114.190.145.219
X-Forwarded-Port: 443
X-Forwarded-Proto: https
X-Amzn-Apigateway-Api-Id: fc5vwzacp2
Host: example.com
Connection: Keep-Alive

EndpoinrtURLの値が興味深いです。API Gatewayのリソースの階層構造とは無関係に、メソッドの統合リクエストの設定時に指定したURLに対してリクエストがなされなます。(他の階層構造でも試しました)

3. リソースパスが /{myProxy+} & CORSを有効に設定

リクエストヘッダーは特に変わらないみたいですね。

http://exmaple.com/hoge
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: en,en-US;q=0.9,ja;q=0.8
Cookie: s_pers=%20s_vnum%3D1546597042049%2526vn%253D1%7C1546597042049%3B%20s_invisit%3Dtrue%7C1544007119025%3B%20s_nr%3D1544005319028-Repeat%7C1551781319028%3B
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
X-Amzn-Trace-Id: Root=1-5c5fc5bd-ffb8781faee31572026e8616
X-Forwarded-For: 114.190.145.219
X-Forwarded-Port: 443
X-Forwarded-Proto: https
X-Amzn-Apigateway-Api-Id: mtwqhaxbhe
Host: exmaple.com
Connection: Keep-Alive

おまけ

EndpointURLの置換文字列は必ずしもリソース名と同じでなくて良い

Endpoint URLの置換文字列はパスパラメータからマッピングされたリクエストパラメータに過ぎないので、別途リクエストパラメータをマッピングすれば置換文字列の値を変えることが可能。
image.png

リソースの設定されていないパスにアクセス

{"message":"Missing Authentication Token"}

リソースの設定されていないパスにアクセスするとこうなります。

貪欲パスのフォーマット


{}のなかに文字列と+マークで指定したリソースをGreedy Pathというそうです。
HTTPプロキシ統合にも関わらず指定しない場合、エラーが発生。

日本語だと貪欲パス、ってところでしょうか。

貪欲パスの重複制限


貪欲パスは2個以上持てないみたいです。それはそうか。

参考

6
5
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
6
5