2016-02-05 63 views
1

我正試圖在部署腳本中使用aws-cli從命令行設置aws CORS。 我使用以下perl命令來創建POST資源。 我試圖設置集成響應'*'很像啓用核心會做的。api網關CORS設置

aws apigateway put-method-response \\ --region "$region" \\ --rest-api-id "$api_id" \\ --resource-id "$resource_id" \\ --http-method "POST" \\ --status-code 200 \\ --response-models '{"application/json":"Empty"}' \\ --response-parameters '{"method.response.header.Access-Control-Allow-Origin":true}'

當我運行下面的命令來設置的積分值。

aws apigateway put-integration-response \\ --region "$region" \\ --rest-api-id "$api_id" \\ --resource-id "$resource_id" \\ --http-method "$method" \\ --status-code 200 \\ --response-template '{"application/json":"Empty"}' \\ --response-parameters \\ '{"method.response.header.Access-Control-Allow-Origin": "'*'"}'

我碰到下面的錯誤。無效的映射表達式規定:驗證結果:警告:[],錯誤:指定了無效的映射表達式:*]

誰能告訴我這是什麼

客戶端錯誤(BadRequestException)調用PutIntegrationResponse操作時發生錯誤實際上是指api網關部署腳本,甚至是更好的方法。

回答

1

API網關管理控制檯有一個很好的「啓用CORS」功能,你可能已經看到了。至於複製使用CLI,我會建議使用控制檯功能,事後觀察配置,並在CLI請求中使用相同的參數。

您看到的錯誤必須是由於值'*'的單引號的不正確轉義引起的,因爲只有字符*無效。還只是指出另一個潛在的問題,對--response-templates'{「application/json」:「Empty」}'的輸入是有效的,但不會被解釋爲與方法響應對象中的--response-models相同。該值將爲使用該集成響應的所有API調用將響應主體設置爲「空」。做一個直通,只是不要設置--response-templates的值

2

這個問題最終成爲逃避角色的正確方法。

--response-parameters '{"method.response.header.Access-Control-Allow-Origin":"'"'*'"'"}'

顯然,這是更多的瞭解格式化JSON的正確方法。

+0

太棒了,很高興它解決了! –