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アドレスを教えてください"。
残念ながら違います。私はこれについてAWSソリューションエンジニアと行ったり来たりしており、現在ELBの内部IPをクエリする方法はありません。現在、ログファイルを削って見つけています。
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'
ElbのプライベートIPアドレスを取得する場合は、ec2ダッシュボードのネットワークとセキュリティでネットワークインターフェイスを確認してください。
JQ解析バージョン、FYIのみ。
aws ec2 describe-network-interfaces --filters "Name=description,Values=ELB your-elb-name" --output json | jq ".NetworkInterfaces[].PrivateIpAddresses[].PrivateIpAddress"