サーバーレス VPC アクセスコネクタの削除後、コネクタ用に作成した VPC が削除できない

記事タイトルとURLをコピーする

G-gen の佐々木です。サーバーレス VPC アクセスコネクタ を使用した検証の際、コネクタを削除した後でも、コネクタ用の VPC を削除できない という事象に遭遇しました。当記事では、その原因と解決策を紹介します。

状況

  • Cloud Run からサーバーレス VPC アクセスコネクタを使用して Cloud SQL に接続していた。
  • Cloud Run を更新し、コネクタを使用しない設定でデプロイし直した。
  • コネクタを削除した後、コネクタ用の VPC を削除しようとすると、エラーが出て削除できなかった。

エラーの内容

ネットワークを削除できませんでした。エラー: Operation type [delete] failed with message "The network resource 'projects/<プロジェクト名>/global/networks/<vpcの名前>' is already being used by 'projects/<プロジェクト名>/global/networkInstances/v-1087083075-5562e15b-3637-4477-98e3-e3bebbee7b6a'"

エラーの内容は、削除しようとしている VPC を使用しているリソースが存在する、といった内容に見えます。
Cloud Logging にも以下のようなメッセージが記録されています。

message: "RESOURCE_IN_USE_BY_OTHER_RESOURCE"

しかし、この VPC はコネクタ用に作成したものであり、コネクタの削除後、この VPC を使用しているリソースはないはずです。

サーバーレス VPC アクセスコネクタ用 VPC 削除時のエラー

サーバーレス VPC アクセスコネクタは既に削除済み

原因と対処

コネクタを使用しない設定で Cloud Run をデプロイし直したあと、「コネクタを使用するように設定された Cloud Run のリビジョン(バージョン)」が残っていた ことが原因でした。

コネクタを使用していたリビジョンを削除したところ、コネクタ用の VPC も削除することができました。

サーバーレス VPC アクセスコネクタを使用する設定のリビジョンが残っている

このように、「コネクタそのもの」や「現在コネクタを使用するリソース」がない場合でも、「コネクタを使用するように設定されたリビジョン」が 1 つでも存在していると、コネクタ用の VPC を削除する際に、まだ VPC を使用しているリソースがあると判定されてしまうようです。

コネクタ自体は問題なく削除できてしまうため、「コネクタを削除したのに、まだ存在しているかのようなエラーが出る」という状況になってしまいます。

今回はサーバーレス VPC アクセスコネクタを使用する設定のリビジョンが 1 つだったため、リビジョンの特定や削除は手間にならなかったのですが、「今までずっとコネクタを使用していたけど、使用しない設定に切り替える」ような場合に、それまでデプロイしたリビジョンを全て削除しなければならない、といった状況にもなり得ます。

Cloud Run はサーバーレスのサービスであり、コンテナイメージさえあれば同一のものを作成するのは非常に容易であるため、可能であれば、新しい Cloud Run サービスを作成しなおし、コネクタを使用していたほうは削除してしまうのが良いでしょう。

佐々木 駿太 (記事一覧)

G-gen最北端、北海道在住のクラウドソリューション部エンジニア

2022年6月にG-genにジョイン。Google Cloud Partner Top Engineer 2024に選出。好きなGoogle CloudプロダクトはCloud Run。

趣味はコーヒー、小説(SF、ミステリ)、カラオケなど。