Function Computeは、作成されたHTTP関数のデフォルトアクセスURLを提供します。 ブラウザでURLにアクセスすると、強制ダウンロードがトリガーされます。 強制ダウンロードをトリガーせずにブラウザを使用して、または固定ドメイン名を使用して関数にアクセスする場合は、カスタムドメイン名を設定する必要があります。
一般的なシナリオ
HTTP関数は、HTTPリクエストを処理して結果を呼び出し元に返すことができるwebアプリケーションに似ています。 次のサンプルシナリオでは、カスタムドメイン名をwebアプリケーションにバインドする必要があります。
webアプリケーションを作成し、アプリケーションをFunction Computeに移行し、固定ドメイン名を使用してwebアプリケーションにアクセスします。
Function Computeコンソールでwebアプリケーションを構築し、Function Computeが提供するデフォルトのURLを使用してwebアプリケーションにアクセスします。 デフォルトのURLは次の形式に従います。
<account_id>.<region_id>.fc.aliyuncs.com/<version>/proxy/<serviceName>/<functionName>/[action?queries]
ただし、このURLを介してアプリケーションにアクセスすると、強制ダウンロードがトリガーされます。 ユーザーに影響を与えずにアプリケーションのURLを変更したい場合。
前提条件
HTTP関数が作成されます。 詳細については、「関数の作成」をご参照ください。 カスタムドメイン名から送信されるリクエストは、HTTP関数のみをトリガーできます。
制限事項
漢字を含むドメイン名はサポートされていません。
設定されたカスタムドメイン名は大文字と小文字を区別します。 インターネットコンテンツプロバイダ (ICP) の登録を取得する実際のドメイン名を使用します。
ワイルドカードドメイン名と標準ドメイン名を設定できます。
ドメイン名の長さは最大256文字です。 各レベルのサブドメイン名には、少なくとも1文字を含める必要があり、最大63文字の長さにすることができます。 サブドメイン名には、文字 (大文字と小文字を区別する) 、数字 (0〜9) 、およびハイフン (-) を使用できます。 ただし、ドメイン名の先頭にハイフン (-) は使用できません。 ドメイン名の最後の部分 (トップレベルドメイン名) は、長さが2文字以上のアルファベット文字の文字列である必要があります。
手順
カスタムドメイン名を設定するプロセス
ステップ1: ICPファイリングの取得
ドメイン名が属するサービスプロバイダーとアカウントに基づいて、ドメイン名のICPファイリングを取得します。 プロセスを完了するために対応する操作ガイドを参照して下さい。
中国 (香港) または中国本土以外のリージョンの関数にバインドされているカスタムドメイン名のICPファイリングを申請する必要はありません。
WHOISでサービスプロバイダーにドメイン名を照会できます。
Alibaba Cloud DNSコンソールで、ドメイン名が現在のAlibaba Cloudアカウントに属しているかどうかを確認できます。
現在のAlibaba Cloudアカウントで登録されているドメイン名
Alibaba Cloud ICPファイリングシステムでカスタムドメイン名のICPファイリングを申請します。 詳細については、「概要」をご参照ください。
他のAlibaba Cloudアカウントによって登録されたドメイン名
ドメイン名の登録に使用されるAlibaba Cloudアカウントを使用して、ドメイン名のICP申請を取得することを推奨します。 Alibaba Cloud ICPファイリングシステムにログインし、カスタムドメイン名のICPファイリングを申請します。 詳細については、「概要」をご参照ください。
Alibaba Cloud以外のアカウントで登録されたドメイン名
エンティティとドメイン名が別のサービスプロバイダーを通じて提出され、サービスプロバイダーをAlibaba Cloudに変更するか、Alibaba CloudをWebサイトの新しいサービスプロバイダーとして追加する必要がある場合は、Alibaba CloudでICP申請を申請する必要があります。 Alibaba Cloud ICPファイリングシステムにログインし、カスタムドメイン名のICPファイリングを申請します。
手順2: ドメイン名解決の設定
詳細については、次をご参照ください: クイックスタート
対応するリージョンのFunction Computeのエンドポイントにドメイン名を解決する必要があります。 つまり、カスタムドメイン名のCNAMEをFunction Computeのエンドポイントに設定する必要があります。 DNSページで、レコードタイプをCNAMEに設定し、レコード値をFunction Computeのエンドポイントに設定します。
次の表に、Function Computeエンドポイントの形式を示します。
エンドポイント形式 | Format | 例 | |
パブリックエンドポイント |
| カスタムドメイン: example.com。 Alibaba Cloudアカウント: 164901546557 **** 。 地域: 中国 (上海) 。 | パブリックエンドポイント: |
イントラネットアドレス |
| 内部エンドポイント: |
インターネット経由でドメイン名にアクセスする場合は、レコード値をFunction Computeのパブリックエンドポイントに設定する必要があります。
手順3: カスタムドメイン名の追加
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、リージョンを選択します。 [カスタムドメイン] ページで、[カスタムドメイン名の追加] をクリックします。
カスタムドメイン名の追加ページで、パラメーターを設定し、作成. 下表に、各パラメーターを説明します。
パラメーター
説明
ドメイン名
Alibaba Cloud ICP登録システムでICP登録を取得したカスタムドメイン名、またはICP登録情報にサービスプロバイダーとしてAlibaba Cloudが含まれているカスタムドメイン名を入力します。
www.aliyun.com
などの特定のドメイン名または* .aliyun.com
などのワイルドカードドメイン名を入力できます。HTTPS
HTTPS経由でのカスタムドメイン名へのアクセスを許可または禁止するには、[有効] または [無効] を選択します。 有効な値:
有効: HTTPS経由でカスタムドメイン名にアクセスできるようにします。 [有効] を選択すると、HTTPまたはHTTPSでカスタムドメイン名にアクセスできます。
説明[HTTPリクエストをHTTPSにリダイレクトする] チェックボックスを選択して、HTTPSリクエストのみを許可することもできます。 Function Computeは、HTTP経由でアクセスされたリクエストをHTTPSにリダイレクトします。
無効: HTTPS経由でのカスタムドメイン名へのアクセスを無効にします。 [無効] を選択した場合、HTTP経由でのみカスタムドメイン名にアクセスできます。
証明書タイプ
アップロードする証明書の種類を選択します。 このパラメーターは、HTTPSパラメーターの有効化を選択した場合にのみ必要です。 有効な値:
Alibaba Cloud SSL証明書: [証明書名] ドロップダウンリストからAlibaba Cloud SSL証明書を選択します。 [証明書名] ドロップダウンリストに値がない場合、Alibaba Cloud SSL証明書はありません。 この場合、Certificate Management ServiceコンソールにログインしてSSL証明書を購入します。
手動アップロード: 証明書名、PEM証明書の内容、およびPEM証明書キーパラメーターを手動で設定します。
説明アップロードする証明書のサイズは20 KBを超えることはできません。 証明書キーのサイズは4 KBを超えることはできません。
TLSバージョン
関数が使用するトランスポート層セキュリティ (TLS) プロトコルバージョンをドロップダウンリストから選択します。 このパラメーターを空のままにすると、TLS 1.0、TLS 1.1、TLS 1.2を含むTLS 1.0以降のバージョンが使用されます。 有効な値:
TLS 1.0以降 (最高の互換性と低セキュリティ) 。 TLS 1.0、TLS 1.1、およびTLS 1.2がサポートされています。
TLS 1.1以降 (高い互換性と高いセキュリティ) 。 TLS 1.1とTLS 1.2がサポートされています。
TLS 1.2以降 (高い互換性と最高のセキュリティ): TLS 1.2のみがサポートされています。
説明TLSバージョンを選択した後、[TLS1.3のサポートを有効にする] を選択することもできます。 これにより、TLS 1.3がサポートされます。
暗号スイート
TLS暗号アルゴリズムスイートを選択します。 このパラメーターを空のままにすると、すべての暗号スイートが選択されます。 有効な値:
すべての暗号スイート (高い互換性と低いセキュリティ): すべての暗号スイート。 Function Computeでサポートされている暗号スイートのリストについては、「強力な暗号スイートと弱い暗号スイート」をご参照ください。
Custom Cipher Suite (プロトコルバージョンに基づいて選択) 。 注意) に進む: ビジネス要件に基づいて暗号スイートを選択します。 すべての暗号スイートがドロップダウンリストに表示されます。 暗号スイートの右側にあるアイコンをクリックすると、暗号スイートの選択を解除できます。 これにより、弱い暗号スイートを削除し、指定したTLSバージョンでサポートされている暗号スイートのみを保持できます。
重要カスタム暗号スイートは慎重に選択してください。 クライアントによって使用される暗号スイートが、サーバーによって使用される暗号スイートと一致することを確認します。
TLSバージョンとサポートされている暗号スイート間のマッピングの詳細については、「TLSバージョンと暗号スイート間のマッピング」をご参照ください。
Function Computeは、RFC命名規則に基づいて暗号スイートに名前を付けます。 暗号スイートの名前は、命名規則によって異なります。 RFCとOpenSSL暗号スイートの違いの詳細については、「RFC暗号スイートとOpenSSL暗号スイートの名前間のマッピング」をご参照ください。
CDNアクセラレーション
カスタムドメイン名のCDNアクセラレーションを有効にするかどうかを指定します。 カスタムドメイン名に対してCDNアクセラレーションを有効にすると、エンドユーザーはCDNアクセラレーションドメイン名を使用してコンテンツを高効率で読み取ることができます。 有効な値:
有効化: CDNアクセラレーションを有効にします。 CDN AccelerationパラメーターをEnableに設定した場合、CDN-accelerated domain nameフィールドに高速化ドメイン名を入力する必要があります。 次に、CDNコンソールにログインし、高速化ドメイン名のCNAMEレコードを設定します。 詳細については、「 (オプション) 手順4: CDNアクセラレーションの有効化」をご参照ください。
無効化: CDNアクセラレーションを無効にします。
Webアプリケーションファイアウォール (WAF)
カスタムドメイン名に対してWAFを有効にするかどうかを指定します。 この機能は、関数とアプリケーションの悪意のあるトラフィックを識別し、悪意のあるトラフィックをスクラブして除外し、通常のトラフィックをバックエンド関数に返して、悪意のある侵入から関数を保護します。 詳細については、「WAF保護の有効化」をご参照ください。 有効な値:
有効
無効化
ルート
パスと関数間のマッピングを設定します。 このように、異なるパスからの要求は、異なる機能をトリガできる。 次のフィールドを設定する必要があります。
パス: 指定されたサービスで指定された関数をトリガーできるリクエストパス。
サービス名: 指定されたパスからのリクエストによってトリガーされる関数が属するサービスの名前。
関数名: 指定されたパスからのリクエストによってトリガーされる関数の名前。
VersionまたはAlias: 指定されたパスからのリクエストによってトリガーされる関数が属するサービスのバージョンまたはエイリアス。
書き換えポリシー: 指定されたパス内のリクエストのURI (Uniform Resource Identifier) が書き換えられるルール。 詳細については、「手順」をご参照ください。
ビジネス要件に基づいて複数のルートを設定できます。 詳細は、「ルーティングルール」をご参照ください。
カスタムドメイン名を設定した後、ビジネス要件に基づいて変更または削除できます。
重要カスタムドメイン名を削除すると、そのドメイン名を使用してFunction Computeにアクセスするすべてのリクエストは失敗します。 この操作を実行する場合は注意してください。
(最適) ステップ4: CDNアクセラレーションの有効化
カスタムドメイン名をwebアプリケーションにバインドした後、カスタムドメイン名をオリジンドメイン名として使用し、高速化ドメイン名を追加できます。 次に、高速化ドメイン名のCNAMEを設定できます。 これにより、カスタムドメイン名に対してCDNアクセラレーションが有効になります。 Function Computeにデプロイされたアプリケーションはオリジンサーバーとして機能し、ソースコンテンツはエッジノードに公開されます。 このようにして、エンドユーザーは必要なコンテンツを高効率で読むことができます。 これにより、レイテンシが効率的に削減され、サービス品質が向上します。
高速化ドメイン名を追加した後、Function Computeコンソールでカスタムドメイン名のCDN高速化が有効になっているかどうか、およびCDNコンソールで追加された指定された高速化ドメイン名がカスタムドメイン名にバインドされているかどうかを確認できます。
CDNアクセラレーション機能を有効にすると、インターネット経由で転送されたデータに対して課金されます。 詳細については、「課金の概要」をご参照ください。
カスタムドメイン名と高速化ドメイン名を同じにすることはできません。 たとえば、カスタムドメイン名をo www.test.comに設定した場合、高速化ドメイン名をs cdn.test.comなどの別のドメイン名に設定する必要があります。
CDNコンソールにログインし、CDNアクセラレーションを有効にします。
詳細については、「ドメイン名の追加」をご参照ください。
[Origin Info] パラメーターを設定したら、[Function Computeドメイン] を選択します。 次に、管理するFunction Computeサービスが存在するリージョンと、作成したカスタムドメイン名を選択します。
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、リージョンを選択します。 ドメイン名リストで、目的のドメイン名を見つけて、[操作] 列の [編集] をクリックします。
[カスタムドメイン名の変更] ページで、CDNコンソールから同期されるCDN高速化ドメイン名設定を表示します。
CDNドメイン名がカスタムドメイン名に追加されると、CDNはCNAMEをカスタムドメイン名に割り当てます。 [カスタムドメイン] ページでCNAMEレコードを取得し、高速化ドメインのDNS解析をCNAMEレコードにマッピングします。
詳細については、「ドメイン名のCNAMEレコードの追加」をご参照ください。
説明CNAMEの形式は次のとおりです。たとえば、
Accelerated domai n name.w.alikunlun.com
example.aliyundoc.com.w.alikunlun.com
。
手順5: カスタムドメイン名の確認
カスタムドメイン名またはCDN高速化ドメイン名を追加した後、次のいずれかの方法を使用して、カスタムドメイン名またはCDN高速化ドメイン名にアクセスできるかどうかを確認できます。
方法1:
curl URL
コマンド (例:cur l example.com/login
) を実行します。方法2: ブラウザを使用します。
ブラウザのアドレスバーにリクエストURLを入力し、Enterキーを押して、指定された関数が呼び出されているかどうかを確認します。
暗号スイート
強い暗号スイートと弱い暗号スイート
TLSバージョンと暗号スイート間のマッピング
RFC暗号スーツ名とOpenSSL暗号スイート名のマッピング
マッチングルール
ルートマッチングルール
カスタムドメイン名をバインドする場合は、パスと関数間のマッピングを設定する必要があります。 このように、異なるパスからの要求は、異なる機能をトリガできる。 Function Computeは、パスの完全一致とファジー一致をサポートしています。 次の項目は、マッチングルールを示しています。
完全一致: リクエストのパスが指定されたパスとまったく同じである場合にのみ、関数がトリガーされます。
たとえば、パスが /a、対応する関数が関数1、対応するバージョンがバージョン1のルートを作成したとします。 この場合、/aパスからのリクエストのみがバージョン1の関数1をトリガーできます。
ファジーマッチング: パスにアスタリスク (*) をワイルドカードとして追加できます。
たとえば、パスが /login/* で、対応する関数が関数2で、対応するバージョンがバージョン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 | / | s1 | f1 | 1 |
ルーティングルール2 | /* | s2 | f2 | 2 |
ルーティングルール3 | /ログイン | 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 | /ログイン |
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レベルドメインであることを示しています。
例
次の表に、次の既存のドメイン名 (* .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が含まれていない場合に返されるエラーメッセージ。 詳細については、「手順1: ICPファイリングの取得」をご参照ください。 |
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グループに参加する11721331テクニカルサポートのため。