全力で怠けたい

怠けるために全力を尽くしたいブログ。

どのアベイラビリティゾーン? のやりとりは AZ ID を使うべき理由。

昨日 (8/23) AWS の東京リージョンで大規模な障害が発生した。

piyolog.hatenadiary.jp

Twitter は結構な騒ぎになっていて、インフラと AWS をやり始めたばかりの自分も Service Health DashboardTwitter は結構頻繁にチェックしていたのだが「どうも障害が発生しているアベイラビリティゾーンは apne1-az4 らしい」というツイートを Twitter で見つけた。 apne1-az4 というのは AZ ID というものだということは分かったのだが「ap-northeast-1a みたいなやつとなにが違うのか?」と気になってちょっと調べてみたのをメモしておく。

メモ

とりあえず公式ドキュメント。

docs.aws.amazon.com

公式ドキュメントには以下のように書いてある。

アベイラビリティーゾーンは、リージョンコードとそれに続く文字識別子によって表されます (us-east-1a など)。リソースがリージョンの複数のアベイラビリティーゾーンに分散するように、アベイラビリティーゾーンは各 AWS アカウントの名前に個別にマップされます。たとえば、ご使用の AWS アカウントのアベイラビリティーゾーン us-east-1a は別の AWS アカウントのアベイラビリティーゾーン us-east-1a と同じ場所にはない可能性があります。

ようするにアカウント A の us-east-1a = アカウント B の us-east-1a が成り立つとは限らない、ということだ。

では、アカウント A とアカウント B との間で「障害が発生しているのはどのアベイラビリティゾーンか?」という情報を交換するにはどうすればよいかというと、ここで AZ ID の出番となる。 公式ドキュメントには以下のように書いてある。

アカウント間でアベイラビリティーゾーンを調整するには、アベイラビリティーゾーンの一意で一貫性のある識別子である AZ ID を使用する必要があります。たとえば、use1-az1 は、us-east-1 リージョンの AZ ID で、すべての AWS アカウントで同じ場所になります。

まとめると以下のようになる。

  • 単一アカウント内で情報をやりとりするときは us-east-1a のようなのでやり取りしていい。別に AZ ID を使ってもいい
  • 複数アカウント間で情報をやりとりするときは use1-az1 のような AZ ID でやりとりする必要がある

さいごに

有名サービスやゲームがバタバタと倒れていくなかうちのサービスはほとんど運営に支障はなかったようで大変幸運だった。