本番環境で固定ドメイン名を使用して Function Compute アプリケーションまたは関数にアクセスする場合、または HTTP トリガーにアクセスする際の強制ダウンロードを回避する場合は、カスタムドメイン名をアプリケーションまたは関数にバインドできます。
シナリオ
以下の項目は、カスタムドメイン名をアプリケーションまたは関数にバインドする必要がある一般的なシナリオを示しています。
Web アプリケーションを作成し、Function Compute に移行しました。ユーザーに固定ドメイン名で Web アプリケーションにアクセスさせたいと考えています。
Function Compute コンソール を使用して Web アプリケーションを構築し、ドメイン名の異なるパスを利用してアプリケーション内のさまざまな関数をトリガーしたいと考えています。
Function Compute の Serverless Application Center で Stable Diffusion アプリケーションまたは類似タイプのアプリケーションを作成し、固定ドメイン名でアプリケーションにアクセスしたいと考えています。
制限事項
カスタムドメイン名を関数にバインドする場合は、ドメインが関数と同じリージョンでホストされるように構成されていることを確認してください。
構成されたカスタムドメイン名は大文字と小文字が区別されます。必要なインターネットコンテンツプロバイダー(ICP)登録を受けた正確なドメイン名を使用してください。
ワイルドカードドメイン名と標準ドメイン名を構成できます。中国語の文字を含むドメイン名は構成できません。
仕組み
前提条件
関数またはアプリケーションが作成されていること。詳細については、「関数の作成」および「アプリケーションの作成」をご参照ください。
カスタムドメイン名をアプリケーションにバインドするということは、そのアプリケーション内で作成された関数にリンクすることを意味します。アプリケーションの作成時に自動的に作成される関数リソースは、アプリケーションの [環境の詳細] ページの [リソース情報] セクションにあります。関数名をクリックすると、その関数の詳細ページに移動します。

Alibaba Cloud ICP ファイリングシステムで ICP ファイリングを取得した、または ICP ファイリング情報にサービスプロバイダーとして Alibaba Cloud が含まれているカスタムドメイン名が準備されていること。
ドメイン名に関連付けられたサービスプロバイダーとアカウントに基づいて、ドメイン名の ICP ファイリングを申請してください。操作は、ドメイン名の登録方法によって異なります。
現在の Alibaba Cloud アカウントによって登録されたドメイン名
Alibaba Cloud ICP ファイリングシステム で、ドメインの ICP ファイリングを申請してください。詳細については、「ICP 登録プロセス」をご参照ください。
他の Alibaba Cloud アカウントによって登録されたドメイン名
ドメイン名の登録に使用した Alibaba Cloud アカウントを使用して、ICP 登録を取得します。Alibaba Cloud ICP 登録システムで ICP 登録を申請します。詳細については、「ICP 登録プロセス」をご参照ください。
Alibaba Cloud 以外のアカウントによって登録されたドメイン名
他のサービスプロバイダーを通じてドメイン名の ICP 登録を取得している場合、サービスプロバイダーとして Alibaba Cloud を登録情報に追加する必要があります。この手続きは、Alibaba Cloud ICP 登録システム で行うことができます。
説明中国(香港)または中国以外のリージョンの関数にバインドされているカスタムドメイン名については、ICP ファイリングを申請する必要はありません。
WHOIS で、ドメイン名のレジストラを照会できます。
Alibaba Cloud DNS (DNS) コンソール で、ドメイン名が現在の Alibaba Cloud アカウントに属しているかどうかを確認できます。
1. カスタムドメイン名の追加
Function Compute コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。表示されるページで、リージョンを選択し、[カスタムドメイン名の追加] をクリックします。
重要カスタムドメイン名と同じリージョンに属する関数にのみ、カスタムドメイン名をバインドできます。

[カスタムドメイン名の追加] ページで、Alibaba Cloud ICP ファイリングシステムで ICP ファイリングを取得した、または ICP ファイリング情報にサービスプロバイダーとして Alibaba Cloud が含まれているカスタムドメイン名を入力します。
www.aliyun.comなどの単一ドメイン名と、*.aliyun.comなどのワイルドカードドメイン名がサポートされています。
[カスタムドメイン名の追加] パネルで、[インターネット CNAME] または [内部 CNAME] レコードを取得します。次の表は、CNAME レコードの形式を示しています。
CNAME タイプ
形式
例
インターネット CNAME
<account_id>.<region_id>.fc.aliyuncs.comAlibaba Cloud アカウントの ID が 1413397765**** で、関数またはアプリケーションが中国(杭州)リージョンにある場合、
インターネット CNAME は
1413397765****.cn-hangzhou.fc.aliyuncs.comです。内部 CNAME
<account_id>.<region_id>-internal.fc.aliyuncs.com内部 CNAME は
1413397765****.cn-hangzhou-internal.fc.aliyuncs.comです。
2. ドメイン名解決の構成
3. カスタムドメイン名の追加を続行する
ステップ 1 の [カスタムドメイン名の追加] ページに戻り、次のパラメータを構成して、[作成] をクリックします。
3.1 ルーティング設定
アプリケーションに複数の関数が含まれている場合は、パスと関数の間のマッピングを構成できます。異なるリクエストパスで異なる関数をトリガーできます。詳細については、このトピックの ルートマッチングルール セクションをご参照ください。
指定されたパスに一致するリクエストの URI をルールに基づいて書き換えたい場合は、「書き換えポリシーの構成(パブリックレビュー)」をご参照ください。

3.2 (オプション) HTTPS 設定
カスタムドメイン名への HTTPS アクセスを有効にするには、次のパラメータを構成します。

パラメータ | 説明 |
HTTPS | HTTPS を有効にするかどうかを指定します。HTTPS を有効にすると、カスタムドメイン名には HTTP と HTTPS の両方でアクセスできます。HTTPS を無効にすると、カスタムドメイン名には HTTP のみでアクセスできます。 説明 [HTTP リクエストを HTTPS にリダイレクトする] チェックボックスをオンにして、HTTPS リクエストのみがカスタムドメイン名にアクセスできるようにすることもできます。Function Compute は、HTTP 経由でアクセスされたリクエストを HTTPS にリダイレクトします。 |
証明書タイプ | アップロードする証明書のタイプ。有効な値:
説明 アップロードする証明書のサイズは 20 KB を超えることはできません。証明書キーのサイズは 4 KB を超えることはできません。 |
TLS バージョン | 関数が使用する Transport Layer Security (TLS) プロトコルバージョン。 説明 TLS バージョンを選択した後、[TLS1.3 のサポートを有効にする] を選択して TLS 1.3 を有効にすることもできます。 |
暗号スイート | TLS 暗号アルゴリズムスイート。このパラメータを空のままにすると、すべての暗号スイートが選択されます。有効な値:
重要
|
3.3 (オプション) 認証設定
認証なし: HTTP リクエストに認証は不要で、匿名アクセスがサポートされています。誰でも HTTP リクエストを開始して関数を呼び出すことができます。
署名検証: HTTP リクエストで署名認証が必要です。詳細については、「カスタムドメイン名の署名認証の構成」をご参照ください。
JWT 認証: HTTP リクエストで JWT 認証が必要です。詳細については、「カスタムドメイン名の JWT 認証の構成」をご参照ください。

3.4 (オプション) WAF 設定
WAF は、関数とアプリケーションの悪意のあるトラフィックを識別し、悪意のあるトラフィックをスクラブしてフィルタリングし、通常のトラフィックをバックエンド関数に返して、悪意のある侵入から関数を保護します。詳細については、「WAF 保護の有効化」をご参照ください。

3.5 (オプション) CDN 設定
カスタムドメイン名を Web アプリケーションにバインドした後、カスタムドメイン名をオリジンドメイン名として使用し、それにアクセラレーションドメイン名を追加できます。その後、アクセラレーションドメイン名の CNAME を構成できます。このようにして、カスタムドメイン名に対して CDN アクセラレーションが有効になります。Function Compute にデプロイされたアプリケーションはオリジンサーバーとして機能し、ソースコンテンツはエッジノードに公開されます。このようにして、エンドユーザーは高効率でデータを読み取ることができます。これにより、レイテンシが効果的に削減され、サービス品質が向上します。
CDN アクセラレーションを [有効] に設定します。カスタムの CDN アクセラレーションドメイン名 を指定し、[作成] をクリックします。
重要CDN アクセラレーションを有効にすると、インターネットトラフィックに対して課金されます。詳細については、「請求の概要」をご参照ください。
カスタムドメイン名とアクセラレーションドメイン名は同じにすることはできません。ドメイン名リソースを節約するために、CDN アクセラレーションドメイン名をカスタムドメイン名の第 2 レベルドメイン(サブドメイン名)に設定できます。たとえば、カスタムドメイン名を
example.comに設定した場合、CDN アクセラレーションドメイン名をfast.example.comに設定できます。
構成したカスタムドメイン名をクリックします。カスタムドメイン名の詳細ページの [CDN アクセラレーション設定] セクションで、[アクション] 列の [CDN 設定] をクリックして Alibaba Cloud CDN コンソール に移動し、Alibaba Cloud CDN によって CDN アクセラレーションドメイン名に割り当てられた CNAME を取得します。


前の図は例を示しています。CNAME は
Accelerated domain name.w.kunlun**.comの形式に従います。例:fast.example.com.w.kunlunle.com。DNS コンソール にログインし、カスタムドメイン名を見つけて、ドメイン名のドメインネームシステム (DNS) レコードを割り当てられた CNAME にポイントしてアクセラレーションを実装します。詳細については、クイックスタート をご参照ください。

前の図は例を示しています。[ホスト名] をアクセラレーションドメイン名の最初のレベルに設定します。この例では、値は
fastです。[レコード値] を前のステップで構成したアクセラレーションドメイン名に設定します。
4. カスタムドメイン名の検証
4.1 カスタムドメイン名にアクセスできるかどうかの検証
方法 1:
curl URLコマンドを実行します。例:curl example.com/login。方法 2: ブラウザを使用します。
ブラウザのアドレスバーにリクエスト URL を入力し、Enter キーを押して、指定された関数が呼び出されるかどうかを確認します。
4.2 (オプション) アクセラレーションドメイン名の検証
3.5 (オプション) CDN 設定 で構成した CDN アクセラレーションドメイン名をブラウザで使用してアプリケーションにアクセスします。次に、開発者ツールを開き、レスポンスの X-Cache フィールドの戻り値をチェックして、アクセラレーションドメイン名が有効になっているかどうかを確認します。
X-Cache フィールドの戻り値は、CDN キャッシュポリシーの実際の効果を示します。値の「MISS」は、CDN ポイントオブプレゼンス (POP) への最初のアクセスが失敗し、オリジンサーバーからリソースをリクエストする必要があることを示します。不足しているリソースがオリジンサーバーから取得された場合、リソースは POP にキャッシュされます。リソースに対する後続のリクエストの X-Cache フィールドの値は HIT で始まり、リクエストされたリソースが POP にキャッシュされ、POP から提供されていることを示します。
最初のアクセス失敗 | 後続のアクセス成功 |
|
|
暗号スイート
強い暗号スイートと弱い暗号スイート
TLS バージョンと暗号スイートのマッピング
RFC 暗号スイート名と OpenSSL 暗号スイート名のマッピング
マッチングルール
ルートマッチングルール
カスタムドメイン名をバインドする場合は、パスと関数の間のマッピングを構成する必要があります。このようにして、異なるパスからのリクエストで異なる関数をトリガーできます。Function Compute は、パスの完全一致とあいまい一致をサポートしています。以下の項目でマッチングルールについて説明します。
完全一致: リクエストのパスが指定されたパスと完全に同じ場合にのみ、関数がトリガーされます。
たとえば、パスが /a、対応する関数が f1、対応するバージョンが 1 のルートを作成したとします。この場合、/a パスからのリクエストのみがバージョン 1 の関数 1 をトリガーできます。
あいまい一致: アスタリスク (*) をワイルドカードとしてパスに追加できます。
たとえば、パスが /login/*、対応する関数が f2、対応するバージョンが 1 のルートを作成したとします。/login/ で始まるパス(/login/a や /login/b/c/d など)からのリクエストは、バージョン 1 の関数 2 をトリガーできます。
カスタムドメイン名に複数のルートが構成されている場合、完全一致はあいまい一致よりも優先されます。
あいまい一致が実行される場合は、最長プレフィックス一致 (LPM) ルールが適用されます。
たとえば、カスタムドメイン名
example.comに /login/a/* パスと /login/* パスが構成されており、リクエスト URL が example.com/login/a/b であるとします。リクエスト URL は構成されたパスに一致します。ただし、最長プレフィックス一致 (LPM) ルールに基づいて /login/a/* パスが使用されます。
例
たとえば、カスタムドメイン名が example.com であり、このトピックで説明されている手順に基づいて 5 つのルーティングルールが構成されているとします。次の表に、ルーティングルールを示します。
ルーティングルール | パス | 関数 | バージョン |
ルーティングルール 1 | / | f1 | 1 |
ルーティングルール 2 | /* | f2 | 2 |
ルーティングルール 3 | /login | f3 | 3 |
ルーティングルール 4 | /login/a | f4 | 4 |
ルーティングルール 5 | /login/* | f5 | 5 |
次の表に、最終的な一致を示します。
リクエスト URL | 一致した関数 | 一致したバージョン | 一致したパス |
example.com | f1 | 1 | / |
example.com/user | f2 | 2 | /* |
example.com/login | f3 | 3 | /login |
example.com/login/a | f4 | 4 | /login/a |
example.com/login/a/b | f5 | 5 | /login/* |
example.com/login/b | f5 | 5 | /login/* |
ドメイン名マッチングルール
Function Compute は、リクエスト内のドメイン名情報に基づいてドメイン名を照合し、一致したドメイン名に対応する関数にリクエストを転送します。Function Compute は、ドメイン名の完全一致とあいまい一致をサポートしています。以下の項目でマッチングルールについて説明します。
完全一致: リクエストのドメイン名が作成したカスタムドメイン名と完全に一致する場合にのみ、ドメイン名に対応する関数をトリガーできます。
あいまい一致: ワイルドカードドメイン名がサポートされています。リクエストのドメイン名が、ワイルドカードに基づいて作成したカスタムドメイン名と一致する場合、関数をトリガーできます。ドメイン名には最大 1 つのワイルドカード文字 (*) を含めることができ、ワイルドカード文字はドメイン名の先頭に配置する必要があります。
リクエストが単一ドメイン名とワイルドカードドメイン名の両方に一致する場合、リクエストは単一ドメイン名に対応する関数に転送されます。
あいまい一致では、ワイルドカードドメイン名は同じレベルのドメイン名とのみ一致できます。たとえば、
*.aliyun.comはfc.aliyun.comと一致できますが、cn-hangzhou.fc.aliyun.comとは一致できません。*.aliyun.comとfc.aliyun.comは第 3 レベルドメインであり、cn-hangzhou.fc.aliyun.comは第 4 レベルドメインです。
例
次の表に、次の既存のドメイン名と一致するリクエストドメイン名の結果を示します。fc.aliyun.com、*.aliyun.com、*.fc.aliyun.com。
リクエストドメイン名 | 一致したドメイン名 |
fc.aliyun.com | fc.aliyun.com |
fnf.aliyun.com | *.aliyun.com |
cn-hangzhou.fc.aliyun.com | *.fc.aliyun.com |
accountID.cn-hangzhou.fc.aliyun.com | なし |
よくある質問
HTTP トリガーのパブリックエンドポイントは本番環境で使用できますか?
カスタムドメイン名にアクセスしたときに 502 Bad Gateway エラーが報告された場合はどうすればよいですか?
中国語のドメイン名を使用してカスタムドメイン名を構成するときにエラーが報告された場合はどうすればよいですか?
ブラウザでドメイン名にアクセスしたときに強制ダウンロードが発生する問題を解決するにはどうすればよいですか?
アクセラレーションドメイン名にアクセスしたときに 301 リダイレクトが発生した場合はどうすればよいですか?
ルートを構成するときに既存の関数を選択できない場合はどうすればよいですか?
ルートを使用して関数をトリガーできない場合はどうすればよいですか?
診断
カスタムドメイン名をバインドするときにエラーが発生した場合、サーバーはエラーメッセージを返します。次の表に、問題を迅速に特定して解決するのに役立つ一般的なエラーコードを示します。
エラーコード | HTTP ステータスコード | エラーメッセージ | 原因 |
InvalidICPLicense | 400 | domain name '%s' has not got ICP license, or the ICP license does not belong to Aliyun | ドメイン名に ICP ファイリングがないか、ICP ファイリング情報にサービスプロバイダーとして Alibaba Cloud が含まれていません。 |
DomainNameNotResolved | 400 | domain name '%s' has not been resolved to your FC endpoint, the expected endpoint is '%s' | ドメイン名に、指定されたエンドポイントを指す CNAME が設定されていません。dig コマンドを実行するか、DNS サーバーにログインして、CNAME 設定を確認できます。 |
DomainRouteNotFound | 404 | no route found in domain '%s' for path '%s' | 指定されたパスに関数が構成されていません。 |
TriggerNotFound | 404 | trigger 'http' does not exist in service '%s' and function '%s' | カスタムドメイン名にバインドされている関数に HTTP トリガーが構成されていません。 |
DomainNameNotFound | 404 | domain name '%s' does not exist | 照会するドメイン名は存在しません。 |
DomainNameAlreadyExists | 409 | domain name '%s' already exists | バインドするドメイン名は既に存在します。 |
問題が解決しない場合は、テクニカルサポートを受けるために DingTalk グループ 64970014484 に参加してください。


