質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

HTTPヘッダー

Hypertext Transfer Protocol(HTTP)の中のHTTPヘッダフィールドはHTTPの要求やレスポンスの機能しているパラメーターが含まれます。その要求もしくはレスポンスライン(メッセージの最初の一行)でメッセージヘッダを作ります。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

2574閲覧

Lambdaプロキシ統合を使用したAPIGatewayでCloudFront-viewer-countryを取得したい

camelerman

総合スコア11

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

HTTPヘッダー

Hypertext Transfer Protocol(HTTP)の中のHTTPヘッダフィールドはHTTPの要求やレスポンスの機能しているパラメーターが含まれます。その要求もしくはレスポンスライン(メッセージの最初の一行)でメッセージヘッダを作ります。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

1クリップ

投稿2018/12/04 03:37

編集2018/12/04 03:38

AWS Lambda(kotlin)とAPIGatewayを使用し、あるAPIを作成しています。

### 実現したいこと
APIGatewayから、Lambdaへ渡されるヘッダ情報に、 「CloudFront-Viewer-Country」 を入れたい。(けど入らない)

やったこと
・ヘッダ情報を出力させるログを仕込んだLambda関数を作成し、APIGatewayでAPIを設定

kotlin

1class Main :RequestStreamHandler { 2 3 @Throws(IOException::class) 4 override fun handleRequest(inputStream: InputStream, outputStream: OutputStream, context: Context) 5 { 6 val reader = BufferedReader(InputStreamReader(inputStream)) 7 val parser = JsonParser() 8 val event = parser.parse(reader) as JsonObject 9 10 logger.log(event.toString()) // eventにヘッダ情報が含まれる 11               ・ 12               ・ 13               ・ 14 } 15

・統合リクエストより、 「Lambdaプロキシ統合の使用」 にチェックを入れる
イメージ説明

・APIを叩いてログを確認する

log

1{ 2 "resource": "/test", 3 "path": "/test", 4 "httpMethod": "GET", 5 "headers": { 6 "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", 7 "accept-encoding": "gzip, deflate, br", 8 "accept-language": "ja,en-US;q=0.9,en;q=0.8,zh-CN;q=0.7,zh;q=0.6", 9 "Host": "hogehoge", 10 "referer": "hogehog", 11 "upgrade-insecure-requests": "1", 12 "User-Agent": "hogehog", 13 "X-Amzn-Trace-Id": "hogehog", 14 "X-Forwarded-For": "hogehog", 15 "X-Forwarded-Port": "443", 16 "X-Forwarded-Proto": "https" 17 } 18}

すると、ヘッダには、これだけの情報しか含まれていませんでした。

以下サイトを参考にしております。
https://qiita.com/_mogaming/items/2bd83204e212e35b2c6c

他に、試した方がいいことはありますでしょうか?

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kong

2018/12/04 05:19

https://goo.gl/4dgGjs の記事を見る限り、CloudFrontの設定が必要そうなのですが、そちらは設定済みでしょうか?
kong

2018/12/04 09:23 編集

すいません、私も試した事が無いです。興味があったのでドキュメントを見た感じで話してました。https://goo.gl/TrCNcE とかでも「CloudFront-Forwarded-Proto」ヘッダーを「CloudFrontにより追加される」と表現しているので、「CloudFront-」で始まるヘッダーは、CloudFrontで追加されるのかなと。。それで、念の為質問してみました。
guest

回答1

0

自己解決

APIGatewayにて、APIを作成する際に、「エンドポイントタイプ」をエッジの最適化に変更することで、解決いたしました。

投稿2018/12/10 06:00

camelerman

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問