web-dev-qa-db-ja.com

Lambda出力をAPIGatewayヘッダーにマッピングする

Lambda関数からのJSON出力をAPIGateway呼び出しのヘッダーにマッピングしようとしています。ここでの例として、リダイレクトシナリオを検討できます。そこで、APIGateway呼び出しからの応答にLocationヘッダーを追加したいと思います。

Lambda関数からのJSON出力:

{
    Location: 'http://google.com'
}

「メソッド応答」->「応答ヘッダー」で、Locationヘッダーを目的のHTTPステータスコードに追加できます。

次に、「統合応答」->「ヘッダーマッピング」で、Locationヘッダーのマッピングをsomethingに追加できます。

今私の質問は、これ何かはどうあるべきかということです。

注:integration.response.header.Locationを試したか、「マッピングテンプレート」を使用しましたが、今のところうまくいきません。

現時点では不可能な可能性があります( https://forums.aws.Amazon.com/thread.jspa?messageID=651482 )が、API Gateway/Lambdaは進化しているため、とにかくすぐに聞いてみます。

18

今日(2015年9月25日)のAWS開発者フォーラムから、これはまだ可能ではありませんが、将来的に行われる可能性があります。

API Gatewayは現在、統合応答本文から応答ヘッダーへのマッピングをサポートしていませんが、将来的にはこれのサポートを追加する予定です。

フォーラム投稿はこちら

2015年12月の編集:上記のリンク先のスレッドでのAWS従業員による投稿に従って追加された機能。それを指摘してくれた Peter Fox に感謝します。

4
rpmartz

本日(2016年1月)現在、ケースにintegration.response.body.Locationを指定するだけで機能します。

10
MrTJ

今日(2015年11月12日)、統合応答でLocationヘッダーをバックエンドAPIからLocationヘッダーに渡す方法を探していました。

この構成は機能し、バックエンドAPIからLocationヘッダーを取得できました。

enter image description here

Tobiasによって提案された解決策は現在可能であるように見えます。ただし、LocationヘッダーはバックエンドAPIを指しているため、これは私たちが望んでいることではありません。これに対する解決策を見つけて、ここに投稿しようと思います。

実際には、元の応答によって提供されたすべてのヘッダーにアクセスできるようです(Content-typeが含まれている場合は、次のように入力できます:integration.response.header.Content-type)。ただし、新しいヘッダーを追加する方法がわかりません(静的な場合を除く)。

1
Francis Toth