App Engine では、デフォルトの appspot.com
アドレスの代わりに、example.com
などのカスタム ドメインを介してアプリケーションを提供できます。App Engine アプリのドメイン マッピングを作成すると、App Engine アプリでカスタム ドメインを使用できます。
カスタム ドメインをアプリケーションにマッピングすると、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
始める前に
使用するドメインをまだ所有していない場合、新しいドメインを購入してください。Google Domains など、任意のドメイン名登録事業者から購入できます。
gcloud
ツールコマンドを使用する場合:Cloud SDK をインストールし、初期化します。
Admin API を使用する場合は、Admin API へのアクセスの前提条件に関する情報をご覧ください。
アプリケーションにカスタム ドメインを追加する
App Engine アプリにカスタム ドメインを追加する手順は以下のとおりです。
ウェブマスター セントラルで、ドメインのオーナーであることを確認します。
Console -
Google Cloud Platform Console で [App Engine] > [設定] > [カスタム ドメイン] に移動します。
-
[カスタム ドメインを追加] をクリックし、[新しいカスタム ドメインの追加] フォームを表示します。
-
[使用するドメインを選択する] セクションで、使用するドメインの名前(
example.com
など)を入力します。[続行] をクリックすると、新しいタブで [ウェブマスター セントラル] のページが開きます。-
ウェブマスター セントラルを使用して、ドメインの所有権を確認します。
重要: App Engine でドメインの所有権を確認する場合は、
CNAME
レコードの使用をおすすめします。TXT
レコードを使用する場合は、CNAME
レコードを使用してドメインの DNS を構成しないでください。これは、TXT
レコードがCNAME
レコードにオーバーライドされてしまい、ドメインが未確認とされないようにするためです。ドメインの確認方法として
CNAME
レコード オプションを使用できない場合は、ドメイン プロバイダとして [その他] を選択し、[CNAME レコードを追加する] を選択します。- [別の方法] をクリックし、[ドメイン名プロバイダ] をクリックします。
- メニューの [その他] を選択します。
- [問題がある場合] セクションで [CNAME レコードを追加する] をクリックし、指示に沿ってドメインの所有権を確認します。
注意: CNAME がドメイン登録事業者に設定されるまでに 1 分ほどかかることがあります。
- GCP Console の [新しいカスタム ドメインの追加] フォームに戻ります。
-
gcloud -
次の
gcloud domains
コマンドを実行して、[ウェブマスター セントラル] ページを開きます。gcloud domains verify DOMAIN
ここで、
DOMAIN
は所有権を確認するドメインです。例:
gcloud domains verify example.com
-
ウェブマスター セントラルを使用して、ドメインの所有権を確認します。
重要: App Engine でドメインの所有権を確認する場合は、
CNAME
レコードの使用をおすすめします。TXT
レコードを使用する場合は、CNAME
レコードを使用してドメインの DNS を構成しないでください。これは、TXT
レコードがCNAME
レコードにオーバーライドされてしまい、ドメインが未確認とされないようにするためです。ドメインの確認方法として
CNAME
レコード オプションを使用できない場合は、ドメイン プロバイダとして [その他] を選択し、[CNAME レコードを追加する] を選択します。- [別の方法] をクリックし、[ドメイン名プロバイダ] をクリックします。
- メニューの [その他] を選択します。
- [問題がある場合] セクションで [CNAME レコードを追加する] をクリックし、指示に沿ってドメインの所有権を確認します。
注意: CNAME がドメイン登録事業者に設定されるまでに 1 分ほどかかることがあります。
- 例
- ドメインの DNS 構成に、次の
CNAME
レコードを追加します。CNAME Label / Host: a1b2c3d4e5.example.com. CNAME Destination / Target: gv-abcdefghijk.dv.googlehosted.com
Label / Host
とDestination / Target
の値をドメインの DNS 構成の対応するフィールドにマッピングします。たとえば、Google Domains では、CNAME を次のように設定します。NAME TYPE TTL DATA a1b2c3d4e5 CNAME 1 時間 gv-abcdefghijk.dv.googlehosted.com.
ドメインに固有の手順など、
CNAME
レコードの追加の詳細については、サポートページをご覧ください。
-
ドメインが確認済みであることを確認してください。確認が完了していない場合、次の手順に進むことができません。確認済みのドメインのみが表示されます。
Console ドメインがまだリストにない場合は、[ドメインを更新] をクリックします。
gcloud 次の
gcloud domains
コマンドを実行して、確認済みのドメインを一覧表示します。gcloud domains list-user-verified
API 確認済みのドメインをプログラムで一覧表示するには、Admin API の apps.authorizedDomains.list メソッドをご覧ください。
ドメインの所有権を他のユーザーまたはサービス アカウントに委任する必要がある場合は、[ウェブマスター セントラル] ページで権限を追加できます。
ウェブブラウザで次のアドレスを開きます。
[プロパティ] で、ユーザーまたはサービス アカウントを追加するドメインをクリックします。
[確認済みサイト所有者] リストを下にスクロールして [サイト所有者を追加] をクリックし、Google アカウントのメールアドレスまたはサービス アカウント ID を入力します。
サービス アカウントのリストを表示するには、GCP Console の [サービス アカウント] ページを開きます。
ドメインの所有権を確認したら、そのドメインを App Engine アプリにマッピングできます。
Console [新しいカスタム ドメインの追加] フォームの次のステップに進み、App Engine アプリにマッピングするドメインを選択します。
- マッピングするドメインとサブドメインを指定します。ネイキッド ドメインと
www
サブドメインは、フォームに自動入力されます。example.com
などのネイキッド ドメインは、http://example.com
にマッピングされます。-
www
などのサブドメインは、http://www.example.com
にマッピングされます。
- [マッピングを保存] をクリックして必要なマッピングを作成します。
-
[新しいカスタム ドメインの追加] フォームの最終ステップで、一覧表示されているリソース レコードを、種類と正規名(
CNAME
)も含めてメモしてください。これらの詳細情報はドメインの DNS 構成に追加する必要があります。次の例では、
CNAME
がタイプの 1 つとしてリストに表示されており、ghs.googlehosted.com
がその正規名です。
gcloud 次の
gcloud app domain-mappings
コマンドを実行して、ドメインを App Engine アプリにマッピングします。gcloud app domain-mappings create DOMAIN
- ここで、
DOMAIN
は、App Engine アプリにマッピングするドメイン(*.example.com
など)です。 - エラーが発生した場合は、ドメインを引用符で囲んでください(例:
'*.example.com'
)。例:
gcloud app domain-mappings create '*.example.com'
-
一覧表示されているリソース レコードを、種類と正規名(
CNAME
)も含めてメモしてください。これらの詳細情報はドメインの DNS 構成に追加する必要があります。
API App Engine アプリにドメインをプログラムでマッピングするには、Admin API の
app.domainMappings.create
メソッドをご覧ください。ドメインが App Engine アプリにマッピングされたら、
apps.domainMappings.list
メソッドを使用してリソース レコードを一覧表示します。- マッピングするドメインとサブドメインを指定します。ネイキッド ドメインと
取得したリソース レコードをドメイン登録事業者の DNS 構成に追加します。
ドメイン登録事業者のアカウントにログインし、DNS 構成ページを開きます。
ドメインの構成ページのホストレコード セクションを見つけて、ドメインを App Engine アプリにマッピングしたときに取得した各リソース レコードを追加します。
通常は、ホスト名と、対応するアドレスを表す正規名を組み合わせて追加していきます。たとえば、Google Domain を登録した場合、DNS 構成に追加するレコードは、ホスト名(例:
www
)とそれに対応するアドレスghs.googlehosted.com
を組み合わせたものになります。ネイキッド ドメインを指定するには、ホスト名の代わりに@
をghs.googlehosted.com
アドレスと組み合わせます。別のプロバイダから移行する場合は、すべての DNS レコードが App Engine アプリを指していることを確認します。
ドメインのマッピングの詳細については、サブドメインを使用するとワイルドカード マッピングのセクションをご覧ください。
ドメインのアカウントの DNS 構成ページで変更を保存します。変更が反映されるまでしばらく時間がかかることがあります。
新しいドメインの URL(
www.example.com
など)でアプリを閲覧して、成功したかどうかテストします。
サブドメインを使用する
カスタム ドメインにワイルドカード サブドメイン マッピングを設定すると、アプリケーションは、ワイルドカードに一致するサブドメインに対するリクエストを処理します。
- アプリケーションのバージョン名またはサービス名と一致するドメインが参照されると、アプリケーションはそのバージョンを提供します。
- サービス名と一致するドメインが参照されると、アプリケーションはそのサービスを提供します。
- マネージド 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
など、ドメイン内のその他のサブドメインで G Suite を使用する場合、これらのマッピングの優先順位が高くなり、ワイルドカード マッピングが行われる前に照合されます。また、他の App Engine アプリを他のサブドメインにマッピングしている場合にも、これらのマッピングはワイルドカード マッピングよりも優先順位が高くなります。
DNS プロバイダによってはワイルドカード サブドメイン マッピングに対応していないことがあります。特に、CNAME
ホストエントリでのワイルドカードの使用が許可されているかどうかに注意が必要です。
ワイルドカード ルーティング ルールは、App Engine のサービス ルーティング ルールに従って、サービス、バージョン、インスタンスのコンポーネントを含む URL に適用されます。