13

Amazon AWS ELB コマンド ライン ツールを使用しています。特定の Elastic Load Balancer (ELB) に接続されているインスタンスを見つける方法はありますか?

4

11 に答える 11

10

2013/12/18:これを更新し、リンクが切れているので!

新しいAWSCLIツールをインストールしました。

$ pip install awscli

次に実行しました:

$ aws configure                                                                                                                                                
AWS Access Key ID [None]: my-key
AWS Secret Access Key [None]: my-secret
Default region name [None]: us-east-1
Default output format [None]:

このデータはに保存され~/.aws/configます。

次に、次のようにロードバランサーに接続されているインスタンスを見つけることができます。

$ aws elb describe-load-balancers --load-balancer-name "my-name"
{
    "LoadBalancerDescriptions": [
        {
            "Subnets": [],
            "CanonicalHostedZoneNameID": "ID",
            "CanonicalHostedZoneName": "my-name-foo.us-east-1.elb.amazonaws.com",
            "ListenerDescriptions": [
                {
                    "Listener": {
                        "InstancePort": 80,
                        "LoadBalancerPort": 80,
                        "Protocol": "HTTP",
                        "InstanceProtocol": "HTTP"
                    },
                    "PolicyNames": []
                },
                {
                    "Listener": {
                        "InstancePort": 80,
                        "SSLCertificateId": "arn:aws:iam::x:server-certificate/x-ssl-prod",
                        "LoadBalancerPort": 443,
                        "Protocol": "HTTPS",
                        "InstanceProtocol": "HTTP"
                    },
                    "PolicyNames": [
                        "AWSConsole-SSLNegotiationPolicy-api-production"
                    ]
                }
            ],
            "HealthCheck": {
                "HealthyThreshold": 10,
                "Interval": 30,
                "Target": "HTTP:80/healthy.php",
                "Timeout": 5,
                "UnhealthyThreshold": 2
            },
            "BackendServerDescriptions": [],
            "Instances": [
                {
                    "InstanceId": "i-FIRST-INSTANCEID"
                },
                {
                    "InstanceId": "i-SECOND-INSTANCEID"
                }
            ],
            "DNSName": "my-name-foo.us-east-1.elb.amazonaws.com",
            "SecurityGroups": [],
            "Policies": {
                "LBCookieStickinessPolicies": [],
                "AppCookieStickinessPolicies": [],
                "OtherPolicies": [
                    "AWSConsole-SSLNegotiationPolicy-my-name"
                ]
            },
            "LoadBalancerName": "my-name",
            "CreatedTime": "2013-08-05T16:55:22.630Z",
            "AvailabilityZones": [
                "us-east-1d"
            ],
            "Scheme": "internet-facing",
            "SourceSecurityGroup": {
                "OwnerAlias": "amazon-elb",
                "GroupName": "amazon-elb-sg"
            }
        }
    ]
}

データはにありLoadBalancerDescriptions.Instancesます。

私のロードバランサーは呼び出されmy-nameます—これは作成時に選択した名前です。

以下の古い答え!

私はCLIツールに精通していませんが、APIを使用しました。

これらの2つのリクエストを確認します。

CLIツールにはおそらくこれらに似たものがありますか?

HTH!

于 2010-10-24T23:51:56.607 に答える
2

すべての ELB とアタッチされたインスタンスを確認したい場合は、次のよう にJMESPathを使用します。

aws elb describe-load-balancers --query "LoadBalancerDescriptions[*].{ID:LoadBalancerName,InstanceId:Instances[*].InstanceId}[*]. {ELB:ID,InstanceId:InstanceId[*]}" --output=json

結果

[
    {
        "ELB": "my_name",
        "InstanceId": [
            "i-0cc72"
        ]
    },
    {
        "ELB": "my_name2",
        "InstanceId": [
            "i-02ff5f",
            "i-09e467"
        ]
    }
]

ELB の名前を知っていて、何が添付されているかを確認したい場合は、次のように JMESPath を使用します。

aws elb describe-load-balancers --load-balancer-name "my_name" --query "LoadBalancerDescriptions[].{ID:LoadBalancerName,InstanceId:Instances[].InstanceId}[].{ELB:ID,InstanceId:InstanceId[]}" --output=json

結果:

[
    {
        "ELB": "my_name",
        "InstanceId": [
            "i-02ff5f72",
            "i-09e46743"
        ]
    }
]
于 2016-02-15T15:50:13.570 に答える
1

INSTANCEID を実際のインスタンス ID に置き換えます

aws elb describe-load-balancers --query "LoadBalancerDescriptions[*].{ID:LoadBalancerName,InstanceId:Instances[?InstanceId=='INSTANCEID'].InstanceId}[*].{ID:ID,InstanceId:InstanceId[0]}" --output=text | grep INSTANCEID | awk '{print $1}'

于 2016-01-07T12:29:19.410 に答える
0

node.js では、 を使用してこれを行うことができますaws-sdk

var AWS = require('aws-sdk')
var options = {
  accessKeyId: 'accessKeyId',
  secretAccessKey: 'secretAccessKey',
  region: 'region'
}
var elb = new AWS.ELB(options)

elb.describeLoadBalancers({LoadBalancerNames: ['elbName']}, function(err, data) {
  if (err) {
    console.log('err: ', err)
  }
  else {
    console.log('data: ', data.LoadBalancerDescriptions)
  }
})

data.LoadBalancerDescriptionsは配列であり、配列内の各要素はInstances、インスタンス ID を持つプロパティを持つオブジェクトです。

于 2016-04-27T09:59:48.843 に答える
-1

最初elb-describe-lbsに、ロード バランサーとその名前のリストを取得します。

次にelb-describe-instance-health <LB_NAME>、そのロード バランサーの背後にあるインスタンスのリストを取得します。LB_NAME は、 の出力の 2 列目の値ですelb-describe-lbs

于 2013-01-07T19:03:30.110 に答える
-2

いくつかの bash パイプで AWS コマンドライン ツールを使用できます。

elb-describe-instance-health loadbalancer_name --region eu-west-1 | awk '{ print $2 }' | xargs ec2-describe-instances --region eu-west-1 | grep ^INSTANCE | awk '{ print $4 }'

これにより、ELB にアタッチされたすべてのインスタンスのパブリック DNS 名が得られます。awk 列をそれぞれ変更して、他の詳細を取得できます。

于 2014-02-04T15:06:05.907 に答える