Function Compute サブドメインfcapp.run
を新しいHTTPトリガーに割り当てることができます。 ドメイン名を使用して、RESTfulアプリケーションにアクセスできます。 このトピックでは、fcapp.run
を使用して、コードを変更せずにRESTfulアプリケーションにアクセスする方法について説明します。
背景情報
Function Compute はHTTPトリガーをサポートしており、HTTPリクエストで関数を呼び出すことができます。 Function Compute は、共有APIサーバーを使用して、HTTPトリガーによってトリガーされる関数呼び出しに応答します。 URL内のパスは、関数コンテナにトラフィックをルーティングするために使用されます。 コンテナが受け取るHTTPリクエストパスには、Function Computeルート識別子が含まれています。 RESTfulアプリケーションをFunction Computeにデプロイした場合、404エラーが報告されます。
当初、Function Computeは、各機能が独立したリソースとして機能するネイティブRESTfulアーキテクチャを提供しました。 この場合、各関数は、指定されたタスクを実装するためのAPI操作として機能しました。 関数が1つのAPI操作のみに対応する場合、関数コードでルーティングロジックのセットを使用して、異なるURLパスからのリクエストに応答する必要はありません。
現在、Function Computeは関数のカスタムランタイムとカスタムコンテナ環境を導入しています。 既存のアプリケーションはFunction Computeで実行できます。 Function Compute で推奨されるアーキテクチャに基づいてアプリケーションを分割する必要はありません。 開発者は、プログラムで多数のRESTful API操作を開発する傾向があります。 したがって、インプロセス・ルーティング・ロジックは、要求が異なる方法を使用して処理されるように、異なる経路からの要求を転送するために使用される。
fcapp.runを使用して関数を呼び出す
上記の問題を解決するために、Function Computeは {random-string}.{region_id}.fcapp.ru n
形式で新しいHTTPトリガーに一意のドメイン名を割り当てます。 以下の図は一例です。 ドメイン名を使用してFunction Computeにアクセスすると、Function Computeはドメイン名に基づいてトラフィックをルーティングし、トラフィックを関数コンテナーに転送します。 このように、ルーティングはパスに依存せず、顧客コードは影響を受けません。
fcapp-test.runを使用したローカルwebページのテスト
Function Compute のルートドメインはaliyuncs.com
であり、Webサイトサービスの提供には使用できません。 すべての関数要求結果は、ブラウザに添付ファイルとしてダウンロードされます。 Webページ関数の場合、返されたHTMLテキストとJavaScriptコードは期待どおりに表示できません。
この場合、関数のICP入力を取得したカスタムドメイン名をバインドすることで、この問題を解決できます。 詳細については、「HTTP トリガー」をご参照ください。
テストドメインfcapp-test.ru n
を使用し、ドメイン解決エントリをhostsファイルに追加することで、上記の問題を解決することもできます。 その後、リクエスト結果は添付ファイルとしてダウンロードされなくなり、期待どおりにWebページでデバッグを実行できます。
次のサンプルコードは、スクリプトの例を示しています。
# 1. ページからfcapp.ru nのドメイン名を取得します。
FC_DOMAIN='serviceName -functionName-vtnazzbxrr.cn-hangzhou.fcapp.ru n'
FC_TEST_DOMAIN='echo ${FC_DOMAIN} sed 's/fcapp.ru n/fcapp-test.run/g''
echo "Function Computeドメイン名: ${FC_DOMAIN}"
echo "Function Computeテストドメイン名: ${FC_TEST_DOMAIN}"
#2. ドメイン名解決後に取得したIPアドレスを照会します。
FC_IP='ping ${FC_DOMAIN} -c 1 HEAD -1 awk '{print $3}' sed 's/[():]// g''
エコー "FC IP: ${FC_IP}"
#3. hostsファイルを変更して、テストドメイン名をfcapp-test.runのIPアドレスに解決します。
sudo -- sh -c "printf '\n${FC_IP} ${FC_TEST_DOMAIN}\n' >> /etc/hosts"
cat /etc/hosts
#4. テストドメイン名を使用して、ブラウザーの関数にアクセスします。
curl -v "${FC_TEST_DOMAIN}"
Function Computeを使用してWordPressイメージを実行する
Function Compute により、コードを変更せずにRESTfulアプリケーションを移行できます。 このセクションでは、WordPressアプリケーションが移行されます。
前提条件
- Function Compute
- ApsaraDB RDS
注 既存のApsaraDB RDS for MySQLインスタンスを使用して、WordPressサービスのアカウントとデータベースを初期化することもできます。
- Container Registry
- WordPressイメージをAlibaba Cloud Container Registryに転送します。 詳細については、「イメージのプッシュとプル」をご参照ください。
注 Container Registry Personal EditionまたはEnterprise Editionのインスタンスを使用して、イメージをプッシュおよびプルできます。 このセクションでは、Container Registry Personal Editionインスタンスを例として使用します。