App Engine がアプリに提供するデフォルトのアドレスではなく、カスタム ドメインを使用できます。
カスタム ドメインを使用するには、ドメインをアプリにマッピングしてから、DNS レコードを更新します。example.com
のようなネイキッド ドメインや、subdomain.example.com
のようなサブドメインをマッピングできます。ワイルドカードを使用してサブドメインをマッピングすることもできます。
デフォルトでは、ドメインをアプリにマッピングすると、App Engine は HTTPS 接続用のマネージド SSL 証明書を発行します。独自の SSL 証明書の使用方法をはじめとするカスタム ドメインでの SSL の使用法の詳細は、SSL によるカスタム ドメインの保護をご覧ください。
カスタム ドメインを使用すると、一部のリージョンで App Engine がアプリのユーザーに送信するレスポンスに、著しいレイテンシが発生することがあります。リージョンは以下のとおりです。
- us-west2
- us-east4
- northamerica-northeast1
- southamerica-east1
- europe-west2
- europe-west3
- asia-south1
- asia-northeast1
- australia-southeast1
App Engine のカスタム ドメインは、すべてのアプリケーションに共有 IP アドレスのプールを使用します。お使いのドメインにのみマッピングされる IP アドレスを使用する場合は、代わりに App Engine を使用してロードバランサを設定してください。これにより、SNI 証明書内のアプリケーション A へのリクエストが HTTP ホストヘッダー内のアプリケーション B にルーティングされるドメインの外部接続問題が緩和される可能性があります。
始める前に
ドメインをお持ちでない場合は、ドメインを購入してください。どのドメイン名登録事業者でも使用できます。
カスタム ドメイン マッピングを追加または編集するには、アカウントに App Engine 管理者のロール(
roles/appengine.appAdmin
)またはappengine.applications.get
権限を含むカスタムロールが付与されている必要があります。Cloud Load Balancing とサーバーレス ネットワーク エンドポイント グループ(NEG)を使用して App Engine アプリにトラフィックを転送する場合は、カスタム ドメインをアプリに直接マッピングするのではなく、ロードバランサにマッピングし、ロードバランサ用に作成された Google マネージド SSL 証明書を使用することをおすすめします。これにより、サーバーレス アプリごとに個別の SSL 証明書を管理する必要がなくなります。さらに、Cloud Load Balancing を使用すると、ロードバランサがクライアントとネゴシエートする際に使用する SSL の機能を制御する SSL ポリシーを設定できます。
詳しくは次のページをご覧ください。
次の制限に注意してください。
- アプリがロードバランサ(および使用している場合は VPC)から送信されたリクエストのみを受信するように、上り(内向き)制御を使用することをおすすめします。使用しない場合、ユーザーはアプリの App Engine URL を使用して、ロードバランサ、Google Cloud Armor セキュリティ ポリシー、SSL 証明書、ロードバランサを経由して渡される秘密鍵をバイパスできます。
カスタム ドメインをアプリにマッピングする
Google Cloud コンソールで、App Engine の [設定] ページの [アプリケーション設定] タブに移動します。
デフォルトの Google Accounts API リファラーを変更する必要がない場合は、次の手順に進みます。
カスタム ドメインで Google Workspace 認証を有効にする必要がある場合は、[編集] をクリックして、Google Accounts API リファラーを変更します。[Google 認証] プルダウン メニューで [Google Workspace ドメイン] を選択し、空のフィールドに
example.com
などのドメインを追加します。Google Cloud コンソールで、App Engine の [設定] ページの [カスタム ドメイン] タブに移動します。
[カスタム ドメインを追加] をクリックします。
ドメインがすでに確認済みの場合、[使用するドメインを選択する] セクションにドメインが表示されます。プルダウン メニューからドメインを選択して、[続行] をクリックします。
まだドメインを確認していない場合は、次の手順を行います。
- プルダウン メニューから [新しいドメインの所有権を証明] を選択します。
ネイキッド ドメイン名(example.com など)を入力し、[確認] をクリックします。
www.subdomain.example.com などのサブドメインのみをマッピングする場合でも、ネイキッド ドメイン名を入力して所有権を確認します。
なお、ドメイン名は、64 バイト未満でなければなりません。
表示された Search Console ウィンドウに情報を入力します。Search Console の使用方法については、Search Console ヘルプをご覧ください。
Search Console で手順を完了したら、Google Cloud コンソールの [新しいカスタム ドメインの追加] ページに戻ります。
[ドメインを [project-ID] にポイントする] セクションで、マッピングするドメインとサブドメインを指定します。
ネイキッド ドメインと
www
サブドメインをマッピングすることをおすすめします。サブドメインは必要に応じて追加できます。必要なマッピングをすべて追加したら、[マッピングを保存] をクリックします。
ドメインの DNS レコードを確認するには、[続行] をクリックしてください。
これらのレコードは、App Engine の [設定] ページの [カスタム ドメイン] タブでいつでも取得できます。
ドメイン登録事業者のウェブサイトにログインし、前の手順で表示されたレコードを使用して DNS レコードを更新します。
ドメイン登録事業者で DNS レコードを更新する
App Engine でサービスをカスタム ドメインにマッピングしたら、ドメイン登録事業者で DNS レコードを更新する必要があります。利便性のため、入力に必要な DNS レコードは、App Engine によって生成され、表示されます。
ドメイン マッピングの DNS レコード情報を取得します。
Google Cloud コンソールで、App Engine の [設定] ページの [カスタム ドメイン] タブに移動します。このページには、アプリにマッピングされているすべてのドメインの DNS レコードが一覧表示されます。
ドメイン登録事業者のアカウントにログインし、DNS 構成ページを開きます。
ドメインの構成ページのホストレコード セクションを見つけ、ドメインをアプリにマッピングしたときに取得した各 DNS レコードを追加します。
レコード フィールドに次の情報を入力します。
- レコードタイプ: Google が作成した DNS レコードに表示されるレコードタイプ(
A
、AAAA
、CNAME
)を入力します。 レコード名:
A
またはAAAA
レコードに、「@
」を入力します。CNAME
レコードに、第 3 レベルのドメイン名を入力します。たとえば、www.example.com
サブドメインをマッピングするには「www
」と入力します。
Cloud DNS を使用している場合、親カスタム ドメイン(example.com)の
A
レコードを作成するときに @ 記号を追加する必要はありません。ただし、GoDaddy などの他の DNS プロバイダでは @ 記号の指定が必要になる場合があります。TTL: 必要に応じて、TTL を指定します。
データ: Google が作成した DNS レコードに表示されるレコードデータ(rrdata)を入力します。
A
またはAAAA
レコードでは、レコードデータは IP アドレスです。CNAME
レコードでは、レコードデータはドメイン名です。
- レコードタイプ: Google が作成した DNS レコードに表示されるレコードタイプ(
ドメインのアカウントの DNS 構成ページで変更を保存します。通常、この変更が反映されるまでに数分しかかかりませんが、登録事業者やドメインの以前の DNS レコードに設定されている有効期間(TTL)によっては、数時間かかることもあります。このオンラインの
dig
バージョンなどのdig
ツールを使用して、DNS レコードが正常に更新されたことを確認できます。新しい URL(
https://www.example.com
など)でサービスを閲覧して、成功したかどうかをテストします。自動 SSL 証明書の発行には数分かかる場合があるので注意してください。
他の Google Cloud ユーザーまたはサービス アカウントに所有権を委任する
ドメインの所有権を他のユーザーまたはサービス アカウントに委任する必要がある場合は、Search Console のページで権限を追加できます。
Search Console の確認を開きます。
[プロパティ] で、ユーザーまたはサービス アカウントを追加するドメインをクリックします。
[確認済みサイト所有者] リストの最後にある [サイト所有者を追加] をクリックし、Google アカウントのメールアドレスまたはサービス アカウント ID を入力します。
サービス アカウントのリストを表示するには、Google Cloud コンソールの [サービス アカウント] ページを開きます。
サブドメインを使用する
カスタム ドメインにワイルドカード サブドメイン マッピングを設定すると、アプリケーションは、一致するサブドメインに対するリクエストを処理します。
- アプリケーションのバージョン名またはサービス名と一致するドメインが参照されると、アプリケーションはそのバージョンを提供します。
- サービス名と一致するドメインが参照されると、アプリケーションはそのサービスを提供します。
- マネージド SSL 証明書には上限(ベースドメインごとに週あたり 20 個)があります。上限に達した場合、App Engine はすべてのリクエストの処理が完了するまで、マネージド証明書を発行しようとし続けます。
ワイルドカード マッピング
ワイルドカードを使用すると、第 3 レベル以降であればどのレベルのサブドメインでもマッピングできます。たとえば、使用するドメインが example.com
の場合、ウェブアドレス フィールドにテキストを入力すると次のような結果になります。
- 「
*.example.com
」と入力すると、example.com
のすべてのサブドメインがアプリにマッピングされます。 - 「
*.private.example.com
」と入力すると、private.example.com
のすべてのサブドメインがアプリにマッピングされます。 - 「
*.nichol.sharks.nhl.example.com
」と入力すると、nichol.sharks.nhl.example.com
のすべてのサブドメインがアプリにマッピングされます。 - 「
*.excogitate.system.example.com
」と入力すると、excogitate.system.example.com
のすべてのサブドメインがアプリにマッピングされます。
dispatch.yaml
ファイルを使用して、特定のサービスに対するリクエストのルーティングを定義すると、App Engine のサービスでワイルドカード マッピングを使用できます。
sites
や mail
など、ドメイン内のその他のサブドメインで Google Workspace を使用する場合、これらのマッピングの優先順位が高くなり、ワイルドカード マッピングが行われる前に最初に照合されます。また、他の App Engine アプリを他のサブドメインにマッピングしている場合にも、これらのマッピングはワイルドカード マッピングよりも優先順位が高くなります。
DNS プロバイダによってはワイルドカード サブドメイン マッピングに対応していないことがあります。特に、CNAME
ホストエントリでのワイルドカードの使用が許可されているかどうかに注意が必要です。
ワイルドカード ルーティング ルールは、App Engine のサービス ルーティング ルールに従って、サービス、バージョン、インスタンスのコンポーネントを含む URL に適用されます。
アプリからカスタム ドメインを削除する
アプリからカスタム ドメイン マッピングを削除するには、アカウントに App Engine 管理者ロール(roles/appengine.appAdmin
)または appengine.applications.update
権限を含むカスタムロールが付与されている必要があります。
Google Cloud コンソールで次の操作を行います。
App Engine の [設定] ページの [カスタム ドメイン] タブに移動します。
カスタム ドメイン名を選択し、[削除] をクリックします。
gcloud コマンドまたは Admin API を使用してカスタム ドメインを削除することもできます。
トラブルシューティング
Google Workspace ドメイン認証を使用してカスタム ドメインを構成した後に、アプリで認証エラーが表示される場合は、カスタム ドメイン マッピングを削除し、カスタム ドメインをアプリにマッピングするの手順をやり直します。App Engine でカスタム ドメイン マッピングを構成する前に、必ず Google Workspace ドメイン認証を構成してください。
次のステップ
- カスタム ドメインを SSL で保護する方法を学習する。
- Cloud Load Balancing からカスタム ドメインへの受信リクエストを管理する場合は、App Engine のカスタム ドメインの Cloud Load Balancing への移行をご覧ください。