インターフェイス型VPCe理解した気がする
-
大前提として、AWSでは通信がサービスエンドポイント(service.region.amazonaws.com)に到達することでサービスを利用できる。Public環境下でこれらのサービスエンドポイントを名前解決するとグローバルIPアドレスが返ってくる。
-
だが、VPCeの「プライベートDNS名を有効化」すると、サービスエンドポイントとVPCeのプライベートIPを対応させるAレコードがPrivate hosted zoneに作成される(下表の左上)。そのためVPC内からサービスエンドポイントを名前解決するとVPCeのプライベートIPアドレスが返ってくるため、インターネットに出ていくことなくサービスを利用できる。(Route53 Resolverは最初にPrivate hosted zoneを見て、該当するドメイン名がなければInternet上に探しにいく)
-
Regional DNS名とZonal DNA名は「プライベートDNS名を有効化」せずともPublic hosted zoneにAレコードが作成される。これよりVPC内から名前解決しても、外部Resolverから名前解決しても下表のようにプライベートIPアドレスが返ってくる。
-
オンプレからCLIを用いてサービスを利用する場合には注意が必要。aws s3 ls などのCLIコマンドを実行する際には、内部的にサービスエンドポイント(s3.ap-northeast-1.amazonaws.com)へのリクエストを実行している。オンプレからPrivate hosted zoneは参照できないので、サービスエンドポイントを名前解決しようとするとグローバルIPアドレスが返ってくる(下表の右上)。つまり、S3などのサービスにアクセスする際にインターネットを経由することになってしまう。
-
インターフェイス型VPCeを経由してサービスにアクセスするためには、VPCeのRegional DNS名かZonal DNS名を明示的にコマンドで指定(--endpoint-url)してあげる必要がある。
VPC内での名前解決 外部Resolverでの名前解決 service.region.amazonaws.com 192.168.1.xx, 192.168.3.xx 52.291.ww.xx, 52.291.yy.zz, … Regional DNS名 192.168.1.xx, 192.168.3.xx 192.168.1.xx, 192.168.3.xx Zonal DNS名 192.168.1.xx or 192.168.3.xx 192.168.1.xx or 192.168.3.xx