AWSドキュメントの更新履歴をGitHubで確認して、いろいろリアルタイムでないことに思いを馳せる

#はじめに
日々更新され続けるAWSのドキュメント。
2018年3月から、GitHub上で利用できるようになりました。
[AWS ドキュメントがオープンソースになり、GitHub でご利用可能に（2018/3/5）](https://aws.amazon.com/jp/blogs/news/aws-documentation-is-now-open-source-and-on-github/)

GitHubのHistoryを見ればドキュメントの更新履歴も分かるらしいということで試してみました。

#インタフェースエンドポイントはエンドポイントポリシーにいつから対応したのかを調べる
更新履歴を確認しようと思ったきっかけは、VPCエンドポイントについてドキュメントを参照している際に、気になる記述があったことでした。

##AWSドキュメントを見る

VPCエンドポイントにはゲートウェイ型とインタフェース型がありますが、エンドポイントポリシーを設定できるのは前者のみだと認識していました。ところが2019/4/27時点のAWSドキュメントでは以下の記述があります。

[インターフェイスエンドポイントのプロパティと制限](https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpce-interface.html#vpce-interface-limitations)

>インターフェイスエンドポイントでは、エンドポイントポリシーをサポートするサービスについて、ポリシーの使用がサポートされます。ポリシーをサポートするサービスの詳細については、「VPC エンドポイント によるサービスのアクセスコントロール」を参照してください。

![ドキュメント.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155963/349bfb6b-5565-4011-9bd7-410628b5214e.png)


念のため英語に切り替えて、内容に差異が無いことを確認します。（もし差異があったとしても、正とすべきは常に英語版です。）

>Interface endpoints support the use of policies for services that support endpoint policies. For information about the services that support policies, see Controlling Access to Services with VPC Endpoints.

特に差異が無かったので、画面上部のアイコンからGitHubを開きます。
（英語表示した場合にのみアイコンが表示されます。）

![ドキュメントeng.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155963/e4d440fd-0ced-231d-a30c-a5e133416c48.png)


##Githubを見る
参照していたドキュメントに該当するGitHubのページに飛ばされます。参照するだけであればGitHubのアカウントは不要です。
![github.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155963/372df55e-cf6b-56db-7c4d-0f4de7c8d044.png)

ページをスクロールしていくと、画面下部にはAWS公式のページで見ていたものと同じような形式で、ドキュメントが表示されています。[History]を押下します。

![github2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155963/68382ba9-3e61-1df9-ae9b-15a6c3e9b9a7.png)

時系列にHistoryが表示されます。実際には私は上から順に確認していったのですが、今回のケースでは2019/3/3更新分が該当する内容だったので、リンクを押下します。

![History.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155963/abcf7026-80a6-dd1a-eeb8-e99f84a177b5.png)

様々なドキュメントの.mdの変更差分の一覧画面に飛ぶのですが、該当するドキュメント（今回であればvpce-interface.md）の部分に自動で飛ばしてくれます。
（緑や赤の■が何を表すのかや、その左の数字が何を意味するのかは理解できていません。教えてください。）

![History2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155963/1f77a400-48a0-1c7a-14e0-15ff74538ac2.png)

変更差分の中から、今回のお目当ての記述を見つけることができました。

**【変更前】**
`+ Interface endpoints do not support the use of endpoint policies\. Full access to the service through the interface endpoint is allowed\.`
**【変更後】**
`+ Interface endpoints support the use of policies for services that support endpoint policies\. For information about the services that support policies, see [Controlling Access to Services with VPC Endpoints](vpc-endpoints-access.md)\.`

![変更差分.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155963/66e498f9-c67f-80aa-b7ef-a125d77d9565.png)

それまでは「エンドポイントポリシーはサポートしていない」としていたインタエースエンドポイントも、2019/3/3のドキュメントをもって「一部のサービスに対してはポリシー設定が可能」という記載になったということですね。

画面右上部のアイコンを押下すれば、もう少しリッチな画面で差分を確認できます。

![リッチな変更差分.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155963/401287bc-90c1-bb09-c083-79e2b138c732.png)

##What's Newで見る
2019年3月に何かあったかなーということで、Google先生に`aws whatsnew 2019 03 vpc`で聞いてみます。

![google.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155963/644c01ef-9071-8d1f-e580-edee3d0800b3.png)


それっぽい記事が見つかりました。

[AWS CodeCommit が VPC エンドポイントのサポートを開始（2019/3/7）](https://aws.amazon.com/jp/about-aws/whats-new/2019/03/aws-codecommit-supports-vpc-endpoints/)

AWS CodeCommitはインタフェース型のVPCエンドポイント経由でアクセスすることになり、そこではエンドポイントポリシーにも対応しています。新機能として追加されるにあたり、ドキュメントが更新されていったのかな、などと想像したりします。

What'sNewは、以下のページの下部に年別のアーカイブがあるので、そこからさかのぼって確認できます。

[AWSの最新情報]
https://aws.amazon.com/jp/new/
[2019年のアーカイブ]
https://aws.amazon.com/jp/about-aws/whats-new/2019/

#いろんな時間差を気にする
基本的な調べ方は上述の通りでよいと思うのですが、調べまわっているうちにいとんなことが気になってきました。


##AWSドキュメントの日本語と英語の時間差
先述のエンドポイントポリシーまわりの記載について、もう一つ参照すべき重要なドキュメントのページがありました。

>ポリシーをサポートするサービスの詳細については、**「VPC エンドポイント によるサービスのアクセスコントロール」**を参照してください。

「VPC エンドポイント によるサービスのアクセスコントロール」というドキュメントへのリンクとなっており、インタフェース型のエンドポイントにおけるエンドポイントポリシーについては、そちらを参照してねと書いてあるわけです。

2019/4/26に日本語版のドキュメントを見ると、以下のような記載でした。（画像を取っていなかったのでキャッシュから引っ張ってきました）

![キャッシュから拾った.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155963/7ed40fec-3d92-70e0-5623-aae1b57dab3d.png)

インタフェース型のエンドポイントとしては、AWS CodeBuildのみが記載されています。
同日に英語で見た際には以下の記述。

![英語.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155963/e51e8551-d1eb-48b3-d7b9-bae43628b0c4.png)

インタフェース型のエンドポイントとしては以下の通りとなっていました。

- AWS CodeBuild
- AWS CodeCommit
- Amazon SNS
- Amazon SQS

これはそのうちSNSやAQSも新たにエンドポイントポリシーに対応するのか？と思っていたら、両者とも2019/4/4の時点ですでに対応していました。なんだよ。

[Amazon SNS で VPC エンドポイントポリシーの使用が可能に（2019/4/4）](https://aws.amazon.com/jp/about-aws/whats-new/2019/04/amazon-sns-now-supports-vpc-endpoint-policies/)
[Amazon SQS で VPC エンドポイント向けポリシーのサポートを開始（2019/4/4）](https://aws.amazon.com/jp/about-aws/whats-new/2019/04/amazon-sqs-now-supports-policies-for-vpc-endpoints/)

そして2019/4/27になったら、日本語版のドキュメントも英語版と同じ内容にアップデートされていました。なんだよ。
![日本語.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155963/456d095b-7302-f672-b4dc-4b1b1035e0be.png)

あくまでここでの記述は仕様そのものではなく、「エンドポイントポリシーの例」へのリンクを羅列しているものなのでクリティカルではないですが、2019/3/7に対応していたCodeCommitの記述も、日本語版のドキュメントに反映されるまで1か月半以上かかったということですね。

4/4に発表されたSNSとSQSはもう少し早い3週間程度で取り込まれたので、タイミングによりけりなんでしょうね。

##英語版ドキュメントとGitHubの時間差
ではそもそも「VPC エンドポイント によるサービスのアクセスコントロール」の英語版はいつ更新されたのか？ということでGitHubのHistoryから見てみると…
![GithubVPC.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155963/33a70380-d297-bc78-189d-9943ba0453c5.png)

Historyの中で見える最新が2019年1月4日。古い。

![GithubVPCの古い記述.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155963/c3d93383-9d75-2b78-9804-e5d2b8dc3ed0.png)

GitHub上で見れるドキュメントも古い。てっきりGitHubとAWSドキュメントは都度版が一致していると思っていたのですが、そうではないのでしょうか。（私の調べ方が間違っている可能性もあり）

##そもそも2019年1月時点からインタフェース型もエンドポイントポリシー対応してない？
念のため上記の2019/1/4の更新履歴を見ると、エンドポイントポリシー例の中にAWS CodeBuildが追加されたのはこのタイミングのようでした。

![VPCエンドポイントのポリシー.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155963/2bf7c033-c161-0f0d-4f8b-1f7ed0b43d3f.png)

さらっと流してたけど、この記述があるってことは、2019/3/3よりずっと前から、「インタフェース型だけどエンドポイントポリシーに対応したサービス」ってあったってことではないのか？？？

CodeBuildのほうのドキュメントを見ると、2019/4/27現在エンドポイントポリシーの記述がある。

![Codebuildのポリシー.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155963/2685c1bb-f3c2-48f4-4a18-90249af90a4d.png)

この記述が追加されたのはHistoryによると2019/1/9のようだ。

![vpcendpoincodebuild.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155963/1b5aef31-89f3-01eb-2f96-6207520bc6cc.png)

https://github.com/awsdocs/aws-codebuild-user-guide/commit/964e29567a3d5e00a257409e5e31ef0f30d36fab?short_path=48d105e#diff-48d105eaf0b3b69c2d4e5d9710bd9986

AWS CodeBuildがVPCエンドポイントに2018年5月に対応したのは見つけられましたが、そのあとにエンドポイントポリシーに対応した、という記事は見つけられませんでした。

[AWS CodeBuild が VPC エンドポイント のサポートを開始（2018/5/16）](https://aws.amazon.com/jp/about-aws/whats-new/2018/05/aws-codebuild-supports-vpc-endpoints/)

そうすると、2018年5月時点からずっとエンドポイントポリシーに対応していた可能性もありますね。

少なくとも2019年1月には対応していたことはドキュメントの記述から疑いようが無いので、そうすると2019年3月時点まで`+ Interface endpoints do not support the use of endpoint policies\. Full access to the service through the interface endpoint is allowed\.`という記述をしていたというのは……

どういうことなんだ…

#おわりに
生半可な気持ちでGitHubの確認を始めたらいろんなものが掘れました。
一応まとめると、以下のようになります。

- 英語のドキュメントより多言語のドキュメントが古い場合がある
    - この記事でそこの根拠は触れられていませんが、常識です
- 英語のAWSドキュメントのみGitHubで管理されている
- 英語のAWSドキュメントとGitHubの記載が同一の版であるとは限らない
- ドキュメントの記載内容が最新の実態と整合性取れているとは限らない
    - 新機能の発表に先んじてドキュメントが整備されているとは限らない、とも言える

仕様の確認などにドキュメントを参照して根拠とすることは多いと思います。そこの根拠となるべきドキュメントが、必ずしも100%であるとは限らないというのは、意識したほうがいいでしょう。確実な情報を得たければ、実機で手を動かして検証したり、AWSサポートに問い合わせたりするほかないのでしょうか。
（でもAWSサポートの方もたまに間違った回答されることもありますね）

#おまけ

今回はたまたま確認したい変更内容が近いタイミングだったので、Historyを上から順に確認することで充足しましたが、もっとドンピシャに「ここの記載が変わったのがいつなのか」を探り当てる方法があったら教えてください。