何がおきたのか
色々なまとめがタイムラインに流れてきましたが、itmediaの情報が良い感じでした。

根本原因
根本原因はDynamoDBの自動更新時に、超レアな競合がおきてからのDNSレコードが適用された。
自動化システムでもそれを修復できんかった。
詳細はこちらの記事によくまとまってます。

各サービスへの波及
AWS各サービスは内部DBとして主に名前解決として利用しているケースがめちゃくちゃあるので起動失敗とか誤動作が発生した。
EC2
EC2では、DropletWorkflow Manager (DWFM)と呼ばれるサブシステムが物理サーバ(ドロップレットと呼ぶ)について、どのサーバが生きてて、誰が使ってるだのっていう状態管理をDynamoDBでしてるもんだから、そもそもアクセス出来なくなると新規起動不可になる。
なお、DWFMはリージョンごとに存在するので、今回はEC2に関してはus-east-1のみが影響を受けた。
NLB
DynamoDB復旧後、Network ManagerへのEC2管理イベントが大量に流れこみ、処理しきれず伝搬が大幅に遅延した。その影響でNLBのターゲットに対する判定が不安定になり、unhealthyターゲットを除外したり復旧させたりを繰り返した。
その結果実効キャパシティが激減し、接続エラーが頻発。
補足
なんでALBは影響ない?
それぞれの特性によるもの。どっちが良い悪いではない。
・NLB
L4(TCP)のレイヤーでみていて、一瞬でもNGだとunhealthy判定される。それはNLBの特性。
・ALB
L7(HTTP)のレイヤーでみていて、一瞬だけNGでもunhealthy判定はされず、次のヘルスチェックまで待つ。
所感
AWS内部でのDNSレコードの更新の話は知りませんでした。
それでも、AWS内部でどのサービスが裏でどのサービスの影響を受けるのか、知る事は出来ると思いましたので、常日頃からそういった資格試験には出ない様な情報もキャッチアップしておくべきと感じました。
では。
