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

Function Compute:fcapp.ru nを使用してRESTfulアプリケーションを実行する

最終更新日:Sep 09, 2024

Function Computeは、サブドメインfcapp.ru nを新しいHTTPトリガーに割り当てることができます。 ドメイン名を使用して、RESTfulアプリケーションにアクセスできます。 このトピックでは、fcapp.ru nを使用して、コードを変更せずにRESTfulアプリケーションにアクセスする方法について説明します。

背景

Function ComputeはHTTPトリガーをサポートしており、HTTPリクエストで関数を呼び出すことができます。 Function Computeは、共有APIサーバーコンポーネントを使用して、HTTPトリガーの呼び出しに応答します。 関数を呼び出すと、URLのパスは顧客の関数コンテナーに顧客トラフィックをルーティングするために依存します。 コンテナで受信したHTTPリクエストのパスには、Function Computeのルート識別子が含まれます。 Function ComputeにRESTfulアプリケーションをデプロイすると、404エラーが報告されます。

image

当初、Function Computeは、各関数が独立したリソースとして機能するネイティブRESTfulアーキテクチャを提供していました。 この場合、各関数は、指定されたタスクを実装するためのAPI操作として機能しました。 関数が1つのAPI操作のみに対応する場合、関数コードでルーティングロジックのセットを使用して、異なるURLパスからのリクエストに応答する必要はありません。

image

Function Computeでは、関数のカスタムランタイムとカスタムコンテナランタイムが導入されました。 Function Computeで既存のアプリケーションを実行でき、Function Computeの推奨アーキテクチャに基づいてアプリケーションを分割する必要はありません。 開発者は、プログラムで多数のRESTful API操作を開発する傾向があります。 インプロセスルーティングロジックは、要求が異なる方法を使用して処理されるように、異なる経路からの要求を転送するために使用される。

image

fcapp.ru nを使用して関数を呼び出す

Function Computeは、新しく作成された各HTTPトリガーに、次の形式 {random_string}.{region_id}.fcapp.ru nで個別のドメイン名を割り当てます。 ドメイン名を使用してFunction Computeにアクセスすると、Function Computeはドメイン名に基づいてトラフィックをルーティングし、トラフィックを関数コンテナーに転送します。 このように、ルーティングはパスに依存せず、顧客コードは影響を受けません。

説明

たとえば、/function1/function2、および /function3 APIがHTTPトリガーに対応する関数にカプセル化されている場合、fcapp.ru nによって次のURLが呼び出されます。

  • {random_string}.{region_id}.fcapp.ru n/function1

  • {random_string}.{region_id}.fcapp.ru n/function2

  • {random_string}.{region_id}.fcapp.ru n/function3

fcapp-test.runを使用してオンプレミスマシンでwebページをデバッグする

Function Computeのルートドメインはaliyuncs.comであり、Webサイトサービスの提供には使用できません。 すべての関数要求結果は、ブラウザに添付ファイルとしてダウンロードされます。 Webページ関数の場合、返されたHTMLテキストとJavaScriptコードは期待どおりに表示できません。 この場合、関数のICP入力を取得したカスタムドメイン名をバインドすることで、この問題を解決できます。 詳細については、「概要」をご参照ください。

テストドメインfcapp-test.ru nを使用し、ドメイン解決エントリをhostsファイルに追加することで、上記の問題を解決することもできます。 その後、リクエスト結果は添付ファイルとしてダウンロードされなくなり、期待どおりにWebページでデバッグを実行できます。 次のサンプルコードは、スクリプトの例を示しています。

# 1. Obtain the domain name of fcapp.run from the page.
FC_DOMAIN='serviceName-functionName-vtnazzbxrr.cn-hangzhou.fcapp.run'
FC_TEST_DOMAIN=`echo ${FC_DOMAIN} | sed 's/fcapp.run/fcapp-test.run/g'`
echo "Function Compute domain name: ${FC_DOMAIN}"
echo "Function Compute test domain name: ${FC_TEST_DOMAIN}"

# 2. Query the IP address that is obtained after the domain name resolution.
FC_IP=`ping ${FC_DOMAIN} -c 1 | HEAD -1 | awk '{print $3}' | sed 's/[():]//g'`
echo "FC IP: ${FC_IP}"

# 3. Modify the hosts file to resolve the test domain name to the IP address for fcapp.run.
# If you do not have permissions, you need to manually add the content.
sudo -- sh -c  "printf '\n${FC_IP} ${FC_TEST_DOMAIN}\n' >> /etc/hosts"
cat /etc/hosts

# 4. Use the test domain name to access the function in the browser.
curl -v "${FC_TEST_DOMAIN}"
            

Function Computeを使用してWordPressイメージを実行する

Function Computeを使用すると、コードを変更せずにRESTfulアプリケーションを移行できます。 このセクションでは、WordPressアプリケーションが移行されます。

始める前に

手順

  1. Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。

  2. 上部のナビゲーションバーで、リージョンを選択します。 [サービス] ページで、目的のサービスをクリックします。

  3. [関数] ページで、[関数の作成] をクリックし、[コンテナーイメージの使用] を選択します。 パラメーターを設定し、[作成] をクリックします。

    WordPressイメージを選択し、リスニングポート80に設定します。 詳細については、「カスタムコンテナ関数の作成」をご参照ください。

    image.png

  4. 関数の設定を変更し、データベース設定を環境変数の形式で関数コンテナーに挿入します。

    環境変数の設定方法の詳細については、「環境変数」をご参照ください。

    image.png

    環境変数とデータベース設定のマッピングは次のとおりです。

    • WORDPRESS_DB_HOST: ApsaraDB RDS for MySQLインスタンス用に作成したデータベースの内部エンドポイント。

    • WORDPRESS_DB_NAME: 作成したデータベースアカウント。

    • WORDPRESS_DB_PASSWORD: 作成したデータベースアカウントのパスワード。

    • WORDPRESS_DB_USER: 作成したデータベースの名前。

  5. によって割り当てられたドメイン名を入力します。Function Compute関数をテストするために、ブラウザのアドレスバーのHTTPトリガーに

    関数の作成後、function Computeは自動的にHTTPトリガーを作成します。 トリガーの設定からドメイン名を取得できます。 WordPressアプリケーションに対応するAPIは、ドメイン名をルートパスとして使用して呼び出されます。

    テストに使用する前に、次のアドレスをクリックしてください。 表示されるパネルで、をクリックしてオンプレミスシステムに対応する構成スクリプトをダウンロードし、スクリプトを実行します。 スクリプトを実行した後にのみ、ブラウザを介してアドレスにアクセスできます。

    image.png

    image.png

関連ドキュメント