実現したいこと
- 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キーやリソースベーすポリシーを行うためのカスタムヘッダーが追加されませんでした。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。