web-dev-qa-db-ja.com

Amazon CloudFormation:特定のサブネットのELBのプライベートIPを取得するにはどうすればよいですか?

TL; DR-CloudFormationテンプレートが特定のELBのサブネット固有の内部IPアドレスをそのサブネット内のインスタンスのUserDataに挿入することは可能ですか?


EU-West-1内の3つのAZのそれぞれに1つはプライベート、もう1つは6つのサブネットを持つAmazon VPCに一連のEC2 Webサーバーがあります。すべてのサーバーはCloudFormationで構成されています。

X-Forwarded-Forヘッダーをログに記録するようにApacheのmod_rpafを構成したいと思います(LogFormatを変更できますが、これは簡単にPHPまたはApacheエラーログに変換されません。RPAFが最も近いです。私たちのためのソリューション)。

私の知る限り、ELBの設計方法は、ELBが構成された各AZに「足」を持っていることを意味し、ELBが分解または再作成されると、これが変わる可能性があります。

Ubuntu 12.04のリポジトリのmod_rpafのバージョンは、ProxyIPSディレクティブのCIDR表記を許可するように更新されていないようです。理論的には、ELBのIPアドレスは3つのパブリックサブネット内の任意のアドレスにすることができます。

残りの1つの解決策は、インスタンスのUserDataによって生成されたhieradataを使用して、Puppetを介してモジュールを構成することです。 CloudFormationテンプレート内の参照と変数をある程度補間できることは知っていますが、効果的に言うことができるかどうかはわかりません"このELBのこのサブネットのプライベートIPアドレスを教えてください"

4
Craig Watson

残念ながら違います。私はこれについてAWSソリューションエンジニアと行ったり来たりしており、現在ELBの内部IPをクエリする方法はありません。現在、ログファイルを削って見つけています。

5
Jason Floyd

ELB「LAMP-Prod」の内部IPを取得するために使用するコマンドの下で、同じ問題が発生しました

aws ec2 describe-network-interfaces --filters "Name=description,Values=ELB LAMP-Prod" |grep -wE 'Description|PrivateIpAddress'

またはJQを使用し、ELB名を指定する必要なし

 aws ec2 describe-network-interfaces --filters Name=requester-id,Values='Amazon-elb' | jq -r '.NetworkInterfaces[].PrivateIpAddresses[].PrivateIpAddress'
35
Deepak Deore

ElbのプライベートIPアドレスを取得する場合は、ec2ダッシュボードのネットワークとセキュリティでネットワークインターフェイスを確認してください。

9
JasdeepSingh

JQ解析バージョン、FYIのみ。

aws ec2 describe-network-interfaces --filters "Name=description,Values=ELB your-elb-name" --output json | jq ".NetworkInterfaces[].PrivateIpAddresses[].PrivateIpAddress"
7
BlackPioter