Function Compute は、作成した HTTP 関数用のデフォルトエンドポイントを提供します。このエンドポイントにブラウザからアクセスすると、強制ダウンロードが発生します。強制ダウンロードを回避してブラウザから関数にアクセスする場合や、固定ドメイン名を使用したい場合は、カスタムドメイン名を設定する必要があります。
適用シナリオ
HTTP 関数は Web アプリケーションとして動作し、HTTP リクエストを処理して呼び出し元に結果を返します。以下のシナリオでは、Web アプリケーションにカスタムドメインをバインドします。
Web アプリケーションを作成し、Function Compute に移行しました。今後は固定ドメイン名でアプリケーションにアクセスしたいと考えています。
Function Computeコンソール で Web アプリケーションを構築しました。Function Compute が提供するデフォルトエンドポイント
<account_id>.<region_id>.fc.aliyuncs.com/<version>/proxy/<serviceName>/<functionName>/[action?queries]を使用してアクセスしたいと考えています。ただし、このエンドポイントにブラウザからアクセスすると強制ダウンロードが発生します。ユーザーに影響を与えることなく、Web アプリケーションのアクセスアドレスを変更する必要があります。
前提条件
HTTP 関数を作成します。カスタムドメイン名からのリクエストでトリガーできるのは HTTP 関数のみです。
制限事項
中国のドメイン名は設定できません。
カスタムドメイン名は大文字と小文字を区別します。ICP 登録情報に記載されているドメイン名を正確に入力してください。
ワイルドカードドメイン名および標準ドメイン名を設定できます。
操作手順
カスタムドメイン名のエンドツーエンド設定
ステップ 1:ドメイン名の ICP 登録
ドメイン名のサービスプロバイダ (SP) および関連付けられているアカウントに応じて、対応する操作ガイドを参照して ICP 登録を実施してください。
中国 (香港) または中国以外のリージョンにある関数にバインドされたドメイン名には、ICP 登録は不要です。
ドメイン名を管理しているサービスプロバイダが不明な場合は、WHOIS 検索 ページで確認してください。
ドメイン名が現在の Alibaba Cloud アカウントに属しているか不明な場合は、Alibaba Cloud DNS コンソール で確認してください。
現在の Alibaba Cloud アカウントに登録されたドメイン名
Alibaba Cloud ICP 登録システム を使用してカスタムドメイン名を登録してください。詳細については、「ICP 登録プロセス」をご参照ください。
別の Alibaba Cloud アカウントに登録されたドメイン名
ドメイン名は、登録されている Alibaba Cloud アカウントを使用して登録することを推奨します。
Alibaba Cloud 以外で登録されたドメイン名
既に他のサービスプロバイダーでエンティティおよびドメイン名のICP 登録が完了している場合、現在Alibaba Cloudをサービスプロバイダーとして追加するか、またはサービスプロバイダーをAlibaba Cloudに切り替える場合は、Alibaba Cloud向けのICP 登録を完了してください。カスタムドメイン名を登録するには、Alibaba Cloud ICP 登録システムを使用してください。
ステップ 2:ドメイン名解決の設定
ドメイン名解決の設定方法については、「ドメイン名解決の設定」をご参照ください。
ICP 登録済みのドメイン名を対応するリージョンの Function Compute エンドポイントに解決する必要があります。つまり、カスタムドメイン名の CNAME レコードを Function Compute エンドポイントに向ける必要があります。ドメイン名解決ページで、レコードタイプ が CNAME、レコード値 が Function Compute エンドポイントとなるレコードを追加してください。
Function Compute エンドポイントの形式は次のとおりです。
エンドポイントタイプ | 形式 | 例 | |
パブリックネットワークエンドポイント |
| カスタムドメイン名が example.com、Alibaba Cloud アカウント ID が 164901546557****、リージョンが中国 (上海) の場合 | パブリックネットワークエンドポイントは |
プライベートネットワークエンドポイント |
| プライベートネットワークエンドポイントは | |
パブリックネットワーク経由でこのドメイン名にアクセスする場合は、レコード値 を Function Compute のパブリックエンドポイントに設定する必要があります。
ステップ 3:カスタムドメイン名の追加
Function Compute コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーでリージョンを選択します。カスタムドメイン ページで、カスタムドメイン名の追加 をクリックします。
カスタムドメイン名の追加 ページで、必要な設定を入力し、作成 をクリックします。
構成項目
操作
ドメイン名
カスタムドメイン名を入力します。このドメイン名は Alibaba Cloud で ICP 登録済みであるか、または ICP 登録情報に Alibaba Cloud がサービスプロバイダとして追加されている必要があります。単一ドメイン名 (例:
www.aliyun.com) またはワイルドカードドメイン名 (例:*.aliyun.com) を入力できます。HTTPS
必要に応じて、カスタムドメイン名への HTTPS アクセスを有効または無効にします。オプション:
有効:HTTPS アクセスを有効にします。ユーザーは HTTP または HTTPS を使用してカスタムドメイン名にアクセスできます。
説明HTTPS 強制 チェックボックスも選択できます。選択すると、このカスタムドメインへのアクセスは HTTPS プロトコルのみ許可され、Function Compute はこのカスタムドメインへのすべての HTTP リクエストを HTTPS プロトコルにリダイレクトします。
無効:HTTPS アクセスを無効にします。ユーザーは HTTP のみを使用してカスタムドメイン名にアクセスできます。HTTPS リクエストは失敗します。
証明書タイプ
アップロードする証明書タイプを選択します。HTTPS アクセスを有効にする場合は、このオプションを設定する必要があります。オプション:
Alibaba Cloud SSL 証明書:Alibaba Cloud アカウントから SSL 証明書を選択します。証明書名 ドロップダウンリストが空の場合、Alibaba Cloud SSL 証明書を購入していません。SSL 証明書管理コンソール にログインして購入してください。
手動アップロード:証明書名 を入力し、PEM 証明書コンテンツおよび PEM 証明書キーを貼り付けます。
説明証明書サイズは 20 KB を超えてはなりません。証明書キーサイズは 4 KB を超えてはなりません。
TLS バージョン
関数の TLS バージョンを選択します。
説明TLS バージョンを選択した後、TLS 1.3 を有効化 チェックボックスをオンにして TLS 1.3 をサポートできます。
暗号スイート
TLS 暗号スイートを選択します。このオプションを設定しない場合、デフォルトですべての暗号スイートが有効になります。オプション:
すべての暗号スイート、互換性が最も高いがセキュリティは低い:すべての暗号スイートを選択します。Function Compute がサポートする暗号スイートの一覧については、「強力および脆弱な暗号スイートの一覧」をご参照ください。
選択した TLS バージョン用のカスタム暗号スイート。サービスに影響を与えないよう慎重に選択してください:一部の暗号スイートのみを有効にします。ドロップダウンリストにはすべての暗号スイートが表示されます。暗号スイートの横にある
アイコンをクリックして削除できます。選択した TLS バージョンでサポートされている暗号スイートのみを残してください。
重要カスタム暗号スイートは慎重に選択してください。サーバー側とクライアント側の暗号スイートが一致していることを確認してください。
TLS バージョンとそのサポートされる暗号スイートについては、「TLS バージョンとサポートされる暗号スイート」をご参照ください。
Function Compute は RFC 命名規則を使用して暗号スイートを命名しています。暗号スイートの名称は命名規則によって異なります。RFC と OpenSSL の暗号スイート名の違いについては、「RFC 暗号スイート名と OpenSSL 暗号スイート名のマッピング」をご参照ください。
CDN 加速
必要に応じて CDN 加速を有効または無効にします。CDN 加速を有効にすると、エンドユーザーは CDN 加速ドメイン名を通じてコンテンツをより高速に読み取ることができます。
有効:CDN 加速を有効にします。CDN 加速ドメイン名 をカスタムで入力します。その後、CDN コンソール にログインして、加速ドメイン名の CNAME を設定します。詳細については、「ステップ 4:CDN 加速の有効化 (オプション)」をご参照ください。
無効:CDN 加速を無効にします。
Web Application Firewall
必要に応じて Web Application Firewall を有効または無効にします。カスタムドメイン名に対して Web Application Firewall を有効にすると、悪意のあるトラフィックを検出してブロックし、関数への不正アクセスを防止します。詳細については、「Web Application Firewall の有効化」をご参照ください。
有効:Web Application Firewall 保護を有効にします。
無効:Web Application Firewall 保護を無効にします。
ルーティング構成
リクエストパスを関数にマッピングします。異なるパスへのリクエストが異なる関数をトリガーします。次のフィールドを設定します。
パス:特定のサービス内の特定の関数をトリガーするリクエストパス。
サービス名:指定されたパスへのリクエストを処理するサービス。
関数名:指定されたサービス内で、指定されたパスへのリクエストを処理する関数。
バージョンまたはエイリアス:指定されたサービス内の関数のバージョンまたはエイリアスで、指定されたパスへのリクエストを処理します。
書き換えポリシー:指定されたパスに一致するリクエストの URI を書き換えます。詳細については、「操作手順」をご参照ください。
複数のルーティングルールを追加できます。詳細については、「ルーティング一致ルール」をご参照ください。
構成が完了したら、必要に応じてカスタムドメイン名を編集または削除できます。
重要カスタムドメイン名を削除すると、そのドメイン名へのすべてのリクエストが失敗します。慎重に操作してください。
ステップ 4:CDN 加速の有効化 (オプション)
カスタムドメイン名を Web アプリケーションにバインドした後、カスタムドメイン名をオリジンドメイン名として使用し、加速ドメイン名を追加してから、加速ドメイン名の CNAME を設定することで、ドメイン名の CDN 加速を有効化できます。Function Compute 上にアプリケーションをデプロイしてオリジンとして使用すると、ソースコンテンツがエッジノードに配信され、エンドユーザーが迅速に必要なコンテンツを取得できるようになります。これにより、アクセス遅延が効果的に低減され、サービス品質が向上します。
加速ドメイン名の追加が成功すると、Function Compute コンソール でカスタムドメイン名の CDN トグルが有効になっていることが確認できます。また、CDN コンソール で追加した加速ドメイン名が表示されます。
CDN 加速はインターネットトラフィックを消費し、トラフィック料金が発生します。詳細については、「課金概要」をご参照ください。
カスタムドメイン名と加速ドメイン名は同一にできません。たとえば、カスタムドメイン名が www.test.com の場合、加速ドメイン名は cdn.test.com のように異なるものにする必要があります。
CDN コンソール にログインし、CDN 加速を有効にします。
手順については、「加速ドメイン名の追加」をご参照ください。
オリジンサーバー情報 を設定する際は、Function Compute ドメイン名 を選択し、ターゲットの Function Compute サービスのリージョンおよび既存のカスタムドメインを選択します。
Function Compute コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーでリージョンを選択します。ドメイン名リストで目的のドメイン名を見つけ、操作 列の 編集 をクリックします。
カスタムドメイン名の編集 ページで、CDN コンソールから同期された CDN 加速ドメイン名の構成を確認します。

CDN 加速ドメイン名の追加が成功すると、CDN から CNAME ドメイン名が割り当てられます。ドメイン管理ページで割り当てられた CNAME ドメイン名を取得し、加速ドメイン名の DNS レコードを割り当てられた CNAME ドメイン名に向けることで、加速を有効化します。
手順については、「CNAME の設定」をご参照ください。
説明CNAME 形式は
accelerated-domain-name.w.alikunlun.comです。例:example.aliyundoc.com.w.alikunlun.com。
ステップ 5:カスタムドメイン名の確認
カスタムドメイン名または CDN 加速ドメイン名を設定した後、次のいずれかの方法でテストします。
方法 1:コマンドラインで
curl URLを使用してテストします。例:curl example.com/login。方法 2:ブラウザを使用してテストします。
ブラウザのアドレスバーにリクエスト URL を入力し、Enter キーを押して、対象の関数が呼び出されることを確認します。
暗号スイート情報
強力および脆弱な暗号スイート
TLS バージョンとサポートされる暗号スイート
RFC と OpenSSL 暗号スイート名のマッピング
一致ルール
ルーティング一致ルール
カスタムドメイン名をバインドする際は、パスと関数のマッピングを構成する必要があります。これにより、異なるパスからのリクエストが異なる関数をトリガーできます。Function Compute は完全一致およびあいまい一致をサポートしており、具体的なルールは次のとおりです。
完全一致:リクエストパスが構成されたパスと完全に一致した場合にのみ、対応する関数がトリガーされます。
たとえば、パスを /a、サービスを s1、関数を f1、バージョンを 1 に設定した場合、/a へのリクエストのみが f1 バージョン 1 をトリガーします。/a/ へのリクエストは f1 バージョン 1 をトリガーしません。
あいまい一致:パスにワイルドカード (*) を使用します。ワイルドカードはパスの末尾にのみ配置できます。
たとえば、パスを /login/*、サービスを s2、関数を 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 | / | s1 | f1 | 1 |
ルール 2 | /* | s2 | f2 | 2 |
ルール 3 | /login | s3 | f3 | 3 |
ルール 4 | /login/a | s4 | f4 | 4 |
ルール 5 | /login/* | s5 | f5 | 5 |
最終試合結果は以下のとおりです。
リクエスト URL | 一致したサービス名 | 一致した関数名 | 一致したバージョン | 一致したパス |
example.com | s1 | f1 | 1 | / |
example.com/user | s2 | f2 | 2 | /* |
example.com/login | s3 | f3 | 3 | /login |
example.com/login/a | s4 | f4 | 4 | /login/a |
example.com/login/a/b | s5 | f5 | 5 | /login/* |
example.com/login/b | s5 | 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 トリガーのパブリックネットワークエンドポイントを本番環境で使用できますか?
カスタムドメイン名を設定しましたが、常に HTTP 502 Bad Gateway エラーが発生します。どのように修正すればよいですか?
カスタムドメイン名に中国のドメイン名を使用しようとするとエラーが発生します。どのように修正すればよいですか?
ユーザーがブラウザでドメイン名にアクセスした際に強制ダウンロードが発生します。どのように修正すればよいですか?
加速ドメイン名が HTTP 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 が含まれていません。詳細については、「ステップ 1:ドメイン名の ICP 登録」をご参照ください。 |
DomainNameNotResolved | 400 | domain name '%s' has not been resolved to your FC endpoint, the expected endpoint is '%s' | ドメイン名が CNAME レコードを使用して正しいエンドポイントを指していません。dig コマンドまたはドメイン名解決サーバーを使用して確認してください。 |
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 ユーザーグループ (DingTalk グループ番号:64970014484) に参加し、Function Compute エンジニアに即座にご連絡ください。