2016-07-28 38 views
2

如何創建API網關一個模擬的整合採取了要求:AWS API網關:使用模擬集成重定向

/products/{product}/bigFile.zip?platform={platform}&version={version} 

並與一個重定向迴應:

http://xyz.cloudfront.net/{product}/{platform}/{version}.zip 

我試圖更改請求和響應映射模板,但我不確定它們是如何連接的,因爲模擬集成上的AWS文檔非常稀少。我可以更改HTTP狀態代碼,但我無法根據查詢參數獲取Location標頭。

更廣泛的上下文(如果我已經提出了XY問題)是我使用AWS API Gateway構建API。其中一個API端點服務的大文件不符合API網關的10秒響應時間限制,所以我想重定向到另一個CDN鏈接。

+0

API網關的超時時間不再是10秒,它已增加到29秒(停留在30秒的CloudFront超時) –

回答

1

對於MOCK集成,請考慮將定義狀態代碼(例如{「statusCode」:200})的Integration Request模板作爲後端的模擬狀態代碼。排除這方面,其他組件是相同的。您必須爲重定向3xx狀態代碼定義方法響應,並在響應中包含要發送的所有標頭。然後在集成響應頁面上,您可以使用單引號將標題的值設置爲靜態值。因此,這將是你定義的Location頭與任何重定向URL是,像「https://other.endpoint.com

編輯:使用lambda功能呼應

設置lambda函數呼應有效載荷解決方法。接着查詢字符串映射到請求體像這樣:

模板:

{ 
    "q": $input.params('foo') 
} 

假設lambda函數回聲相同的有效載荷後面,你將設置標頭映射源中的集成響應爲:

integration.response.body.q 
+0

我的方法請求和響應設置正確,但它是集成響應I'有麻煩用。正如您所建議的,我無法爲標頭使用靜態值,因爲我想根據請求查詢字符串在標頭中設置路徑。 爲了澄清我的問題,我可以在集成請求模板中設置一些變量並在集成響應頭中訪問它們嗎? – Eric

+0

不幸的是,您目前無法直接將請求參數映射到響應參數。如果你沒有使用MOCK集成,那麼你可以通過後端迴應查詢字符串參數,然後將響應有效載荷的值映射到響應頭來解決這個問題。我會將其添加到我們的待辦事項中以直接探索映射。否則,如果您設置一個簡單的Lambda函數來回顯參數,則可以實現該功能。 –

+0

這個@JackKohn的任何更新? – anarnold