すべてのプロダクト
Search
ドキュメントセンター

Function Compute:ブラウザまたはcURLツールを使用して関数にアクセスするときに404エラーが発生した場合はどうすればよいですか?

最終更新日:Sep 11, 2024

症状

CustomDemoサービスでfunc-HTTPという名前のhttp関数を作成しました。 関数はカスタムランタイムで実行され、匿名HTTPトリガーが指定されます。 次のサンプルルーティングコードは、カスタムランタイムのHTTPサーバーを実装するために使用されます:

@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トリガーに対してfunction Computeによって割り当てられたサブドメインを使用して、関数にアクセスします。 詳細については、「手順3: 関数のテスト」をご参照ください。

    サブドメイン形式:

    https://<subdomain>.<region_id>.fcapp.run/[action?queries] 

    サンプルコード:

    https://funcname-svcname-khljsjksld.cn-shanghai.fcapp.run/action?hello=world
  • 関数へのアクセスに使用するコマンドに、x-fc-invocation-targetという名前のヘッダーを追加します。 コマンド構文:

    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
    重要

    /$pathを、リクエストがサービスの関数をトリガーできるパスに置き換えます。 パスは、カスタムドメインをバインドするときに設定されます。 詳細については、「ルートマッチングルール」をご参照ください。

  • 関数コードを変更し、関数をデプロイします。 次に、デフォルトの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