ちょっと話題の記事

【小ネタ】えっ、Private SubnetからNATサーバを経由せずにyum updateができるって!?

2015.08.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

超おはようございます、城内です。 今回は、自分で操作していて驚いた小ネタを紹介したいと思います。

本内容は、Amazon Linuxのみに対応したものになりますので、ご注意ください。

はじめに

以下のような構成をほどよく目にすることがあるかと思います。

arch_01

Private Subnet内のEC2インスタンスは、直接インターネット(VPC外)に出ることができないため、NATインスタンスを経由して外に出る構成です。 yumの実行やntpの時刻同期などで外部にあるリソースにアクセスする必要がある場合、検討される構成の1つかと思います。

NATサーバがいない

そんな中、上図からNATサーバがいなくなると、以下のようにPrivate SubnetにいるEC2インスタンスは外部に出ていけなくなります。

arch_02

もちろん、yumの実行やntpの時刻同期などはできなくなります。

・・・と思いきや、yum updateを実行したところ、なんと処理が通りました!(※ntpはダメですよ)

S3のVPCエンドポイント

で、「えっ、なぜ!?」と思い、構成をよく確認したところ、以下のような構成になっていることに気が付きました。

arch_03

別件でS3のVPCエンドポイントをつけていただけなのですが、Amazon LinuxのyumリポジトリがS3上にあったため、VPCエンドポイントを経由して、処理が通っていたのでした。

正しい挙動なのか?

以下のページにちゃんと書いてありました。

Amazon Linux AMI リポジトリは、各リージョン内の S3 バケットです。

よくある質問 - Amazon Linux AMI | アマゾン ウェブ サービス(AWS 日本語)

つまり、VPCエンドポイント経由で内部ネットワークからS3にアクセスできるのだから、Amazon Linuxのyum updateも通って当然ということですね。

さいごに

正直、これは操作していて偶然気づいただけなのですが、S3のVPCエンドポイントがリリースされたタイミングで真っ先にこれに気づいていた方がいましたら、その人は間違いなくAWS神だと思います!(笑)

ご参考

なお、RHELに関しましては、AWS内にリポジトリはあるものの、S3上ではないようですので、上記のような挙動にはならないようです。