S3:オンプレミスからのアクセスに向けたゲートウェイ型とインターフェイス型エンドポイント
ゲートウェイエンドポイントはルートテーブルとの統合であり、プライベートな宛先ではありません。クライアントごとに判断し、ルーティング、DNS の参照元、権限を個別に確認します。
S3 の二種類のエンドポイントは設計レビューでは交換可能に見えますが、クライアントが拠点の外に出たとたんにまったく異なる振る舞いをします。ゲートウェイエンドポイントは VPC 内のルートテーブルとの統合であるため、拠点の VPN からのリクエストがプライベートな宛先としてそこに届くことはありません。インターフェイスエンドポイントはプライベートアドレスをネットワークインターフェイス上に置くもので、ハイブリッド経路でも実際に到達できます。以降のすべては、この二つのどちらを選んだかによって決まります。
サービス名ではなくネットワークの入口で判断する
トラフィックが発生する場所から始めます。エンドポイントの種類が答えるのはまさにこの問いだからです。サポート対象の VPC コンテキストにあるワークロードはゲートウェイエンドポイントを使え、自身のプライベートアドレスを必要としません。オンプレミスのワークロードはルーティングできるプライベートアドレスを必要とし、それを提供するのがインターフェイスエンドポイントであり、設計が両方を混在させる場合は両方のエンドポイント種別が一つの VPC 内で共存でき、それは重複ではなく通常の構成です。
混在させること自体は問題ではありません。一方が他方をカバーすると想定することが問題です。
何かを選ぶ前にクライアントを分類します。VPC 内のワークスペース、NAT ゲートウェイの背後にあるコンテナ、支社のアプリケーションは三つの異なる発生元であり、ハイブリッドな入口を強制するのは最後の一つだけです。この分類をエンドポイントの一覧の隣に書き留め、次のレビュー担当者が各エンドポイントの存在理由を確認できるようにします。
インターフェイス経路が端から端まで必要とするもの
インターフェイスエンドポイントはプライベートアドレスへの到達性を与えますが、到達性は四つの要件のうちの一つにすぎません。オンプレミスネットワークにはそれらのアドレスへの経路が必要で、VPC 側には戻り経路が必要で、エンドポイントのセキュリティグループが送信元の範囲を許可する必要があり、両者の間にある検査装置がフローを許可する必要があります。VPC 内のいずれかのインスタンスへの経路は、この四つのどれも証明しません。
遠い側から逆向きに作業します。エンドポイントのネットワークインターフェイスが想定したサブネットに存在することを確認し、次にそのセキュリティグループがプレースホルダーではなく実際のオンプレミス範囲を許可していることを確認します。そのうえで、トンネルまたは回線が同じ方向に戻り経路を運んでいるかを確認します。検査は人が飛ばしがちな手順で、接続を許可する中間装置でもより大きな応答本体を落とすことがあり、それはポリシーの問題ではなくスループットの問題に見えるからです。
大きなダウンロードではなく、利用可能な最小の承認済み操作でテストします。障害はより早く、説明すべきトラフィックも少なく現れます。
DNS は VPC ではなくクエリの発生元に従う
存在するエンドポイントはそれ自体では何もリダイレクトしません。アプリケーションはリゾルバーが返した名前を受け取り、リゾルバーは許可されたビューに従って応答します。VPC 内のインスタンスとオフィスのノート PC は二つの異なる問いを立て、どちらも正しく異なる答えを得られます。一方を検証してもう一方を結論づけることが、通ったテストを失敗した展開に変える道です。
エンドポイントのプライベート DNS 設定は、公開後に有効化するチェックボックスではなく、設計の一部として読み取ります。
オフィスのリゾルバーが VPC のビューを見る必要があるなら、その経路は意図的に構築する必要があり、通常はインバウンドリゾルバーエンドポイントを介します。アプリケーション自身のコンテキストから問い合わせ、どのリゾルバーが応答したかを記録します。VPC 内の踏み台ホストで集めた結果は、その踏み台のビューを説明するだけで、それ以上ではありません。
権限は到達性とは別である
到達可能なエンドポイントは、プリンシパルに許可されていないリクエストに対してエラーを返し、そのエラーはシステムが設計どおりに動作していることを意味します。ID ポリシー、バケットポリシー、およびエンドポイントポリシーはそれぞれの層で評価されます。ネットワークアクセスが権限を与えたことはありません。
成功する無害な承認済み呼び出しと、除外された ID またはバケットに対する想定どおりの拒否という二つの結果で設計を受け入れます。
aws ec2 describe-vpc-endpoints --filters Name=vpc-id,Values=vpc-0123456789abcdef0
dig +short s3.us-west-2.amazonaws.com @10.0.0.2各結果の隣にエンドポイント名、解決された宛先、ポリシーのコンテキストを記録します。後日の DNS 変更一つで結論全体が無効になりうるからです。何かを用意する前に、両方のエンドポイント種別の現在のコストと運用負荷を比較します。インターフェイスエンドポイントはハイブリッドなプライベート入口を買うものであり、普遍的な要件ではなく、VPC 内のワークロードにはゲートウェイ経路がより良い答えであり続けることがよくあり、選択はクライアントごとで見直し可能なままです。