是否可以通過Cloudfront將IAM角色身份驗證用於API網關端點?是否可以通過Cloudfront向API網關進行IAM身份驗證?
下面是一個基本用例:
- /API - > API網關
- /* - > S3 HTML/JavaScript的
我已經能夠得到這個工作無與以下設置類似的身份驗證: https://www.codeengine.com/articles/process-form-aws-api-gateway-lambda/
How do you add CloudFront in front of API Gateway
特別需要注意的是不要轉發來自的Cloudfront HOST頭...
當我使IAM驗證API中,我會收到以下消息:
選項:200
POST :403
{「message」:「我們計算的請求籤名與您提供的 簽名不匹配。檢查您的AWS祕密訪問密鑰並簽署方法 。 \ n \ n該請求的 規範字符串應具有 \ n'POST \ n/test/create \ n \ naccept:application/json \ ncontent-type:application/json \ nhost: *****執行-api.ap - **** - 2.amazonaws.com \ NX-AMZ-日期:20170328T044253Z \ n \ naccept;內容類型;主機; X-AMZ-日期\ na57656a9def890d9de2b637789f7e5917f4b2823765ae0122087d08f89a97380' \ ñ\ n此 字符串到註冊應具備 一直\ n'AWS4-HMAC-SHA256 \ n20170328T044253Z \ n20170328/AP-東南-2 /執行的API/aws4_request \ ncae7fd6b4cabd593ad2ec6ce7091c94dc8cba306e81da95d567873eea8f981a5' \ n「}
規範字符串中的主機是API網關的主機...
您需要簽署請求,就好像您要直接將其發送到API網關一樣...然後在簽名後更改請求中的主機名。這也許是違反直覺的,但是由於CloudFront將會改變它,這似乎是唯一的解決方案。 –