Skip Navigation
Show nav
Heroku Dev Center
  • Get Started
  • Documentation
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
  • Documentation
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
View categories

Categories

  • Heroku Architecture
    • Dynos (app containers)
    • Stacks (operating system images)
    • Networking & DNS
    • Platform Policies
    • Platform Principles
  • Command Line
  • Deployment
    • Deploying with Git
    • Deploying with Docker
    • Deployment Integrations
  • Continuous Delivery
    • Continuous Integration
  • Language Support
    • Node.js
    • Ruby
      • Working with Bundler
      • Rails Support
    • Python
      • Working with Django
      • Background Jobs in Python
    • Java
      • Working with Maven
      • Java Database Operations
      • Working with the Play Framework
      • Working with Spring Boot
      • Java Advanced Topics
    • PHP
    • Go
      • Go Dependency Management
    • Scala
    • Clojure
  • Databases & Data Management
    • Heroku Postgres
      • Postgres Basics
      • Postgres Performance
      • Postgres Data Transfer & Preservation
      • Postgres Availability
      • Postgres Special Topics
    • Heroku Redis
    • Apache Kafka on Heroku
    • Other Data Stores
  • Monitoring & Metrics
    • Logging
  • App Performance
  • Add-ons
    • All Add-ons
  • Collaboration
  • Security
    • App Security
    • Identities & Authentication
    • Compliance
  • Heroku Enterprise
    • Private Spaces
      • Infrastructure Networking
    • Enterprise Accounts
    • Enterprise Teams
    • Heroku Connect (Salesforce sync)
    • Single Sign-on (SSO)
  • Patterns & Best Practices
  • Extending Heroku
    • Platform API
    • App Webhooks
    • Heroku Labs
    • Building Add-ons
      • Add-on Development Tasks
      • Add-on APIs
      • Add-on Guidelines & Requirements
    • Building CLI Plugins
    • Developing Buildpacks
    • Dev Center
  • Accounts & Billing
  • Troubleshooting & Support
  • Heroku Architecture
  • Regions

Regions

English — 日本語に切り替える

Last updated September 14, 2020

Table of Contents

  • Viewing available regions
  • Default regions
  • Specifying a region
  • Verifying an app’s region
  • Migrating existing apps
  • Add-ons and region support
  • Deploying
  • One-off dynos
  • Custom domains
  • SSL
  • Data residency

Heroku applications can be deployed in various geographic regions. The regions available for a particular app depend on whether the app is deployed to the Common Runtime or to a Private Space.

For apps in the Common Runtime, you specify a region when you create the app. For apps in Private Spaces, the region is set when you create the Private Space itself. Each Private Space exists in a single region, and all applications in the Private Space run in that region.

Specifying an app’s region does not guarantee restriction of data residency for Heroku products, services, and add-ons to that region. See Data residency for more information.

Viewing available regions

Use the heroku regions command to view the list of available 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
oregon     Oregon, United States    Private Spaces
sydney     Sydney, Australia        Private Spaces
tokyo      Tokyo, Japan             Private Spaces
virginia   Virginia, United States  Private Spaces

Limit the list to Common Runtime regions like so:

$ heroku regions --common
ID  Location       Runtime
──  ─────────────  ──────────────
eu  Europe         Common Runtime
us  United States  Common Runtime

Limit the list to Private Space regions like so:

$ heroku regions --private
ID         Location                 Runtime
─────────  ───────────────────────  ──────────────
dublin     Dublin, Ireland          Private Spaces
frankfurt  Frankfurt, Germany       Private Spaces
oregon     Oregon, United States    Private Spaces
sydney     Sydney, Australia        Private Spaces
tokyo      Tokyo, Japan             Private Spaces
virginia   Virginia, United States  Private Spaces

Heroku exposes more detailed information about available regions in the Platform API. For example, if you need to know which infrastructure provider is used for the Frankfurt region, you can make a direct API query:

$ 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"
}

The result indicates that the Frankfurt region maps to the Amazon Web Services eu-central-1 region.

Default regions

Apps in the Common Runtime are created in the us region unless a different region is specified.

Private Spaces are created in the virginia region unless a different region is specified.

Specifying a region

To specify a region when creating the app in the Common Runtime, provide the --region flag in your heroku create command:

$ 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

If you create an app in a Private Space, its region is always the same as the Private Space’s region. See Private Spaces for more information.

Verifying an app’s region

To verify an app’s region, check the Region value returned by the heroku info command:

$ heroku info
=== calm-ocean-1234
Git URL:       git@heroku.com:calm-ocean-1234.git
Owner Email:   user@test.com
Region:        eu
Repo Size:     164M
...

Migrating existing apps

Existing applications can be migrated to a different region.

If you are using Private Spaces, see the Migrate Apps section of the Private Spaces article.

Add-ons and region support

Add-ons that support your app’s region are provisioned in that region by default. Provision them as you normally would:

$ heroku addons:create heroku-postgresql

If an add-on doesn’t support your app’s region and it doesn’t require a low-latency connection to your app, it is provisioned in the default region.

If an add-on is latency-sensitive and is not available in your app’s region, provisioning will fail:

$ 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.

You can find add-ons that support your app’s region in the Add-on Runtime Availability reference.

Deploying

Deploying a new release of your app never affects its region. After an app is created, all deploys to it will occur in the originally specified region.

One-off dynos

One-off dynos run in the same region as the rest of the app. This is also true of services (such as Heroku Scheduler) that provision one-off dynos to execute jobs.

Custom domains

Custom domain configuration is region-agnostic. Use the heroku domains commands to manage custom domains.

SSL

SSL works slightly differently depending on where apps are deployed. Consult the SSL Endpoint documentation for more details.

Data residency

Dynos and databases reside physically in the region where you create them. However, Heroku consists of a number of additional services that are not always located in the same region.

Consider the following aspects of Heroku’s architecture to understand how data might be transmitted and stored geographically:

  • No guarantees are made about the physical location of Heroku’s control surface APIs, through which all CLI commands and the management of your applications occur.
  • Heroku does not control where add-on providers store data. Contact add-on providers directly for more information.
  • For more details on data residency in Heroku Postgres, please see the Data Residency section within the Heroku Postgres documentation.

Keep reading

  • Heroku Architecture

Feedback

Log in to submit feedback.

Using Multiple Buildpacks for an App Slug Compiler

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Podcasts
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing

Subscribe to our monthly newsletter

Your email address:

  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Heroku Podcasts
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Facebook
  • Instagram
  • Github
  • LinkedIn
  • YouTube
Heroku is acompany

 © Salesforce.com

  • heroku.com
  • Terms of Service
  • Privacy
  • Cookies