Cloud Pub/Subはリージョンに依存しないサービスですが、使い方によってはリージョンを考慮する必要があります。
その1つの例がリージョン間通信費用です。
以下のような構成で東京リージョンのApp EngineからUSリージョンのCloud Dataflowにデータを転送していました。
そのプロジェクトのBilling Dashboardを見ると、少し違和感のある項目が見つかりました。
Cloud Pub/Subのリージョン間転送費用が加算されていたのです。
Cloud Pub/Subはリージョンに依存しないサービスであるため、この項目には違和感がありました。
Pub/Subの利用料金のページをよく見ると、これに該当する項目が見つかりました。
The fees for internet egress and message delivery between Google Cloud regions are consistent with the Compute Engine network rates
Cloud Pub/SubにPublishしたリージョンとSubscribeしたリージョンが異なる場合は、GCEと同等のレートで課金が発生します。
今回の例は東京→USなので、以下のページの「Egress to a Google Cloud region on another continent (excludes Oceania)」に該当します。
1GBを転送する毎に0.08 USBの課金が発生します。
転送するデータ量が少ないうちは無視できる金額ですが、TB級のデータをCloud Pub/Subで転送するときには気にする必要がありそうです。
場合によっては2回課金されるケースもある
トピックにストレージポリシーを設定している場合は、さらなる注意が必要です。
https://cloud.google.com/pubsub/docs/resource-location-restriction
この場合は以下の3つのリージョンが登場することになり、場合によって1→2と2→3の2回でリージョン間転送費用が課金されます。
- PublisherからのPublishリクエストを受けとるリージョン
- ストレージポリシーで許可されているリージョン
- SubscriberからSubscribeリクエストを受け取るリージョン