我使用 AWS CloudFormation 範本、OpenAPI 定義或 AWS Command Line Interface (AWS CLI) 命令來建立具有 Proxy 資源的 Amazon API Gateway API。我嘗試將網址路徑參數新增至 API 時,系統出現「指定的對應運算式無效」錯誤訊息。
簡短說明
當 Proxy 路徑參數 {proxy+} 不具有已定義的網址路徑參數對應時,API Gateway 會傳回 "Invalid mapping expression specified" 錯誤訊息。
若要解決此問題,請對您用來建立 API 的工具完成下列步驟。
解決方法
CloudFormation 範本
定義 AWS::ApiGateway::Method 區段的 RequestParameters 屬性。
完成下列步驟:
-
更新 CloudFormation 範本,以將 RequestParameters 值設定為 true。
範例範本:
....
.
ProxyMethod:
Type: 'AWS::ApiGateway::Method'
Properties:
.
.
RequestParameters:
method.request.path.proxy: true
Integration:
RequestParameters:
integration.request.path.proxy: 'method.request.path.proxy'
IntegrationHttpMethod: ANY
.
.
...
-
若要更新 API,使用 CloudFormation 範本更新 API 更新 AWS CloudFormation 堆疊。
**注意:**如需如何更新 API Gateway 資源的詳細資訊,請參閱 Amazon API Gateway 資源類型參考。
OpenAPI 定義
定義 x-amazon-apigateway-any-method object 中的參數區段。
完成下列步驟:
-
更新您的 API 定義,使 x-amazon-apigateway-any-method 區段下方的參數具有下列值:
"x-amazon-apigateway-any-method": { "parameters": [
{
"name": "proxy",
"in": "path",
"required": true,
"type": "string"
}
]
....
....
}
-
將更新的 API 定義檔匯入 API Gateway 以更新 API。
**注意:**如需詳細資訊,請參閱 Swagger 網站的說明參數。
AWS CLI 命令
**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
在執行 put-integration 命令來設定整合時,請新增 --request-parameters。
-
執行 update-method 命令以更新 HTTP 方法的方法請求組態:
aws apigateway update-method \
--rest-api-id <your-api-id> \
--resource-id <your-resource-id> \
--http-method <your-http-method> \
--patch-operations op="add",path="/requestParameters/method.request.path.proxy",value="true"
-
執行 put-integration 命令以更新具有 --request-parameters 的 HTTP 方法的整合請求組態。範例參數命名為 proxy,並且具有 method.request.path.proxy 的值。put-integration 命令設定與 VPC 鏈路的 HTTP_PROXY 整合:
aws apigateway put-integration \
--rest-api-id <your-api-id>\
--resource-id <your-resource-id> \
--http-method <your-http-method> \
--type HTTP_PROXY \
--integration-http-method <your-integration-http-method> \
--uri "<your-integration-endpoint-uri>" \
--connection-type VPC_LINK \
--connection-id <your-vpclink-connection-id> \
--request-parameters "integration.request.path.proxy=method.request.path.proxy"
**注意:**用您的值取代所有範例值。
測試設定
完成下列步驟:
- 開啟 API Gateway 主控台,然後選擇 API 的名稱。
- 新增 URL 路徑參數。
**注意:**如果您的 Proxy 路徑參數包含正確定義的網址路徑參數對應,系統就不會出現錯誤。
相關資訊
x-amazon-apigateway-integration.requestParameters 物件
使用 Proxy 資源設定 Proxy 整合
設定 REST API 的資料轉換