本番環境で固定ドメイン名を使用して Function Compute アプリケーションまたは関数にアクセスする場合、または HTTP トリガーへのアクセス時に強制ダウンロードを防ぐ場合は、カスタムドメイン名をアプリケーションまたは関数にバインドできます。
利用シーン
以下のシナリオで、カスタムドメイン名をアプリケーションまたは関数にバインドできます。
Web アプリケーションを作成し、Function Compute に移行しました。ユーザーが固定ドメイン名でアプリケーションにアクセスできるようにします。
FC コンソールを使用して Web アプリケーションを構築しました。単一ドメイン名の異なるパスで異なる関数をトリガーさせたいと考えています。
Function Compute の Serverless Application Center で Stable Diffusion アプリケーションなどのアプリケーションを作成しました。ユーザーが固定ドメイン名でアプリケーションにアクセスできるようにします。
制限事項
カスタムドメイン名を関数にバインドする場合、関数が存在するリージョンと同じリージョンを選択してください。
設定するカスタムドメイン名では大文字と小文字が区別されます。ICP 登録を取得したドメイン名を正確に入力してください。
ワイルドカードドメイン名と標準ドメイン名を設定できます。中国語文字を含むドメイン名は設定できません。
カスタムドメイン名によるアプリケーションへのアクセスの仕組み
前提条件
関数またはアプリケーションが作成されていること。詳細については、「関数の作成」および「アプリケーションの作成」をご参照ください。
アプリケーションにカスタムドメイン名をバインドすることは、アプリケーションと共に自動的に作成された関数にバインドすることを意味します。アプリケーションの [環境詳細] ページで、[リソース情報] セクションにあるこれらの関数を見つけます。関数名をクリックすると、その詳細ページに移動します。
Alibaba Cloud 上の Web サイトで ICP 登録を取得したカスタムドメイン名を準備します。
ドメイン名に関連付けられているサービスプロバイダーとアカウントに基づいて ICP 登録を申請します。
現在の Alibaba Cloud アカウントで登録されたドメイン名
Alibaba Cloud ICP 登録システムで ICP 登録を申請します。
他の Alibaba Cloud アカウントで登録されたドメイン名
ドメイン登録に関連付けられている Alibaba Cloud アカウントを使用して ICP 登録申請を行うことを推奨します。Alibaba Cloud ICP 登録システムにログインして、カスタムドメイン名の ICP 登録を申請します。
Alibaba Cloud 以外のアカウントで登録されたドメイン名
ドメイン名が Alibaba Cloud で登録されていない場合は、ICP 登録で Alibaba Cloud をサービスプロバイダーとして追加します。Alibaba Cloud ICP 登録システムで ICP 登録を申請します。
説明中国 (香港) または中国以外のリージョンの関数にバインドされたカスタムドメイン名については、ICP 登録を申請する必要はありません。
ドメイン名を管理しているサービスプロバイダーが不明な場合は、[WHOIS ドメイン情報検索] ページで照会してください。
ドメイン名が現在の Alibaba Cloud アカウントに属しているかどうかわからない場合は、Alibaba Cloud DNS コンソールで確認してください。
1. カスタムドメイン名の追加
FC コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。リージョンを選択し、[カスタムドメイン名の追加] をクリックします。
重要カスタムドメイン名を関数にバインドする場合、関数と同じリージョンを選択してください。
[カスタムドメイン名の追加] ページで、Alibaba Cloud に登録済みまたは既存の ICP 登録に追加済みのカスタムドメイン名を入力します。単一ドメイン名 (例:
www.aliyun.com) またはワイルドカードドメイン名 (例:*.aliyun.com) を指定できます。次のステップで名前解決を設定するために、[インターネット CNAME] または [内部 CNAME] を取得します。次の表に CNAME ドメイン名のフォーマットを示します。
CNAME タイプ
フォーマット
例
インターネット CNAME
<account_id>.<region_id>.fc.aliyuncs.comご利用の Alibaba 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. 名前解決の設定
Alibaba Cloud DNS コンソールにログインします。登録済みのドメイン名を Function Compute の CNAME ドメイン名に解決します。詳細については、「名前解決の設定」をご参照ください。

図に示すように、[レコード値] を前のステップで取得した Function Compute の CNAME ドメイン名に設定します。インターネット経由でドメイン名にアクセスする場合は、[レコード値] を Function Compute のインターネット CNAME に設定します。
3. カスタムドメイン名の追加完了
ステップ 1 の [カスタムドメイン名の追加] ページに戻ります。次のオプションを設定し、[作成] をクリックします。
3.1 ルーティング設定
アプリケーションに複数の関数が含まれている場合は、リクエストパスを関数にマッピングします。異なるパスが異なる関数をトリガーします。詳細については、「ルートマッチングルール」をご参照ください。
指定されたパスに一致するリクエストの URI を書き換えるには、「書き換えポリシーの設定 (パブリックプレビュー)」をご参照ください。

3.2 (オプション) HTTPS 設定
カスタムドメイン名への HTTPS アクセスを有効にするには、次の手順に従います。

設定 | アクション |
HTTPS | このオプションを有効にすると、HTTP または HTTPS 経由でのアクセスが許可されます。無効にすると、HTTP 経由でのみアクセスが許可されます。 説明 [HTTP を HTTPS にリダイレクト] チェックボックスを選択すると、HTTPS 経由でのみアクセスが許可されます。Function Compute はすべての HTTP リクエストを HTTPS にリダイレクトします。 |
証明書タイプ | アップロードする証明書タイプを選択します。
説明 アップロードする証明書は 20 KB 以下、証明書キーは 4 KB 以下である必要があります。 |
[TLS バージョン] | 関数が使用する TLS プロトコルのバージョンを選択します。 説明 TLS バージョンを選択した後、[TLS 1.3 を有効にする] チェックボックスを選択して TLS 1.3 をサポートします。 |
[暗号スイート] | TLS 暗号スイートを選択します。空白のままにすると、すべての暗号スイートが選択されます。オプション:
重要
|
3.3 (オプション) 認証設定
認証なし:HTTP リクエストに本人確認は不要です。匿名アクセスが許可されます。誰でも関数を呼び出すことができます。
署名認証:デジタル署名を使用して HTTP リクエストを認証します。詳細については、「カスタムドメイン名の署名認証の設定」をご参照ください。
基本認証:HTTP 基本認証を使用します。FC コンソールでユーザー名とパスワードを設定します。クライアントは Authorization ヘッダーに有効な認証情報を含める必要があります。認証情報が一致する場合にのみリクエストは成功します。詳細については、「カスタムドメイン名の基本認証の設定」をご参照ください。
JWT 認証:JSON Web トークン (JWT) を使用して HTTP リクエストを認証します。有効な JWT を持つクライアントのみが関数にアクセスできます。詳細については、「カスタムドメイン名の JWT 認証の設定」をご参照ください。
Bearer 認証:Bearer トークンを使用して HTTP リクエストを認証します。FC コンソールで許可されたトークンを設定します。クライアントは Authorization ヘッダーに有効なトークンを含める必要があります。トークンが一致する場合にのみリクエストは成功します。詳細については、「カスタムドメイン名の Bearer 認証の設定」をご参照ください。
3.4 (オプション) Web Application Firewall 設定
これを有効にすると、関数またはアプリケーションへの悪意のあるトラフィックを識別できます。トラフィックスクラビングとフィルタリングにより、悪意のあるトラフィックが削除されます。正常で安全なトラフィックはバックエンド関数に転送され、不正アクセスを防ぎます。詳細については、「Web Application Firewall 保護の有効化」をご参照ください。

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


図に示すように、CNAME ドメイン名は
accelerated-domain-name.w.kunlun**.com形式に従います。例:fast.example.com.w.kunlunle.com。Alibaba Cloud DNS コンソールにログオンします。 お客様のカスタムドメイン名を見つけます。 高速化ドメイン名の DNS レコードを、割り当てられた CNAME ドメイン名にポイントして、高速化を有効にします。 詳細については、「名前解決を設定する」をご参照ください。

図に示すように、[ホストレコード] を高速化ドメイン名の第 1 レベルに設定します。この例では、
fastです。[レコード値] を前のステップで設定した高速化ドメイン名に設定します。
3.6 (オプション) CORS 設定
カスタムドメイン名の更新 API を使用して、カスタムドメイン名の CORS を設定します。詳細については、「CORS リクエストの処理」をご参照ください。
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 の Point of Presence (POP) キャッシュにヒットせず、オリジンからリソースを取得したことを意味します。キャッシュ後、後続のリクエストは HIT を返し、リソースが POP から提供されたことを意味します。
初回リクエストミス | 後続のリクエストがヒット |
|
|
暗号スイート
強力な暗号スイートと脆弱な暗号スイート
TLS バージョンと暗号スイートのマッピング
RFC と OpenSSL の暗号スイート名のマッピング
マッチングルール
ルートマッチングルール
カスタムドメイン名をバインドする際、リクエストパスを関数にマッピングします。異なるパスからのリクエストが異なる関数をトリガーします。Function Compute は完全一致とあいまい一致をサポートしています。ルール:
完全一致:リクエストパスが設定されたパスと完全に一致する場合にのみ、関数がトリガーされます。
たとえば、パスが /a、関数が f1、バージョンが 1 の場合、/a へのリクエストのみが f1 バージョン 1 をトリガーします。/a/ へのリクエストは失敗します。
あいまい一致:パスの末尾にワイルドカードとしてアスタリスク (*) を使用します。
たとえば、パスが /login/*、関数が f2、バージョンが 1 の場合、/login/ で始まるパスへのリクエスト (例:/login/a や /login/b/c/d) は f2 バージョン 1 をトリガーします。
カスタムドメイン名に複数のルートが存在する場合、完全一致があいまい一致よりも優先されます。
あいまい一致では、最長プレフィックス一致が使用されます。
たとえば、/login/a/* と /login/* を設定し、カスタムドメイン名が
example.comの場合、example.com/login/a/b へのリクエストは両方に一致します。しかし、最長プレフィックス一致により /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/* |
ドメイン名マッチングルール
FC はリクエストのドメイン名を設定されたドメイン名と照合し、リクエストを対応する関数に転送します。完全一致とあいまい一致をサポートしています。ルール:
完全一致:リクエストドメイン名がカスタムドメイン名と完全に一致する場合にのみ、関数がトリガーされます。
あいまい一致:ワイルドカードドメイン名 (ジェネリックドメイン名とも呼ばれる) をサポートします。リクエストドメイン名がワイルドカードを使用してカスタムドメイン名と一致する場合、関数がトリガーされます。最大 1 つのアスタリスク (*) を使用でき、ドメイン名の先頭に配置する必要があります。
リクエストが単一ドメイン名とワイルドカードドメイン名の両方に一致する場合、単一ドメイン名が優先されます。
あいまい一致では、ワイルドカードドメイン名は同じレベルのドメインにのみ一致します。たとえば、
*.aliyun.comはfc.aliyun.comに一致しますが、cn-hangzhou.fc.aliyun.comには一致しません。*.aliyun.comとfc.aliyun.comはどちらも第 3 レベルドメインですが、cn-hangzhou.fc.aliyun.comは第 4 レベルです。
例
3 つのカスタムドメイン名があると仮定します: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 サーバーを使用して確認してください。 |
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 にご参加ください。

