問題現象
我創建了一個Custom Runtime的HTTP函數,其中服務名為
CustomDemo、函數名為
func-http,并且設置了匿名的HTTP觸發器,實現Custom Runtime的HTTP Server的路由代碼示例如下:
@app.route('/test', methods = ['POST','GET'])
def test():
當我使用cURL工具或瀏覽器等方式訪問HTTP函數的URL時,遇到
404
報錯。
- 使用cURL工具訪問HTTP函數。
curl -v https://164901546557****.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/CustomDemo/func-http/test
- 使用瀏覽器訪問HTTP函數。
https://164901546557****.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/CustomDemo/func-http/test
說明 HTTP函數的URL格式為:https://<account_id>.<region_id>.fc.aliyuncs.com/<version>/proxy/<serviceName>/<functionName>/<path>
。
解決方案
您可以選擇以下任意方式解決該問題:
- 使用函數計算為新建HTTP觸發器分配的子域名重新訪問。具體信息,請參見步驟三:測試函數。
子域名格式如下:
https://<subdomain>.<region_id>.fcapp.run/[action?queries]
本文的訪問示例如下:
https://funcname-svcname-khljsjksld.cn-shanghai.fcapp.run/action?hello=world
- 在訪問的命令中增加名為
x-fc-invocation-target
的Header。訪問格式如下:
本文的訪問示例如下:curl -v -H "x-fc-invocation-target: 2016-08-15/proxy/$ServiceName/$functionName" https://<account_id>.<region_id>.fc.aliyuncs.com/$path
curl -v -H "x-fc-invocation-target: 2016-08-15/proxy/CustomDemo/func-http" https://164901546557****.cn-hangzhou.fc.aliyuncs.com/test
- 為您的函數綁定自定義域名,綁定成功后再執行以下命令重新訪問即可。關于綁定域名的操作步驟,請參見配置自定義域名。
假設域名是
example.com
,訪問格式如下:
本文的訪問示例如下:curl -v https://example.com/$path
curl -v https://example.com/test
- 修改您的函數代碼,并且成功部署函數后,重新使用默認的URL訪問即可。函數代碼修改示例如下:
本文的訪問示例如下:@app.route('/2016-08-15/proxy/CustomDemo/func-http/test', methods = ['POST','GET']) def test():
curl -v https://164901546557****.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/CustomDemo/func-http/test