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エラーが報告されます。
当初、Function Computeは、各関数が独立したリソースとして機能するネイティブRESTfulアーキテクチャを提供していました。 この場合、各関数は、指定されたタスクを実装するためのAPI操作として機能しました。 関数が1つのAPI操作のみに対応する場合、関数コードでルーティングロジックのセットを使用して、異なるURLパスからのリクエストに応答する必要はありません。
Function Computeでは、関数のカスタムランタイムとカスタムコンテナランタイムが導入されました。 Function Computeで既存のアプリケーションを実行でき、Function Computeの推奨アーキテクチャに基づいてアプリケーションを分割する必要はありません。 開発者は、プログラムで多数のRESTful API操作を開発する傾向があります。 インプロセスルーティングロジックは、要求が異なる方法を使用して処理されるように、異なる経路からの要求を転送するために使用される。
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アプリケーションが移行されます。
始める前に
Function Compute
ApsaraDB RDS
説明既存のApsaraDB RDS for MySQLインスタンスを使用して、WordPressサービスのアカウントとデータベースを初期化することもできます。
ApsaraDB RDS for MySQLインスタンスを作成するときは、インスタンスに設定されたVPCがFunction ComputeのサービスのVPCと同じであり、Function Computeのサービスに設定されたvSwitchのCIDRブロックがホワイトリストに追加されていることを確認します。 Function Computeのネットワーク設定の詳細については、「ネットワークの設定」をご参照ください。 ApsaraDB RDS For MySQLインスタンスのホワイトリストを設定する方法の詳細については、「手順1: データベースのIPアドレスホワイトリストの設定」をご参照ください。
Container Registry
WordPressイメージをプルし、Alibaba Cloud Container Registryのリポジトリにプッシュします。 詳細については、「Container Registry Personalインスタンスへのイメージのプッシュおよびイメージのプル」をご参照ください。
説明Container Registry Personal EditionまたはEnterprise Editionのインスタンスを使用して、イメージをプッシュおよびプルできます。 このセクションでは、Container Registry Personal Editionインスタンスを例として使用します。
手順
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。 [サービス] ページで、目的のサービスをクリックします。
[関数] ページで、[関数の作成] をクリックし、[コンテナーイメージの使用] を選択します。 パラメーターを設定し、[作成] をクリックします。
WordPressイメージを選択し、リスニングポートを80に設定します。 詳細については、「カスタムコンテナ関数の作成」をご参照ください。

関数の設定を変更し、データベース設定を環境変数の形式で関数コンテナーに挿入します。
環境変数の設定方法の詳細については、「環境変数」をご参照ください。

環境変数とデータベース設定のマッピングは次のとおりです。
WORDPRESS_DB_HOST: ApsaraDB RDS for MySQLインスタンス用に作成したデータベースの内部エンドポイント。
WORDPRESS_DB_NAME: 作成したデータベースアカウント。
WORDPRESS_DB_PASSWORD: 作成したデータベースアカウントのパスワード。
WORDPRESS_DB_USER: 作成したデータベースの名前。
によって割り当てられたドメイン名を入力します。Function Compute関数をテストするために、ブラウザのアドレスバーのHTTPトリガーに
関数の作成後、function Computeは自動的にHTTPトリガーを作成します。 トリガーの設定からドメイン名を取得できます。 WordPressアプリケーションに対応するAPIは、ドメイン名をルートパスとして使用して呼び出されます。
テストに使用する前に、次のアドレスをクリックしてください。 表示されるパネルで、をクリックしてオンプレミスシステムに対応する構成スクリプトをダウンロードし、スクリプトを実行します。 スクリプトを実行した後にのみ、ブラウザを介してアドレスにアクセスできます。


関連ドキュメント
サブドメインをHTTPトリガーのURLとして使用して、関数をテストできます。 これにより、404エラーが防止される。 詳細については、「」をご参照ください。ブラウザまたはcURLツールを使用して関数にアクセスするときに404エラーが発生した場合はどうすればよいですか?
Webサイトサービスは、ICP登録を取得したドメイン名を使用してのみ提供できます。 カスタムドメイン名を設定し、ドメイン名を関数にバインドしてから、ドメイン名を使用してサービスを提供できます。 詳細については、「カスタムドメイン名の設定」をご参照ください。