本番環境で Function Compute のアプリケーションまたは関数に固定のドメイン名からアクセスする場合、または HTTP トリガーへのアクセス時にブラウザが強制的にダウンロードを実行しないようにする場合は、アプリケーションまたは関数にカスタムドメイン名をバインドします。
適用範囲/利用シーン
以下のケースでは、関数またはアプリケーションにカスタムドメイン名をバインドする必要があります。
-
Web アプリケーションを Function Compute に移行し、カスタムドメイン名からアクセスしたい場合。
-
Function Compute コンソール で Web アプリケーションを構築し、同一ドメイン上の異なるパスで異なる関数を呼び出したい場合。
-
Function Compute で Stable Diffusion アプリケーションなどのアプリケーションを作成し、カスタムドメイン名からアクセスしたい場合。
制限事項
-
関数にカスタムドメイン名をバインドする場合、関数が配置されているリージョンを選択する必要があります。
-
カスタムドメイン名は大文字と小文字を区別します。ICP 登録情報に記載された通りに正確に入力してください。
-
ワイルドカードドメイン名および標準ドメイン名がサポートされていますが、中国のドメイン名はサポートされていません。
仕組み
前提条件
-
関数またはアプリケーションを作成済みである必要があります。詳細については、「関数の作成」および「アプリケーションの作成」をご参照ください。
アプリケーションにカスタムドメイン名をバインドすると、そのアプリケーション内のすべての関数にも自動的にバインドされます。これらの自動生成された関数は、アプリケーションの「リソース情報」セクション(アプリケーションの「環境の詳細」ページ)で確認できます。関数名をクリックすると、関数の詳細ページに移動します。
-
Web サイト向けに Alibaba Cloud による ICP 登録が完了したカスタムドメイン名を所有している必要があります。
ICP 登録の手順は、ドメインのレジストラーおよび関連するアカウントによって異なります。
-
現在の Alibaba Cloud アカウントで登録されたドメイン名
Alibaba Cloud ICP 登録システム にログインし、カスタムドメイン名の ICP 登録を完了します。
-
他の Alibaba Cloud アカウントで登録されたドメイン名
ドメイン名が登録されている Alibaba Cloud アカウントを使用して ICP 登録を完了することを推奨します。
-
Alibaba Cloud アカウントで登録されていないドメイン名
ドメイン名の ICP 登録が他のサービスプロバイダーによって完了している場合は、既存の登録記録に Alibaba Cloud をサービスプロバイダーとして追加する必要があります。この操作を行うには、Alibaba Cloud ICP 登録システム にログインします。
説明-
中国(香港)リージョンまたは中国本土以外のリージョンで関数にバインドされるカスタムドメイン名については、ICP 登録は不要です。
-
ドメイン名のレジストラーを確認するには、WHOIS ページをご利用ください。
-
ドメイン名が現在の Alibaba Cloud アカウントに属しているかを確認するには、Alibaba Cloud DNS (DNS) コンソール をご利用ください。
-
1. カスタムドメイン名の追加
-
Function Compute コンソール にログインします。左側ナビゲーションウィンドウで、 を選択します。リージョンを選択し、「カスタムドメイン名の追加」をクリックします。
重要関数にカスタムドメイン名をバインドするには、関数と同じリージョンである必要があります。
-
「カスタムドメイン名の追加」ページで、Alibaba Cloud による 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. ドメイン名の名前解決の設定
Alibaba Cloud DNS コンソール にログインし、ICP 登録済みのドメイン名を Function Compute の CNAME にポイントします。詳細については、「ドメイン名の名前解決の設定」をご参照ください。

図に示すように、DNS 名前解決を設定する際は、「レコード値」を前のステップで取得した 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 リクエストに対して署名認証が必要です。詳細については、「カスタムドメイン名の署名認証の設定」をご参照ください。
-
Basic 認証:標準的な HTTP 認証方式です。Function Compute コンソールでユーザー名とパスワードを設定します。クライアントがリクエストを開始すると、Authorization ヘッダーに認証情報を含めます。リクエスト内の認証情報が設定されたユーザー名とパスワードと一致した場合にのみ、アクセスが許可されます。詳細については、「カスタムドメイン名の Basic 認証の設定」をご参照ください。
-
JWT 認証:JWT 認証では、HTTP リクエストに有効な JWT を含める必要があります。これにより、承認されたクライアントのみが関数にアクセスできるようになります。詳細については、「カスタムドメイン名の JWT 認証の設定」をご参照ください。
-
Bearer 認証:標準的な HTTP 認証方式です。Function Compute コンソールで許可されるトークンを設定します。クライアントがリクエストを開始すると、Authorization ヘッダーにトークンを含めます。リクエスト内のトークンが設定されたトークンと一致した場合にのみ、アクセスが許可されます。詳細については、「カスタムドメイン名の Bearer 認証の設定」をご参照ください。
3.4 (任意)WAF の設定
WAF を有効化すると、悪意のあるトラフィックを検出しフィルター処理し、通常かつ安全なリクエストのみをバックエンド関数に転送します。これにより、関数が悪意ある侵入から保護されます。詳細については、「WAF の有効化」をご参照ください。

3.5 (任意)CDN 設定の設定
Web アプリケーションにカスタムドメイン名をバインドした後、そのカスタムドメイン名をオリジンサーバーとして使用し、CDN 加速ドメイン名を追加できます。その後、CDN 加速ドメイン名に CNAME を設定することで CDN を有効化できます。Function Compute 上のアプリケーションをオリジンサーバーとして使用することで、コンテンツがエッジノードにキャッシュされます。これにより、ユーザーは近隣の場所からコンテンツを取得でき、アクセス遅延を短縮し、サービス品質を向上させることができます。
-
CDN 高速化を有効化します。カスタムの CDN 加速ドメイン名 を入力し、「作成」をクリックします。
重要-
CDN 高速化はインターネットトラフィックを消費し、課金対象となります。詳細については、「課金概要」をご参照ください。
-
カスタムドメイン名と CDN 加速ドメイン名は同一であってはなりません。ドメイン名リソースを節約するため、CDN 加速ドメイン名をカスタムドメイン名のサブドメインとして設定できます。たとえば、カスタムドメイン名が
example.comの場合、CDN 加速ドメイン名をfast.example.comと設定できます。
-
-
先ほど設定したカスタムドメイン名をクリックします。詳細ページの「CDN 高速化設定」セクションで、「CDN 設定」を「アクション」列からクリックします。これにより、Alibaba Cloud CDN コンソール にリダイレクトされ、CDN 加速ドメイン名に割り当てられた CNAME を取得できます。


CNAME の形式は
accelerated-domain-name.w.kunlun**.comです(例:fast.example.com.w.kunlunle.com)。 -
Alibaba Cloud DNS コンソール にログインします。カスタムドメイン名を検索し、CDN 加速ドメイン名の CNAME レコードを追加して、割り当てられた CNAME にポイントすることで高速化を有効化します。詳細については、「ドメイン名の名前解決の設定」をご参照ください。

ホスト名 にはサブドメインのプレフィックス(例:
fast)を設定します。レコード値 には、前のステップで取得した CNAME を設定します。
3.6 (任意)CORS の設定
CORS は、UpdateCustomDomain API オペレーションを呼び出してカスタムドメイン名に対して設定できます。詳細については、「CORS リクエストの処理」をご参照ください。
4. ドメイン名の検証
4.1 ドメイン名へのアクセスの検証
-
方法 1:
curl URLコマンドを実行します。例:curl example.com/login。 -
方法 2:ブラウザを使用します。
ブラウザのアドレスバーにリクエスト URL を入力し、Enter キーを押して、目的の関数が呼び出されることを確認します。
4.2 (任意)CDN 加速ドメイン名へのアクセスの検証
ステップ 3.5(任意)CDN 設定の設定 で設定した CDN 加速ドメイン名を使用して、ブラウザからアプリケーションにアクセスします。次に、開発者ツールを開き、レスポンスヘッダー内の X-Cache フィールドの値を確認して、CDN 高速化が正常に機能していることを検証します。
X-Cache フィールドの値は CDN キャッシュステータスを示します。MISS は、エッジノードでキャッシュがヒットせず、オリジンサーバーからリソースを取得したことを意味します。リソースがエッジノードにキャッシュされた後、以降のリクエストは HIT になります。
|
初回アクセス:Miss |
以降のアクセス:Hit |
|
|
|
暗号スイートのリファレンス
強力な暗号スイートと弱い暗号スイート
TLS バージョンと暗号スイートの互換性
RFC および OpenSSL の暗号スイートの対応関係
一致ルール
ルート一致ルール
カスタムドメイン名をバインドするには、パスと関数のマッピングを設定します。これにより、異なるパスからのリクエストを異なる関数の呼び出しにルーティングできます。Function Compute は完全一致およびワイルドカード一致をサポートしています。ルールは以下のとおりです。
-
完全一致:リクエストパスが設定されたパスと完全に一致する場合にのみ関数を呼び出します。
たとえば、パス /a を関数 f1(バージョン 1)の呼び出しに設定した場合、パス /a のみが関数を呼び出します。パス /a/ は呼び出しません。
-
ワイルドカード一致:パスの末尾にワイルドカード (*) を使用して、複数のサブパスに一致させることができます。
たとえば、パス /login/* を関数 f2(バージョン 1)の呼び出しに設定した場合、プレフィックス /login/ で始まるパス(例:/login/a や /login/b/c/d)のリクエストがすべて関数を呼び出します。
-
カスタムドメイン名に対して複数のルートが設定されている場合、完全一致がワイルドカード一致よりも優先されます。
-
ワイルドカード一致は最長プレフィックス一致の原則に従います。
たとえば、カスタムドメイン名
example.comに対して、/login/a/* および /login/* の 2 つのパスを設定したとします。URL example.com/login/a/b のリクエストは両方のパスに一致しますが、最長プレフィックス一致の原則により、Function Compute は /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。以下の表に、Function Compute が異なるドメイン名からのリクエストをどのように一致させるかを示します。
|
リクエストドメイン名 |
一致したドメイン名 |
|
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 |
該当なし |
よくある質問
本番環境でのパブリックエンドポイント
502 Bad Gateway エラー
中国のドメイン名エラー
強制ダウンロードの問題
301 リダイレクト
関数が選択できない
ルートパスのトリガー失敗
トラブルシューティング
カスタムドメイン名のバインド中にエラーが発生した場合、サーバーはエラーメッセージを返します。以下の一般的なエラーコードの表を活用して、問題を迅速に特定および解決してください。
|
エラーコード |
HTTP ステータスコード |
エラーメッセージ |
原因 |
|
InvalidICPLicense |
400 |
ドメイン名 '%s' には ICP 登録がありません、または ICP 登録が Alibaba Cloud によるものではありません |
ドメイン名に ICP 登録が行われていないか、ICP 登録情報に Alibaba Cloud がサービスプロバイダーとして登録されていません。 |
|
DomainNameNotResolved |
400 |
ドメイン名 '%s' が Function Compute のエンドポイントに解決されていません。予期されるエンドポイントは '%s' です |
ドメイン名を指定されたエンドポイントにポイントする CNAME レコードが設定されていません。設定を確認するには、dig コマンドを実行するか、DNS サーバーの設定を確認してください。 |
|
DomainRouteNotFound |
404 |
ドメイン '%s' にパス '%s' のルートが見つかりません |
指定されたパスを処理する関数が設定されていません。 |
|
TriggerNotFound |
404 |
サービス '%s' および関数 '%s' に 'http' というトリガーが存在しません |
カスタムドメイン名にバインドされた関数に HTTP トリガーが設定されていません。 |
|
DomainNameNotFound |
404 |
ドメイン名 '%s' が存在しません |
指定されたドメイン名が存在しません。 |
|
DomainNameAlreadyExists |
409 |
ドメイン名 '%s' はすでに存在します |
指定されたドメイン名はすでに存在します。 |
問題が解決しない場合は、DingTalk ユーザーグループ(ID:64970014484)に参加し、Function Compute のエンジニアにご相談ください。

