G-gen の佐々木です。当記事では、Cloud Run のドメインマッピング機能で設定したカスタムドメインが削除できない事象について、解決方法を解説します。
前提知識
Cloud Run では ドメインマッピング機能を使用することで、Cloud Run サービス(以下、サービスと呼びます)に対してカスタムドメインをマッピングすることができます(2024年6月時点ではプレビュー機能)。
この機能を使用することで、カスタムドメインの設定に必要な Cloud Load Balancing や HTTPS 接続用の Google マネージド証明書が自動的に作成されるため、手軽にサービスに対してカスタムドメインをマッピングすることができます。
事象の詳細
一度設定したドメインマッピングの設定を削除するためには、サービスの「統合」タブから設定を削除する必要があります。
しかし、ドメインマッピングを削除する前に対象のサービスを削除してしまった場合、Cloud Run コンソール上にドメインマッピングの設定が残り続けてしまいます。

こうなってしまった場合、コンソールや CLI を使用してドメインマッピングを削除することができなくなってしまいます。
解決方法
ドメインマッピングを設定していたサービス(削除したサービス)と同名のサービスを同一リージョン作成すると、残っていたドメインマッピングの設定が自動的に適用されます。

同名のサービスを作成したあと、「統合」タブからカスタムドメインの設定を削除することができます。

削除時に Cloud Storage に関するエラーが発生する場合
サービスの「統合」タブからカスタムドメインを削除しようとすると、以下のようなエラーが発生する場合があります。
Invalid resource state for "gs://runapps_default-xxxxxx/terraform/configs/default-cd10ccbc-01bc-48af-b4cc-b67ee5bb4a4d/": Failed to write to "gs://runapps_default-xxxxxx/terraform/configs/default-cd10ccbc-01bc-48af-b4cc-b67ee5bb4a4d/". Ensure that the resource exists and is writable by the deployment service account.

ドメインマッピングの設定は裏で Terraform が使用されているようで、Terraform の state ファイルを保存するための Cloud Storage バケットがプロジェクト内に存在しない場合、このエラーが発生します。
エラーメッセージに表示されているバケット名(エラーメッセージの「runapps_default-xxxxxx」の部分)を使用して、Cloud Run と同じリージョンにバケットを手動で作成することで、この問題を解決することができます(空のバケットでよい)。
余談:特定リージョンにおけるカスタムドメインの使用について
Cloud Run の既知の問題(2024年6月時点)として、asia-northeast1 もしくは us-east4 リージョンに存在する、カスタムドメイン機能を使用している Cloud Run サービスに対するリクエストは、レイテンシが非常に大きくなる場合があります。
該当リージョンの Cloud Run にカスタムドメインを設定したい場合は、Cloud Run のドメインマッピング機能を使用せず、別途 Cloud Load Balancing を作成してサーバーレス NEG を構成したほうがよいでしょう。
佐々木 駿太 (記事一覧)
G-gen最北端、北海道在住のクラウドソリューション部エンジニア
2022年6月にG-genにジョイン。Google Cloud Partner Top Engineer 2025 Fellowに選出。好きなGoogle CloudプロダクトはCloud Run。
趣味はコーヒー、小説(SF、ミステリ)、カラオケなど。
Follow @sasashun0805