AWSのAPIのテストのつらみ

AWSを管理するツールをいくつか作っているが、たまにテストがめんどくさくなる。

具体的に言うとついさっきPiculetのテストが壊れた。 原因はRoadworkerのPrivate DNS対応をテストするためにいくつかVPCを作ったら、それがPiculetのテストと競合して「こんなVPCしらねぇよ」と怒られた。 仕方ないので、テスト対象のVPCを限定してFIx。

根本的にはツールごとにテスト用のアカウントを分けるのがいいと思うのだが、すでに自分用とツール用のアカウントを二つ持ってるし、これ以上増やすのもなぁ…とおもって、リージョンを分けることで何とかしのいでいる(対処できるものについては)。

これがMiamのテストになると、IAMのアカウントをまっさらにしてしまうので、回すたびに別のテスト用IAMアカウントが削除されて、あー…となったりする。

KelbimはデフォルトのSSL Negotiation設定が変わるとぶっ壊れたりするし、APIコールのスロットリングに引っかかってこけたりするし、Travis CIで並列にテストが走って競合してこけたりするし(これは並列数を1にした)、そもそも遅いし…

内部的にはAWS SDKを使っているので、SDKをモックにするのがスマートかもしれない。ただSDKはそれなりにバグがあるし、ツールを利用する立場としては「SDKのモックでテストしました」と言われても、本番に投入する気にはならないのでわりと泥臭いやり方になる。

Terraformも実環境でテストしてるっぽい(ドキュメントから。ソースは追ってません)。Providerが多くて大変だろうなーと思ったりする。