Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
そんなことあるんだ AWS 2019/07/22 #awswakaran_tokyo オタク
Slide 2
Slide 2 text
「awswakaran.tokyo ってのをやるんですけど喋りませんか」 おれ「はい」 「名前どうしますか、後から変更出来るんで仮置きで大丈夫です」 おれ「じゃあ一旦オタクで」 「OK」 おれ「ヨッシャ」 →そして当日へ…… 前日譚
Slide 3
Slide 3 text
- 前日譚 - アジェンダ(イマココ) - お前誰? - この話の目的 - Route53 で取得した .jp ドメインの移管ロックを有効にしたかった話 - Terraform で管理していた ACM の DNS 検証用の CNAME レコードの Terraform State がある日突然ぶっ壊れた話 アジェンダ
Slide 4
Slide 4 text
- @ksakahieki - K坂ひえき - オタク - 好きなサービス - DynamoDB - Aurora - CodeBuild - 一番好きなサービス - AWS Support お前誰?
Slide 5
Slide 5 text
よろしくおねがいします。
Slide 6
Slide 6 text
@みなさん AWS わかるって言えますか?
Slide 7
Slide 7 text
Amazon EC2 のことわかりますか?
Slide 8
Slide 8 text
Amazon Kinesis Video Streams のことわ かる人いますか?
Slide 9
Slide 9 text
Amazon QLDB のことわか る人いますか???
Slide 10
Slide 10 text
AWS Ground Station の 使い方わかる人います か???
Slide 11
Slide 11 text
俺は知らん!!!
Slide 12
Slide 12 text
なので AWS わかるっ て絶対言いたくない
Slide 13
Slide 13 text
- でも実際に使うサービスって一部じゃん? - でも各サービスごとになんかよくわからないめ ちゃくちゃ細かい色々なアレがあるじゃないで すか - 「そうなんだ……」ってなるやつ - それについての話をします 今日話すこと
Slide 14
Slide 14 text
- とりあえず触ってみたら細かい部分で困ることよく あるじゃないですか - そういうので怖気づいて「AWSよくわからないし 怖い」ってなる人を少しでも減らしたい - 「そうなんだ……」「そんなことあるんだ」を増や して経験値を溜めていきたい どうして?
Slide 15
Slide 15 text
Route53 で取得した .jp ドメインの移管ロック を有効にしたかった話
Slide 16
Slide 16 text
こんな感じのドメインを持っていました。 - awswakaran.jp - awswakaru.jp あらすじ
Slide 17
Slide 17 text
2019年4月5日……
Slide 18
Slide 18 text
2019年4月5日……
Slide 19
Slide 19 text
- ドメイン移管申請が行われてから10日以内に登 録者からの返答がなかった場合、自動承認され てしまうというフローが原因 - とはいえ移管ロックしとけばいい - こわいですね、確認しましょう ドメイン移管申請こわい
Slide 20
Slide 20 text
:innocent:
Slide 21
Slide 21 text
とりあえずドキュメント読みましょう
Slide 22
Slide 22 text
No content
Slide 23
Slide 23 text
いけそう
Slide 24
Slide 24 text
有効にしてみましょう
Slide 25
Slide 25 text
No content
Slide 26
Slide 26 text
- Route53 のレジストラはほぼ Gandi - .com, .org, .net は Amazon Registrar, Inc. - Gandi は2文字 TLD のドメイン移管ロックをサ ポートしていない - こたえ
Slide 27
Slide 27 text
そうなんだ……
Slide 28
Slide 28 text
- AWS の日本語ドキュメントが間違えていることも 時にはある - 直って欲しい!!! - Route53 で取得した .jp ドメインは移管ロック出 来ない - 気をつけましょうとしか…… 教訓
Slide 29
Slide 29 text
- 英語ドキュメントでは `Not Supported` (よくある) - (AWS の方からご指摘)日本語ドキュメントは補足であり、英語ドキュメントが正 です オチ
Slide 30
Slide 30 text
待ってくれ
Slide 31
Slide 31 text
No content
Slide 32
Slide 32 text
!!!
Slide 33
Slide 33 text
有効に出来ないのに有効になってる
Slide 34
Slide 34 text
- 過去に移管ロック出来ないはずのドメインがロックを取得出来 てしまった時期があるらしい?(AWS Forums情報) - 有効と表示されていても、移管ロック無効と同等の振る舞いを する - 有効→無効の操作は不可能 - サポートに問い合わせたら表示上も無効にできる様子 なぜか有効になっているやつ
Slide 35
Slide 35 text
- Route53 で .jp ドメインの移管ロックは使えない - Route53 の後ろには Gandi がいる - でも Route53 で .jp ドメインの移管ロックが有効になってし まっている場合が時にはある - 有効と表示されていても移管ロックは無効 - 有効と表示されてしまっているものがあればサポートへ まとめ
Slide 36
Slide 36 text
そんなことあるんだ……
Slide 37
Slide 37 text
Terraform で管理していた ACM の DNS 検証 用の CNAME レコードの Terraform State が ある日突然ぶっ壊れた話
Slide 38
Slide 38 text
- AWS Certificate Manager(ACM) で SSL/TLS 証明書を発行していた - ACM のドメイン所有権の検証を CNAME レコード を用いた DNS 検証でやっていた - 永遠に自動更新されて最高に便利 ACM で DNS 検証
Slide 39
Slide 39 text
こういうやつ
Slide 40
Slide 40 text
- AWS Certificate Manager(ACM) で SSL/TLS 証明書を発行していた - ACM のドメイン所有権の検証を CNAME レコード を用いた DNS 検証でやっていた - 永遠に自動更新されて最高に便利 - 証明書、CNAME レコード共に Terraform で管 理して平和に過ごしていた…… ACM で DNS 検証
Slide 41
Slide 41 text
- これを以下のような構成で用いていた - awswakaran.com - *.awswakaran.com ACM で DNS 検証
Slide 42
Slide 42 text
それは2019年5月15日に突然起こった…
Slide 43
Slide 43 text
!!!Terraform の運用完全停止!!!
Slide 44
Slide 44 text
- IAM User を追加する素朴な変更を Terraform に加えようとし た - 突然「ACM の DNS 検証用に作っていた CNAME レコード に差分あるから変更するよ!!」って Terraform が言い 始めた - 想定外の差分が発生し、一旦 Terraform の操作を禁止 なにがおこった
Slide 45
Slide 45 text
ヒリつき始める現場……
Slide 46
Slide 46 text
とはいえ Terraform の変更を反映 (`terraform apply`)しなければ問題にはな らない
Slide 47
Slide 47 text
- ACM の DNS 検証に作っていた CNAME レコードの順番が突 然変わってしまった - 順番はランダムなので、Terraform を実行するたびに実行 結果が変わる - Route53 Record のリソース変更は Destroy & Create (一度削除した後に作り直す) - → つまり Terraform がリソースを破壊して作り直した り、そうじゃなかったりというガチャが発生 - それも us-east-1 リージョン限定で 状況整理
Slide 48
Slide 48 text
- とにもかくにも aws-cli で API を叩いてみるしか無い…… - 色々調べた結果、ACM の `describe-certificate` って API が返す値の、 `DomainValidationOptions` ってアトリ ビュートの配列の中身が、ある日を境に順不同になるよう になっていた 原因調査
Slide 49
Slide 49 text
1回め 2回め 原因調査
Slide 50
Slide 50 text
1回め 2回め 原因調査
Slide 51
Slide 51 text
1回め 2回め 原因調査
Slide 52
Slide 52 text
TODO: 君の名は
Slide 53
Slide 53 text
ひとまず何が起こっているかは理解した ……が、依然として対策は無い……
Slide 54
Slide 54 text
- terraform-provider-aws 上に Issue は存在しているが、あま り議論は活発ではなく……
Slide 55
Slide 55 text
何も出来ないまま翌朝を迎える……
Slide 56
Slide 56 text
おや……
Slide 57
Slide 57 text
ap-northeast-1 でも同様の現象が発生してい るな……?
Slide 58
Slide 58 text
ざわつき始める Issue…
Slide 59
Slide 59 text
- AWS 側で何かが変更されて、明らかに挙動が変わっている - us-east-1 で起こった現象が翌日に ap-northeast-1 でも 発生している - Issue を見るに、ヨーロッパリージョンでも発生 - どう見ても北バージニアで実験→全世界本番リリースが行 われているな??? そろそろ抱いてきた確信
Slide 60
Slide 60 text
そして2週間が経ち……
Slide 61
Slide 61 text
焦れる人々の声…… おそらくここにいた人達は、 関連する Terraform リポジトリ の運用が停止してたのでは。 自分の場合はモノリシック リポジトリで運用してたので 完全停止してしまった。
Slide 62
Slide 62 text
そして5月30日……
Slide 63
Slide 63 text
解消
Slide 64
Slide 64 text
これで15日ぶりにようやく `terraform apply` が出来る(≒安心してインフラに変 更を加えられる)ぞ!!!
Slide 65
Slide 65 text
やったね
Slide 66
Slide 66 text
とはいえ……
Slide 67
Slide 67 text
ACM の API がいつまでも順序保証をしてく れるとは限らない……
Slide 68
Slide 68 text
Terraform 側でソートを挟む PR は(一旦問題 が解消したという理由で)未だ merge されず ……(2019/07/22時点) https://github.com/terraform-providers/terraform-provider-aws/pull/8708
Slide 69
Slide 69 text
頑張れ Terraform!! (正確には terraform-provider-aws)
Slide 70
Slide 70 text
- ACM のとある API の返り値の順番が変更された - はじめは北バージニア、そして全世界へとデプロイされて いった - 全世界の Terraformer たちが騒いだ結果、AWS 側で暫 定的に修正が行われた - Terraform 側でソートを噛ませる実装は未だに merge さ れず…… - これのせいでお互いに二の足を踏んだ感がある - 寛大な措置をありがとう AWS まとめ
Slide 71
Slide 71 text
そんなことあるんだ……(2)
Slide 72
Slide 72 text
- AWS には細かい挙動のアレコレがいっぱいあって「そうなんだ」ってなる - AWS のドキュメントは間違っている事もあるし、ドキュメントに書かれていない挙動 もたくさんあって「そんなことあるんだ」ってなる - 「そんなことあるんだ」が増えてくると、AWS の細かい気持ちがわかってくる - みんなでどんどん「そんなことあるんだ」を集めていきましょう まとめ
Slide 73
Slide 73 text
おわり