背景
gcpを使っていて、いつも無料枠の中で使用できていたのに、料金を見てみたら、課金対象になっていた
gcpのリージョンの設定等であまり深く考えずにやっていたので、原因を調べる。
TL;DR
- Cloud RunでコードをCloud Storageに上げていた
- Cloud Storageのリージョンが北米になっていた
課金が発生したサービス
- Artifact Registry
- Cloud Storage
※ gcpの課金/お支払い/サービス/料金明細で見ることが可能。
サービスごとの詳細
Artifact Registry
詳細:Artifact Registry Storage
Artifact Refistryとは、
Artifact Registryは、パッケージとDockerコンテナイメージを1か所で保管し管理できる場所として機能します。
課金理由
Cloud Runを使用していた際にdockerコンテナ化していたため、そこで課金が発生した模様。
でも無料枠があるはず。
最大 0.5 GB 無料
コマンドでロケーションの使用量を確認可能。
gcloud artifacts repositories list --location=YOUR_LOCATION
確認したら、4479.002MB。。。
それは課金対象ですわ、、
Cloud runを使用するときに気にせずコマンドを使用したのが原因。
gcloud builds submit --project PROJECT_ID --tag gcr.io/ProjectID/PROJECT_NAME
gcloud beta run deploy --project PROJECT_ID --image gcr.io/projectID/PROJECT_NAME
gcloud builds submitでgcpがビルドしてDockerイメージを作ってくれる。
それがクラウドのストレージに保存するため、課金が発生する。
対策
- Dockerのイメージサイズを500MB以下にする。
- 違いサービスを使用する
Cloud Storage
詳細:Network Data Transfer GCP Replication within Northern America
Cloud Storageとは、クラウド上でデータを保管できるストレージ。
課金理由
課金の原因を探る。
課金の発生は詳細の通りで「北米内のネットワークデータ転送 GCP レプリケーション」ここで課金が発生したっぽい。
でも、無料枠があるはず...
cloud storageの無料枠の説明
5 GB 月の Regional Storage(期間合計、米国リージョンのみ)
5,000 回のクラス A オペレーション(1 か月あたり)
50,000 回のクラス B オペレーション(1 か月あたり)
北米から全リージョン宛てのアウトバウンド データ転送(1 か月あたり 100 GB、中国とオーストラリアを除く)
今回設定が「北米であった」、「北米内のデータ転送であった」この2点が原因であるっぽい。
対策
米国のリージョンを変更する
まとめ
今回の結果をまとめると以下のようになる。
サービス | 理由 | 対策 |
---|---|---|
Artifact Registry | コードをアップロードしていたため | コードをアップロードせずに直接デプロイ |
Cloud Storage | 北米の設定であったため課金対象 | 米国のリージョンを変更する |