Heroku が AWS のどのリージョンで動いているか調べる

Heroku が AWS 基盤のサービスであり、Common Runtime で利用できるロケーションは us および eu であることは良く知られていますが、具体的にどのリージョンで動いているのでしょうか。

Heroku の Platform API というものを使えば調べることができます。

devcenter.heroku.com

例えば下記のように、 us ロケーションで使用されている AWS のリージョンは us-east-1 だとわかります。

$ curl -n -X GET https://api.heroku.com/regions/us -H "Accept: application/vnd.heroku+json; version=3"
{
  "country":"United States",
  "created_at":"2012-11-21T20:44:16Z",
  "description":"United States",
  "id":"59accabd-516d-4f0e-83e6-6e3757701145",
  "locale":"Virginia",
  "name":"us",
  "private_capable":false,
  "provider":{
    "name":"amazon-web-services",
    "region":"us-east-1"
  },
  "updated_at":"2016-08-09T22:03:28Z"
}

また、 eu ロケーションは eu-west-1 が使われているようです。

$ curl -n -X GET https://api.heroku.com/regions/eu -H "Accept: application/vnd.heroku+json; version=3"
{
  "country":"Ireland",
  "created_at":"2013-09-19T01:29:12Z",
  "description":"Europe",
  "id":"ed30241c-ed8c-4bb6-9714-61953675d0b4",
  "locale":"Dublin",
  "name":"eu",
  "private_capable":false,
  "provider":{
    "name":"amazon-web-services",
    "region":"eu-west-1"
  },
  "updated_at":"2016-08-09T22:03:28Z"
}

他にも、Private Spaces でしか使うことのできない Tokyo リージョンなどについても見ることができます。 ap-northeast-1 にデプロイされるようです。

$ curl -n -X GET https://api.heroku.com/regions/tokyo -H "Accept: application/vnd.heroku+json; version=3"
{
  "country":"Japan",
  "created_at":"2015-08-20T01:37:59Z",
  "description":"Tokyo, Japan",
  "id":"478864c7-3c1a-4fbd-992b-7c6160abfb71",
  "locale":"Tokyo",
  "name":"tokyo",
  "private_capable":true,
  "provider":{
    "name":"amazon-web-services",
    "region":"ap-northeast-1"
  },
  "updated_at":"2015-08-20T01:37:59Z"
}

アプリ本体は Heroku でデプロイしたいけどその後ろで Lambda を動かしたい、みたいなことがあると思います。Lambda を当該アプリからしか呼び出さない前提では、当然アプリと Lambda は近いほうが良いですので、リージョンが気になることがあります。そんなときには Platform API で軽く調べることができますというお話でした。