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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Curl(プログラミング言語)

Curl(プログラミング言語)は、Webコンテンツ向けのプログラミング言語。HTMLのようなテキスト記述やレイアウトデザイン、JavaScript のようなオブジェクト指向プログラム言語、Java のような重量機能など複数の言語の特徴を一つのフレームワークに統合しています。

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

AWS(Amazon Web Services)

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

AWS IAM

AWS Identity and Access Management (IAM)は、AWS のサービスやリソースにアクセスできるユーザーやグループを指定し、きめ細かいアクセス許可を一元管理することができるサービスです。

Q&A

1回答

809閲覧

AWS IoT Credential Providerで取得したstsを用いてcloudfront経由でIAM認証を設定しているAPI gatewayにアクセスしたい

hazawa

総合スコア6

Curl(プログラミング言語)

Curl(プログラミング言語)は、Webコンテンツ向けのプログラミング言語。HTMLのようなテキスト記述やレイアウトデザイン、JavaScript のようなオブジェクト指向プログラム言語、Java のような重量機能など複数の言語の特徴を一つのフレームワークに統合しています。

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

AWS(Amazon Web Services)

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

AWS IAM

AWS Identity and Access Management (IAM)は、AWS のサービスやリソースにアクセスできるユーザーやグループを指定し、きめ細かいアクセス許可を一元管理することができるサービスです。

0グッド

0クリップ

投稿2023/03/30 11:06

編集2023/03/31 11:45

実現したいこと

  • AWS IoT Credential Providerで取得した 一時アクセスキー,シークレットキー,セッショントークンから

curlコマンドを利用してcloudfront経由でIAM認証を設定しているAPI gatewayにアクセスしたい

前提

curlコマンドの--aws-sigv4オプションを使用してIAM認証をしているAPI Gatewayに接続したいです。
同じアクセスキー,シークレットキー,セッショントークンでAPI Gatewayに直接リクエストはできますが
cloud frontに接続しようとするとエラーが出てしまいます。

発生している問題・エラーメッセージ

curl https://api gateway.execute-api.ap-northeast-1.amazonaws.com/dev --aws-sigv4 "aws:amz:ap-northeast-1:execute-api" -H "X-Amz-Security-Token:token" --user "accessKeyId:secretAccessKey" //API ID,認証情報は載せてません

-->意図したレスポンスが帰る

curl https://d.cloudfront.net/dev --aws-sigv4 "aws:amz:ap-northeast-1:execute-api" -H "X-Amz-Security-Token:token" --user "accessKeyId:secretAccessKey"

エラーメッセージ {"message":"The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.\n\nThe Canonical String for this request should have been\n'GET\n/dev\n\nhost:egv5fq4y3e.execute-api.ap-northeast-1.amazonaws.com\nx-amz-date:20230330T105359Z\n\nhost;x-amz-date\ne3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'\n\nThe String-to-Sign should have been\n'AWS4-HMAC-SHA256\n20230330T105359Z\n20230330/ap-northeast-1/execute-api/aws4_request\na03c859754b8b8f9c94f08e981e3a702e3a7501c36a532636ee560cb2c7261e9'\n"}

試したこと

ここに問題に対して試したことを記載してください。
Host ヘッダーに api gatewayのドメインを追加したところcloudfront経由でも接続することができましたがcloudfrontのみにアクセスを制限するためのAPIキーやリソースベーすポリシーを行うためのカスタムヘッダーが追加されませんでした。

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

guest

回答1

0

カスタム認証での話ですが、ヘッダが想定通り渡されていないのが原因のように思えます。
【小ネタ】カスタム認証を使うAPI GatewayをCloudFrontの後ろに置いたらAPIを叩けなくなった

X-Amz-Security-Token:tokenが削除されているのでは。

以下も参考になるかもしれません。
独自の CloudFront ディストリビューションで API Gateway を設定するにはどうすればよいですか?

投稿2023/03/31 02:45

yu_1985

総合スコア7427

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問