VPCのデフォルトサブネットのElastic Beanstalk自動スケーリンググループにいくつかのEC2インスタンスを配置します。これらのEC2インスタンスのアプリは、IPアドレスのホワイトリストを使用してアクセスを許可するサードパーティのサービスに接続する必要があります。そのため、ホワイトリストに追加できるように、このサービスプロバイダーに提供できる1つ以上の静的IPアドレスが必要です。私の理解では、静的IPを取得する唯一の方法はElastic IPアドレスを取得することです。また、Elastic IPは一度に1つのEC2インスタンスにのみ関連付けることができます。サブネット全体またはインターネットゲートウェイに関連付けることはできません(これで正しいですか?)。 EC2インスタンスごとにElastic IPが必要ですか?それで、各インスタンスを個別にホワイトリストに登録できますか?自動スケーリングが別のインスタンスを追加した場合、どのように機能しますか? Elastic IPを備えた1つのEC2インスタンスがあり、そのインスタンスを介してすべての送信トラフィックをルーティングする必要がありますか?もしそうなら、そのインスタンスはこの目的のためだけである必要がありますか、それとも私のアプリを実行しているインスタンスの1つにすることができますか?
NATが必要です。この構成は、VPCでプライベートサブネットをサポートするために一般的に使用されます。非常に詳細なガイド here があります。 VPCがNATインスタンスを使用するように設定されると、すべての送信トラフィックはNATインスタンスのEIPに起因します。
もしそうなら、そのインスタンスはこの目的のためだけである必要がありますか、それとも私のアプリを実行しているインスタンスの1つにすることができますか?
技術的にはおそらく可能ですが、それは良い考えではありません。
インスタンスがコンテナ化されている場合、mightでそれを回避できる可能性がありますが、それでもおそらく素晴らしいアイデアではありません。
また、NATインスタンスが単一障害点になる可能性があるため、冗長性について検討する必要があるかもしれないことにも注意してください。
私はこれが古いスレッドであることを理解しています-同様のユースケースを持っている人にとっては、AWS nat-gateway がより良い解決策になるでしょう。
上記の回答についてコメントする十分な評判はありませんが、NATゲートウェイを使用してこれを実現する場合に知っておく必要がある情報をいくつか追加したいと思います。 NATゲートウェイを作成するときに、サブネットとエラスティックIPアドレスを選択します。
最初に、エラスティックロードバランサーとEC2インスタンスが存在していたのと同じサブネットにNATゲートウェイを追加しました。次に、NATゲートウェイをルートテーブルに追加する必要があります。連絡しようとした外部データベースサーバーのIPのターゲットとしてNATゲートウェイを追加しました。これにより、Elastic Beanstalkでホストされているアプリケーションがタイムアウトしました。これは、NATを介して外部データベースに接続しようとしたためです。彼らはNATに到達し、次にNATがインターネットを介して私のサーバーに到達しようとし、それが存在していたサブネットのルートテーブルでそれを検索しました。ループ。
解決策は、NATゲートウェイを作成する前に、NATが独自のサブネットとルートテーブルを持つように、NAT専用の新しいサブネットを作成することです。 NATのルートテーブルで、すべてのトラフィックがインターネットゲートウェイを指すようにします。メインルートテーブルで、外部IPがNATを指すようにします。次に、EC2インスタンスが外部IPに接続しようとすると、メインルートテーブル(またはインスタンスが存在するサブネットに対して定義したルートテーブル)でそれらを検索し、NATを見つけます。次に、NATは独自のルートテーブルでそのIPを検索し、インターネットを見つけます。