LoginSignup
4
1

More than 5 years have passed since last update.

API Gateway で URL クエリパラメータの扱いで混乱した

Last updated at Posted at 2017-12-01

gumi TS&D という部署のクラウドエンジニア担当です.
(12/1 当日に Calendar 作って, 当日夕方書きました)

ご存知の通り簡単な API であれば API Gateway は最適です.
構築も AWS マネージメントコンソールからドキュメント見ながらぽちぽちしていくだけなのでとても楽かと思います.

しかし, ぽちぽち構築は自動化の妨げになるので, クラウドエンジニアとしてはコード化しないといけません.

今回簡単な API を API Gateway で作る機会があり, クエリパラメータの扱いで混乱したので紹介します.

(ちなみに作成した API)

Untitled.png

今回作った API は, POST したファイルを S3 の指定したパスに保存するものです.

混乱箇所

CloudFormation の Template(抜粋) は以下のようになります.

ApiGateway:
    Type: "AWS::ApiGateway::Method"
    Properties:
        RequestParameters:"method.request.querystring.objectPath": true
        Integration:
            RequestParameters:
                "integration.request.path.objectPath":  "method.request.querystring.objectPath"
        Uri: !Sub "arn:aws:apigateway:ap-northeast-1:s3:path/sample_bucket/{objectPath}"
        ...
  • 「RequestParameters」に受け付ける URL クエリパラメータの設定
  • 「Integration.RequestParameters」で変数にマッピング

この二つの設定が必要.

私は「RequestParameters」で混乱した.

Properties 直下の「RequestParameters」は「メソッドリクエスト」の URL パスパラメータの設定.
マネージメントコンソールだと下の SS の通り.

スクリーンショット 2017-12-01 15.09.56.png

「Integration.RequestParameters」は「統合リクエスト」の URL パスパラメータの設定.
マネージメントコンソールだと下の SS の通り.

スクリーンショット 2017-12-01 15.54.19.png


さらに「Integration.RequestParameters」に関しては, マネージメントコンソールと同じようにパラメータ名だけの指定ではダメで以下のように指定しなければならない.

integration.request.<location>.<name>
4
1
1

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
4
1