Open1

インターフェイス型VPCe理解した気がする

wakakawakaka
  • 大前提として、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

https://dev.classmethod.jp/articles/s3-privatelink-diagram/