edit-icon download-icon

カスタムドメインのバインド

最終更新日: Aug 27, 2019

カスタムドメインをバインドすることで、ユーザーはカスタムドメインを通じて、Function Compute にデプロイされている関数にアクセスし、HTTP トリガーで関数を実行できるようになります。この手法は、Function Compute を通じて Web サービスを構築するのに役立ちます。

Function Compute でカスタムドメインをバインドし、さまざまなサービスにある関数にパスをマッピングし、それから、該当するカスタムドメインを使用してその関数にアクセスできます。

使用事例

例として、ドメイン名が api.app.com の Web サイトを考えます。低コストで高いスケーラビリティを実現するため、外部ユーザーへのサービスに影響を及ぼさずに、Web サービスを Function Compute へ移行したいとします。具体的には、外部サービスに関連付けられたリンクの変更を回避したいとします。この場合、サービスをカスタムドメインをバインドできます。

比較

プロセス カスタムドメインバインディングなし カスタムドメインバインディングあり
デプロイメントフェーズ
  1. アプリケーションコードを記述し、アプリケーションをサーバーにデプロイします。
  2. ドメイン名の ICP 登録を取得します。(中国でサービスを展開に必要)
  3. ドメイン名解決先として、サーバーの IP アドレスを指定します。
  4. Web フレームワークを通じて、サービスにパスをマッピングします。
  1. Function Compute のアプリケーションの関数を記述し、HTTP トリガーを設定します。
  2. Alibaba Cloud を通じてドメイン名の ICP 登録を取得または移転します。(中国でサービスを展開に必要)
  3. ドメイン名解決先として Function Compute サービスのアドレス:<accountID>.<region>.fc.aliyuncs.com を指定します。
  4. Function Compute でドメイン名をバインドし、パスをその関数にマッピングします。
アクセスフェーズ
  1. api.app.com/login にアクセスします。
  2. ドメイン名をサーバーの IP アドレスに解決します。
  3. api.app.com/login に対応する、ユーザーサーバーにデプロイされたサービスにアクセスします。
  1. api.app.com/login にアクセスします。
  2. ドメイン名を Function Compute のアドレスに解決します。
  3. api.app.com/login に対応する、Function Compute にデプロイされた関数にアクセスします。

前提条件

事前に HTTP トリガーの使用を前提に Web サーバーを構築していること。Web サーバー構築の詳細については、「HTTP トリガーのチュートリアル」をご参照ください。

カスタムドメインのバインド

  1. 中国向けにドメイン名を展開する場合、Alibaba Cloud を経由して ICP 登録に登録するか、登録済みドメインを移転します。詳細については、「ICP」をご参照ください。

  2. ドメイン名をサービスエンドポイントに関連付けます。具体的には、CNAME レコードをエンドポイントの IP アドレスを指すドメイン名に設定します。Function Compute でバインドする前に CNAME レコードを設定します。

    たとえば、ドメイン名が app.com、アカウント ID が 12345、Function Compute サービスが中国 (上海) リージョンにデプロイされている場合は、app.comの CNAME を 12345.cn-shanghai.fc.aliyuncs.com に設定する必要があります。

  3. Function Compute でカスタムドメイン名をバインドし、パスを関数にマッピングします。

    注意:同じドメイン名にバインドされた関数は、同じリージョンにデプロイする必要がありますが、異なるサービスに属させることができます。

    たとえば、リクエストパス /a により service1function1 の実行をトリガーし、リクエストパス /b により service2function2 の実行をトリガーできます。

    HTTP トリガーが設定されている関数のみが、カスタムドメイン名を使用して実行をトリガーできます。

ルーティングルール

カスタムドメイン名のパスを関数にマッピングする必要があります。リクエストパスを変えることによって、違う関数の実行をトリガーできます。Function Compute は完全一致とあいまい一致をサポートしています。具体的なルールは次の通りです。

完全一致

完全一致では、実際のリクエストパスは、設定されているリクエストパスと完全に同一である必要があります。例えば、パス /a が、サービス s1 の関数 f1 (“s1/f1” と表記します) の実行トリガーとして設定されている場合、パス /a/ は関数 f1 の実行をトリガーできません。

あいまい一致

パスの最後にだけ指定できるワイルドカード記号 * をサポートしています。たとえば、/login/*/login/ で始まるすべてのリクエストパスを表します。/login/* を s2/f2 にマッピングした場合、/login/a および /login/b/c/d の両方が f2 の実行をトリガーします。

  • マッチングの優先度:まず完全一致、その後あいまい一致
  • マッチングアルゴリズム:前方最長一致法

ドメイン名が api.app.com で、ルーティングルールが次のようになっていると仮定します。

Path ServiceName FunctionName
/ s1 f1
/* s2 f2
/login s3 f3
/login/a s4 f4
/login/* s5 f5

マッチングの結果は次のとおりです。

RequestURI MatchedServiceName MatchedFunctionName MatchedPath
api.app.com s1 f1 /
api.app.com/user s2 f2 /*
api.app.com/login s3 f3 /login
api.app.com/login/a s4 f4 /login/a
api.app.com/login/a/b s5 f5 /login/*
api.app.com/login/b s5 f5 /login/*

HTTPS 証明書のアップロード

HTTPS プロトコルを使用してカスタムドメインにアクセスする場合、証明書と秘密鍵をアップロードする必要があります。証明書と秘密鍵は PEM 形式で、4 KB を超えてはいけません。

コンソールの操作

  1. Function Compute コンソールにログインします。

    HomePage

  2. [カスタムドメイン名] をクリックして、カスタムドメイン名をバインドし、ルーティングルールを設定します。詳細については、「ルーティングルール」をご参照ください。

    AddCName

  3. 証明書をアップロードします。

    uploadCerts

チュートリアル

詳細については、独自ドメイン名の概要をご参照ください。

ご質問については、チケットを起票し、サポートセンターへお問い合わせください。