リージョン
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2023年08月28日(月)
Table of Contents
Heroku アプリケーションは、さまざまな地理的リージョンでデプロイできます。特定のアプリで利用できるリージョンは、アプリを Common Runtime または Private Space のどちらにデプロイするかによって異なります。
Common Runtime のアプリでは、アプリの作成時にリージョンを指定します。Private Space のアプリでは、Private Space 自体の作成時にリージョンが設定されます。各 Private Space は 1 つのリージョン内に存在し、Private Space のすべてのアプリケーションがそのリージョン内で実行されます。
アプリのリージョンを指定しても、Heroku の製品、サービス、アドオンのデータの所在に関する制限はそのリージョンに保証されません。詳細は、「データの所在」を参照してください。
利用可能なリージョンを表示する
利用可能なリージョンのリストを表示するには、heroku regions
コマンドを使用します。
$ heroku regions
ID Location Runtime
───────── ─────────────────────── ──────────────
eu Europe Common Runtime
us United States Common Runtime
dublin Dublin, Ireland Private Spaces
frankfurt Frankfurt, Germany Private Spaces
london London, United Kingdom Private Spaces
montreal Montreal, Canada Private Spaces
mumbai Mumbai, India Private Spaces
oregon Oregon, United States Private Spaces
singapore Singapore Private Spaces
sydney Sydney, Australia Private Spaces
tokyo Tokyo, Japan Private Spaces
virginia Virginia, United States Private Spaces
heroku regions --common
または heroku regions --private
を実行して、Common Runtime または Private Spaces リージョンのみを表示するようにリストを絞り込むこともできます。
Heroku では、Platform API で利用可能なリージョンについての詳細情報を表示できます。たとえば、Frankfurt リージョンに使用されているインフラプロバイダーを知る必要がある場合は、直接、次のような API クエリを実行できます。
$ curl -n -X GET https://api.heroku.com/regions/frankfurt -H "Accept: application/vnd.heroku+json; version=3"
{
"country":"Germany",
"created_at":"2015-08-20T01:37:59Z",
"description":"Frankfurt, Germany",
"id":"37095377-0fed-41e5-b2db-778818d362aa",
"locale":"Frankfurt",
"name":"frankfurt",
"private_capable":true,
"provider":{
"name":"amazon-web-services",
"region":"eu-central-1"
},
"updated_at":"2015-08-20T01:37:59Z"
}
実行結果に、Frankfurt リージョンは Amazon Web Services の eu-central-1 リージョンにマッピングされていることが示されます。
デフォルトのリージョン
別のリージョンが指定されていない限り、Common Runtime のアプリは us
リージョンで作成されます。
別のリージョンが指定されていない限り、Private Space は virginia
リージョンで作成されます。
リージョンを指定する
Common Runtime でアプリを作成するときにリージョンを指定するには、heroku create
コマンドで --region
フラグを指定します。
$ heroku create --region eu
Creating calm-ocean-1234... done, region is eu
http://calm-ocean-1234.herokuapp.com/ | git@heroku.com:calm-ocean-1234.git
Git remote heroku added
Private Space でアプリを作成する場合、アプリのリージョンは常に Private Space のリージョンと同じです。詳細は、「Private Space」を参照してください。
アプリのリージョンを確認する
アプリのリージョンを確認するには、heroku info
コマンドから返される Region
値を確認します。
$ heroku info
=== calm-ocean-1234
Git URL: git@heroku.com:calm-ocean-1234.git
Owner Email: user@test.com
Region: eu
Repo Size: 164M
...
既存のアプリを移行する
Common Runtime 内の既存のアプリのリージョンを切り替えるには、アプリを新しいリージョンに再デプロイして設定する必要があります。移行オプションはありません。
Private Space を使用している場合は、Private Space の記事のアプリの移行のセクションを参照してください。
アドオンとリージョンサポート
アプリのリージョンをサポートしているアドオンは、デフォルトで、そのリージョンにプロビジョニングされます。通常と同じように、アドオンをプロビジョニングします。
$ heroku addons:create heroku-postgresql
アドオンがアプリのリージョンをサポートしておらず、かつアプリへの低レイテンシー接続が必要ない場合は、デフォルトのリージョンにプロビジョニングされます。
アドオンのレイテンシー感度が高く、そのアドオンがアプリのリージョンで利用できない場合、プロビジョニングは失敗します。
$ heroku addons:create cloudcounter
Adding cloudcounter on calm-ocean-1234... failed
! This app is in region eu, cloudcounter:basic is only available in region us.
アプリのリージョンをサポートしているアドインは、「Add-on Runtime Availability」(ランタイムでのアドオンの利用可能状況) リファレンスで確認できます。
デプロイ
アプリの新しいリリースをデプロイしても、リージョンには影響しません。アプリが作成された後、そのアプリのすべてのデプロイは、最初に指定されたリージョンで行われます。
One-off dyno
One-off dyno は、そのアプリのほかの dyno と同じリージョンで実行されます。One-off dyno をプロビジョニングしてジョブを実行するサービス (Heroku Scheduler) など) についても、同様です。
カスタムドメイン
カスタムドメイン設定はリージョンに依存しません。カスタムドメインを管理するには、heroku domains
コマンドを使用します。
データの所在
dyno とデータベースは、物理的に、作成を行ったリージョンに常駐します。ただし、Heroku は、常に同じリージョンに配置されるとは限らない多数の追加サービスで構成されています。
データの伝送と保管に関する地理的な状況を理解するには、Heroku のアーキテクチャの以下の点を考慮してください。
- Heroku の制御関連 API (すべての CLI コマンドとアプリケーションの管理が実行される) の物理的な場所については保証されません。
- Common Runtime のログは、アプリが内部で実行中の同じリージョンにルーティングされます。たとえば、
us
リージョン内のアプリのログは、us
インフラストラクチャ経由でルーティングされます。 - Private Space 内のアプリのログは、そのスペース自体と同じリージョン内に留まります。たとえば、東京スペース内のアプリのログは、東京のインフラストラクチャ経由でルーティングされます。コンプライアンス要件が厳格なアプリを Shield Private Space にデプロイできます。ここでは Logplex の代わりに Private Space Logging を使用してログがルーティングされます。
- Heroku では、アドオンプロバイダによるデータの保管場所を規制していません。詳細は、アドオンプロバイダーに直接お問い合わせください。
- Heroku Postgres でのデータの所在の詳細は、Heroku Postgres のドキュメントの「Data Residency」(データの所在) セクションを参照してください。
Heroku が利用しているサブプロセッサーの一覧と Heroku データが保存され、処理されている国の一覧については、「Salesforce Infrastructure & Sub-processors」 (Salesforce のインフラストラクチャとサブプロセッサー) ドキュメントを参照してください。