AWS の勉強をしていると時々出てくるVPCエンドポイント。
単語レベルでは覚えていても理解しているとは言い難いところが多いので、一度自分なりに整理して理解に努めて見る
目次
VPCエンドポイントの目的
VPC エンドポイント
https://docs.aws.amazon.com/ja_jp/vpc/latest/privatelink/vpc-endpoints.html
そもそもAWSでいうエンドポイントとは、AWSのサービスに対してアクセスするための必要なURLのようなものとの認識です。
RDSなどがそうですが、サービスによっては構築時にエンドポイントが作成され、エンドポイントに対して接続することでそのサービスを利用することができるようになります。
VPCエンドポイントは、例えばVPC内に配置されたECSやEC2などに構築されたサービスから、パブリックなインターネットを介すことなく他のAWSサービスに対してアクセスを行うために用いられます。
これによってVPC内のリソースから安全かつ高速なアクセスを提供することができます。
実際のところAWS内でインターネットゲートウェイを介してサービスを呼出す際は、パブリックなネットワークを経由せずに、AWSネットワーク内にとどまるため、料金もかかりません。
(VPN経由でAWSサービスにアクセスした場合は転送量がかかる)
しかし、その制御はあくまでAWS側でやってくれているのであって明示的なものではなく、VPCエンドポイントを作成せずにアクセスするにはインターネットゲートウェイなどを必要とします。
タイプとしては3つある
- ゲートウェイ型
- インターフェース型
- Gateway Load Balancer型
ゲートウェイ型は初期に導入されたエンドポイントで、S3とDynamoDBのみが対応しています。
それ以降のエンドポイントはインターフェース型で提供されており、S3のみゲートウェイ型とインターフェース型の両方に対応しています。
Gateway Load Balancerエンドポイントは、セキュリティサービスであるGateway Load Balancerを用いてセキュリティ検査を行う際、トラフィックをインターセプトするために用いられるため、他の二つのエンドポイントとは基本的に異なるものと考えています。
S3をのぞいたサービスに関しては、ゲートウェイエンドポイントとインターフェースエンドポイントの二つで選択肢はないですが、S3の場合にはどちらを用いるのか、その違いを把握しておく必要があります。
ゲートウェイエンドポイントとインターフェースエンドポイントの違い
ゲートウェイエンドポイントを用いる場合、利用者はサービスのグローバルIPを用いてサービスに対してアクセスをします。
この時、エンドポイントの設定が完了すると、VPCルートテーブルにゲートウェイへのルートが追加され、その先はAWS側でうまいこと処理されてサービスに届きます。
それと引き換え、インターフェースエンドポイントでは、VPC内にサービスアクセス用のENI(ElasticNetworkInterface)が作成され、サービス利用者はそのプライベートIPに対してアクセスをするという形をとります。
また、インターフェースエンドポイントに対してセキュリティグループを設定することが可能なので、細かいコントロールをしたい場合には有効かもしれません。
インターフェースエンドポイントはゲートウェイエンドポイントの拡張であり、互換性を持ち、同じVPC内にこれら二つのエンドポイントを用いることができます。
注意しなければならないのは、インターフェースエンドポイントは時間当たりの料金と、インターフェースを介した通信トラフィックは課金対象となる点です。
インターフェースエンドポイントはサービスごとに用意する必要が生じるため、増えれば増えるほど料金が増すので、本当にトラフィックをプライベートにする必要があるのかは検討が必要そうです。
ゲートウェイエンドポイントに関しては課金対象とならないためそれら違いを理解したうえで利用する必要があります
S3インターフェースエンドポイントに対するオンプレミスからのアクセス
オンプレミスからのアクセスといっても、VPNやDirectConnectを利用した際の話。
この時、PrivateNetwork経由でS3へアクセスするためにインターフェースエンドポイントを利用することができるというもの
最近のアップデート
オンプレミスからのS3プライベートリンク
Amazon S3 simplifies private connectivity from on-premises networks
https://aws.amazon.com/jp/about-aws/whats-new/2023/03/amazon-s3-private-connectivity-on-premises-networks/
VPCエンドポイントのインターフェースエンドポイントにて、プライベートDNSオプションが利用可能になったとのこと。
マルチリージョンアクセスポイント
VPCエンドポイントがVPC内からのアクセスに対するエンドポイントを提供するのに対して、複数のリージョン間でレプリケートされたS3を一番近いロケーションに対してルーティングするためのグローバルエンドポイントを提供するのがマルチリージョンアクセスポイント。
この機能に対して、クロスアカウントでレプリケートされたものも対象とする更新が行われたとアナウンスがあった
Announcing cross-account support for Amazon S3 Multi-Region Access Points
https://aws.amazon.com/jp/about-aws/whats-new/2023/03/cross-account-support-amazon-s3-multi-region-access-points/
ただ、このアナウンスで何が変わったのかがいまいち理解できていない。
手順としては、クロスアカウントでパーミッションを与えてレプリケーションを可能にし、その後にマルチリージョンアクセスポイントを設定するような流れなので、どのあたりが新規にサポートされた部分なんだろうか?
参考
DirectConnectからS3に直結!「AWS PrivateLink for Amazon S3」を試してみたhttps://dev.classmethod.jp/articles/privatelink-for-amazon-s3/
「Amazon S3 インターフェースエンドポイント(PrivateLink)ではプライベート DNS をサポートしていません」 の意味を絵をかいて腹落ちさせてみたhttps://dev.classmethod.jp/articles/s3-privatelink-diagram/
Configuring replication when source and destination buckets are owned by different accounts
https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-walkthrough-2.html
Amazon S3 マルチリージョンアクセスポイント
https://aws.amazon.com/jp/s3/features/multi-region-access-points/
VPC エンドポイント
https://docs.aws.amazon.com/ja_jp/vpc/latest/privatelink/vpc-endpoints.html
Gateway Load Balancer エンドポイント (AWS PrivateLink)
https://docs.aws.amazon.com/ja_jp/vpc/latest/privatelink/vpce-gateway-load-balancer.html
Types of VPC endpoints for Amazon S3
https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#types-of-vpc-endpoints-for-s3
Gateway Load Balancer の使用開始方法
https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/gateway/getting-started.html
2つのVPCエンドポイントの違いを知る
https://dev.classmethod.jp/articles/vpc-endpoint-gateway-type/