導入
本記事では以下を記載します。
「VPCとAWSサービス間の接続」や「VPCと外部との接続(PrivateLink使用可能)」において、
VPCエンドポイントを使用するべきか、もしくはNAT Gatewayを使用するべきかを
セキュリティ面と費用面から比較してみます。

セキュリティ面
VPCエンドポイント
VPCエンドポイントを使用すると、VPCとAWSサービス間の通信をインターネットを経由せずに直接接続することができます。
最近はVPCエンドポイントを用いて接続できるSaaSも増えてきています。
外形監視のNew Relicも一部リージョンでPrivateLinkによるサービスが開始されました(※東京リージョンは対象外)。
https://docs.newrelic.com/jp/docs/data-apis/custom-data/aws-privatelink/

PrivateLinkに関するドキュメントの中にVPCエンドポイントの説明があります。

以下引用:

VPCからのトラフィックは、VPCエンドポイントとエンドポイントサービス間の接続を使用してエンドポイントサービスに送信されます。VPCエンドポイントとエンドポイントサービス間のトラフィックは、パブリックインターネットを経由することなくAWSネットワーク内にとどまります

引用元:
https://docs.aws.amazon.com/ja_jp/vpc/latest/privatelink/privatelink-access-aws-services.html

NAT Gateway
「VPCのよくある質問」のドキュメントを見ると、パブリックインターネットといっても、一部通信を除いてAWSグローバルネットワーク内に留まり、通信の暗号化を行われていることが分かります。

以下引用:

2 つのインスタンスがパブリック IP アドレスを使用して通信する場合、またはインスタンスがパブリックな AWS のサービスエンドポイントと通信する場合、トラフィックはインターネットを経由しますか?

いいえ。パブリック IP アドレスを使用する場合、AWS でホストされているインスタンスとサービス間のすべての通信は AWS のプライベートネットワークを使用します。AWS ネットワークから発信され、AWS ネットワーク上の送信先を持つパケットは、AWS 中国リージョンとの間のトラフィックを除いて、AWS グローバルネットワークにとどまります。
さらに、データセンターとリージョンを相互接続する AWS グローバルネットワークを流れるすべてのデータは、安全性が保証された施設を離れる前に、物理レイヤーで自動的に暗号化されます。すべての VPC クロスリージョンピアリングトラフィックや、カスタマーまたはサービス間のトランスポート層セキュリティ (TLS) 接続などといった追加の暗号化レイヤーもあります。

引用元:
https://aws.amazon.com/jp/vpc/faqs/

上記のAWSグローバルネットワークとは、世界中にあるリージョンやAZによって成り立つAWSのネットワークです。
https://aws.amazon.com/jp/about-aws/global-infrastructure/

セキュリティ面の比較
どちらもAWSグローバルネットワーク内に閉じた通信となりますが、
VPCエンドポイントは特定のサービスだけにアクセスを絞ることができたり、VPCエンドポイントポリシーを用いて
より細かやかな制御を行うことができます。また導入でも記載したようにAWS外のSaaSともPrivateLinkで接続できる場合があります。
プロジェクトの要件や環境に合わせて、選択していきましょう。

費用面
セキュリティ面でVPCエンドポイントを利用する要件がない場合は、VPCエンドポイントとNAT Gatewayを費用面で比較することになります。

ゲートウェイ型VPCエンドポイント
VPCエンドポイントはインターフェイス型とゲートウェイ型があり、
S3とDynamoDBとの通信で利用できるゲートウェイ型VPCエンドポイントは無料なので、
迷わずVPCエンドポイントを選択して問題ないかと思います。

料金の比較
インターフェイス型VPCエンドポイントは費用が発生するため、NAT Gatewayの費用の比較をしてみます。(東京リージョンの料金)

固定費/1時間変動費(通信費)/1GB

NAT Gateway US$0.062 US$0.062
VPCエンドポイント(インターフェイス型) US$0.014 US$0.0035

参照元:
https://aws.amazon.com/jp/privatelink/pricing/
https://aws.amazon.com/jp/vpc/pricing/

ケースごとの比較
・ケース1
NAT Gatewayを使用する接続要件(外形監視ツールへのメトリクス送信など)がない場合は
VPCエンドポイントを使用した方がセキュアかつ費用面もお得です。
固定費も変動費もVPCエンドポイントの方が安いためです。

・ケース2
NAT Gatewayを使用する接続要件(外形監視ツールへのメトリクス送信など)が既にあり、
AWSサービスやPrivateLink可能な外部ツールへの通信量がそれほど多くない場合は
全ての通信をNAT Gatewayを利用して通信を行った方がお得です。
VPCエンドポイントを新たに作成すると、その分VPCエンドポイントの固定費が発生するためです。

・ケース3
NAT Gatewayを使用する接続要件(外形監視ツールへのメトリクス送信など)が既にあり、
AWSサービスやPrivateLink可能な外部ツールへの通信量が多い場合、
VPCエンドポイントを利用した方が安くなる場合があります。
VPCエンドポイントは通信費がNAT Gatewayより安いためです。

ケース3の料金計算の例
計算例を以下に示します。
○前提
AZ:マルチリージョン
外形監視の通信量:10GB(AZあたり)
SSMとCloudWatch Logsの通信量:360GB(AZあたり)
VPCエンドポイントの数:2(AZあたり)

○NAT Gatewayのみ
(NAT Gateway固定費[月額] x AZ数) + (NAT Gateway通信費 x 合計通信量 x AZ数)
(US$ 0.062 x 24h x 31d x 2AZ) + {US$ 0.062 x (10GB + 360GB) x 2AZ}
= US$ 138.136

○NAT Gateway + VPCエンドポイント
(NAT Gateway固定費[月額] x AZ数) + (NAT Gateway通信費 x 通信量 x AZ数) +
(VPCエンドポイント固定費[月額] x エンドポイント数 x AZ数) + (VPCエンドポイント通信費 x 通信量 x AZ数)
(US$ 0.062 x 24h x 31d x 2AZ) + (US$ 0.062 x 10GB x 2AZ) +
(US$ 0.014 x 24h x 31d x 2つ x 2AZ) + (US$ 0.0035 x 360GB x 2AZ)
= US$ 137.68

AZ数やVPCエンドポイントの数によりますが、VPCエンドポイントに切り替えられる通信が数百GB以上ありそうな場合は、
計算してみるといいかもしれません。

以上