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エラーが報告されます。

tcap-1

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

fcapp-2

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

fcapp-3

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
    Container Registry Personal EditionまたはEnterprise Editionのインスタンスを使用して、イメージをプッシュおよびプルできます。 このセクションでは、Container Registry Personal Editionインスタンスを例として使用します。
Function Compute の仮想プライベートクラウド (VPC) 設定がApsaraDB RDS for MySQLインスタンスのVPC設定と同じであり、ホワイトリストが正しく設定されていることを確認します。

手順

  1. Function Computeコンソールにログインします。
  2. 左側のナビゲーションウィンドウで、[サービスと関数] をクリックします。
  3. 上部のナビゲーションバーで、サービスが存在するリージョンを選択します。
  4. [サービス] ページで、目的のサービスをクリックします。
  5. [関数] ページで、[関数の作成] をクリックし、[コンテナーイメージの使用] を選択します。 パラメーターを設定し、[作成] をクリックします。
    WordPressイメージを選択し、リスニングポート80に設定します。 詳細については、「t1913861.html#task_2559807」をご参照ください。
  6. 関数の設定を変更し、データベース設定を環境変数の形式で関数コンテナーに挿入します。
    環境変数の設定方法の詳細については、「環境変数」をご参照ください。
  7. 機能をテストするために、ブラウザーのアドレスバーにHTTPトリガーをFunction Computeして割り当てられたドメイン名を入力します。
    関数の作成後、Function Computeは自動的にHTTPトリガーを作成します。 トリガーの設定からドメイン名を取得できます。
Webサイトサービスは、ICP登録を取得したドメイン名を使用してのみ提供できます。 カスタムドメイン名を設定し、ドメイン名を関数にバインドしてから、ドメイン名を使用してサービスを提供できます。 詳細については、「3. カスタムドメインをバインドする」をご参照ください。