固定ドメイン名を使用して本番環境でFunction Computeアプリケーションまたは関数にアクセスする場合、またはHTTPトリガーにアクセスするときに強制ダウンロードを防止する場合は、カスタムドメイン名をアプリケーションまたは関数にバインドできます。
シナリオ
カスタムドメイン名を関数またはアプリケーションにバインドする必要がある一般的なシナリオを次に示します。
webアプリケーションを作成し、webアプリケーションをFunction Computeに移行し、ユーザーが固定ドメイン名を使用してwebアプリケーションにアクセスする必要がある場合。
Function Computeコンソールでwebアプリケーションを構築し、ドメイン名の異なるパスを使用して異なる関数をトリガーする場合。
Function ComputeのサーバーレスアプリケーションセンターでStable Diffusionアプリケーションなどのアプリケーションを作成し、固定ドメイン名を使用してアプリケーションにアクセスする必要がある場合。
制限事項
設定されたカスタムドメイン名は大文字と小文字を区別します。 インターネットコンテンツプロバイダ (ICP) の登録を取得する実際のドメイン名を使用します。
ドメイン名の長さは最大256文字です。 各レベルのサブドメイン名には、少なくとも1文字を含める必要があり、最大63文字の長さにすることができます。 サブドメイン名には、文字 (大文字と小文字を区別する) 、数字 (0〜9) 、およびハイフン (-) を使用できます。 ただし、ドメイン名の先頭にハイフン (-) は使用できません。 ドメイン名の最後の部分 (トップレベルドメイン名) は、長さが2文字以上のアルファベット文字の文字列である必要があります。
ワイルドカードドメイン名と標準ドメイン名を設定できます。 漢字を含むドメイン名は設定できません。
カスタムドメイン名は、カスタムドメイン名と同じリージョンに属する関数にのみバインドできます。
仕組み
あなたが始める前に
関数またはアプリケーションを作成します。 詳細については、「関数の作成」および「アプリケーションの作成」をご参照ください。
カスタムドメイン名をアプリケーションにバインドするとは、カスタムドメイン名をアプリケーションによって作成された関数にバインドすることです。 アプリケーションの [環境の詳細] ページの [リソース情報] セクションで、アプリケーションの作成時に自動的に作成される関数リソースを確認し、関数名をクリックして関数ページに移動します。
ICP登録情報にサービスプロバイダーとしてAlibaba Cloudが含まれているカスタムドメイン名を準備します。
ドメイン名が属するサービスプロバイダーとアカウントに基づいて、ドメイン名のICP申請を申請します。 次の項目は、異なるドメイン名に対応する操作を示しています。
現在のAlibaba Cloudアカウントで登録されているドメイン名
Alibaba Cloud ICPファイリングシステムでカスタムドメイン名のICPファイリングを申請します。 詳細については、「ICP登録プロセス」をご参照ください。
他のAlibaba Cloudアカウントによって登録されたドメイン名
ドメイン名の登録に使用されるAlibaba Cloudアカウントを使用して、ドメイン名のICP申請を取得することを推奨します。 Alibaba Cloud ICPファイリングシステムでカスタムドメイン名のICPファイリングを申請します。 詳細については、「ICP登録プロセス」をご参照ください。
Alibaba Cloud以外のアカウントで登録されたドメイン名
ドメイン名が別のサービスプロバイダーを通じて提出されている場合、Alibaba CloudをサービスプロバイダーとしてICP提出情報に追加する必要があります。 Alibaba Cloud ICPファイリングシステムにログインし、カスタムドメイン名のICPファイリングを申請します。
1. カスタムドメイン名の追加
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。 表示されるページで、リージョンを選択し、[カスタムドメイン名の追加] をクリックします。
Alibaba Cloud ICPファイリングシステムでICPファイリングを取得したか、またはそのICPファイリング情報にサービスプロバイダーとしてAlibaba Cloudが含まれているカスタムドメイン名を入力します。
www.aliyun.com
などの単一ドメイン名と* .aliyun.com
などのワイルドカードドメイン名がサポートされています。[カスタムドメイン名の追加] パネルで、[インターネットCNAME] または [内部CNAME] レコードを取得します。 次の表に、CNAMEレコードの形式を示します。
CNAMEタイプ
Format
例
インターネット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. ドメイン名解決の設定
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バージョン | 関数が使用するトランスポート層セキュリティ (TLS) プロトコルバージョンをドロップダウンリストから選択します。 このパラメーターを空のままにすると、TLS 1.0、TLS 1.1、TLS 1.2を含むTLS 1.0以降のバージョンが使用されます。 説明 上記のTLSバージョンのいずれかを選択した場合、[TLS1.3のサポートを有効にする] を選択してTLS 1.3を有効にします。 |
暗号スイート | TLS暗号アルゴリズムスイートを指定します。 このパラメーターを空のままにすると、すべての暗号スイートが選択されます。 値の説明:
重要
|
3.3 (オプション) 认证设定
認証なし: HTTPリクエストには認証は不要で、匿名アクセスがサポートされています。 誰でもHTTPリクエストを開始して関数を呼び出すことができます。
署名検証: HTTPリクエストには署名認証が必要です。 詳細については、「カスタムドメイン名の署名認証の設定」をご参照ください。
JWT認証: HTTPリクエストにはJWT認証が必要です。 詳細については、「カスタムドメイン名のJWT認証の設定」をご参照ください。
3.4 (オプション) WAF設定
WAFは、関数とアプリケーションで悪意のあるトラフィックを識別し、悪意のあるトラフィックをスクラブして除外し、通常のトラフィックをバックエンド関数に返して、悪意のある侵入から関数を保護します。 詳細については、「WAF保護の有効化」をご参照ください。
3.6 (オプション) CDN設定
カスタムドメイン名をwebアプリケーションにバインドした後、カスタムドメイン名をオリジンドメイン名として使用し、高速化ドメイン名を追加できます。 次に、高速化ドメイン名のCNAMEを設定できます。 これにより、カスタムドメイン名に対してCDNアクセラレーションが有効になります。 Function Computeにデプロイされたアプリケーションはオリジンサーバーとして機能し、ソースコンテンツはエッジノードに公開されます。 このようにして、エンドユーザーは必要なコンテンツを高効率で読むことができます。 これにより、レイテンシが効率的に削減され、サービス品質が向上します。
CDNアクセラレーションを有効に設定します。 カスタムのCDN高速化ドメイン名を指定し、[作成] をクリックします。
重要CDNアクセラレーション機能を有効にすると、インターネット経由で転送されたデータに対して課金されます。 詳細については、「課金の概要」をご参照ください。
カスタムドメイン名と高速化ドメイン名を同じにすることはできません。 過剰なドメイン名リソースの消費を防ぐために、CDN-Accelerated domain nameをカスタムドメイン名の第2レベルドメイン名 (サブドメイン名) に設定できます。 たとえば、カスタムドメイン名を
example.com
に設定した場合、CDN-Accelerated domain nameを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 (domain name System) レコードを割り当てられたCNAMEにポイントしてアクセラレーションを実装します。 詳細については、次をご参照ください: クイックスタート
上の図は例を示しています。 ホスト名を高速化ドメイン名の最初のレベルに設定します。 この例では、値は
高速
です。 [レコード値] を前の手順で設定した高速化ドメイン名に設定します。
4。 カスタムドメイン名の確認
4.1 カスタムドメイン名にアクセスできるかどうかを確認する
方法1:
curl URL
コマンド (例:cur l example.com/login
) を実行します。方法2: ブラウザを使用します。
ブラウザのアドレスバーにリクエストURLを入力し、Enterキーを押して、指定された関数が呼び出されているかどうかを確認します。
4.2 (オプション) 高速化ドメイン名の確認
ブラウザの3.6 (オプション) 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/aや /login/b/c/dなど、/login/ で始まるパスからのリクエストは、バージョン1の関数2をトリガーできます。
カスタムドメイン名に複数のルートが設定されている場合、完全一致はファジー一致よりも優先されます。
最長プレフィックス一致 (LPM) ルールは、ファジーマッチングが実行されるときに適用される。
たとえば、/login/a/* パスと /login/* パスがカスタムドメイン名
example.com
に設定され、リクエストURLがexample.com/login/a/bされます。 リクエストURLは、設定されたパスと一致します。 ただし、/login/a/* パスは、LPMルールに基づいて使用されます。
例
たとえば、カスタムドメイン名がexample.com
され、このトピックで説明されている手順に基づいて5つのルーティングルールが設定されます。 次の表に、ルーティングルールを示します。
ルーティングルール | パス | 関数名 | バージョン |
ルーティングルール1 | / | f1 | 1 |
ルーティングルール2 | /* | f2 | 2 |
ルーティングルール3 | /ログイン | 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 | /ログイン |
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レベルのドメインです。
例
次の表に、既存のドメイン名 (* .aliyun.com
、および * .fc.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 | ドメイン名 '% s' にICPライセンスがないか、ICPライセンスがAliyunに属していない | このエラーは、ドメイン名にICP登録がないか、ICP登録の情報にサービスプロバイダーとしてのAlibaba Cloudが含まれていないために報告されます。 |
DomainNameNotResolved | 400 | ドメイン名 '% s' はFCエンドポイントに解決されていません。予想されるエンドポイントは' % s' です | 指定されたエンドポイントを指すドメイン名にCNAMEが設定されていない場合に返されるエラーメッセージ。 CNAMEの設定を確認するには、digコマンドを実行するか、ドメインネームシステム (DNS) サーバーにログインします。 |
DomainRouteNotFound | 404 | パス '% s' のドメイン' % s' にルートが見つかりません | 指定されたパスに関数が設定されていない場合に返されるエラーメッセージ。 |
TriggerNotFound | 404 | トリガー 'http' がサービス '% s' に存在せず、関数' % s' | カスタムドメイン名にバインドされている関数にHTTPトリガーが設定されていない場合に返されるエラーメッセージ。 |
DomainNameNotFound | 404 | ドメイン名 '% s' は存在しません | 照会するドメイン名が存在しない場合に返されるエラーメッセージ。 |
DomainNameAlreadyExists | 409 | ドメイン名 '% s' は既に存在します | バインドするドメイン名が既に存在する場合に返されるエラーメッセージ。 |
問題が解決しない場合は、テクニカルサポートのためDingTalkグループ64970014484に参加してください。