如何使用ELBV2注册EC2实例?

时间:2017-02-22 15:28:21

标签: powershell amazon-web-services amazon-ec2

我正在尝试使用ELBV2注册新的EC2实例。我正在尝试使用AWSPowershell模块但无法使其工作。

foreach ($products as $value) {
    echo "<li>". $value['product'] ." (". $value['number'] .")</li>";
}

错误是:

$InstanceId = (Invoke-WebRequest 'http://169.254.169.254/latest/meta-data/instance-id').Content
Register-ELB2Target -TargetGroupArn 'arn:etc...' -Target $InstanceID

我已经检查了文档,并且可以看到它也可以使用端口(可选)。尝试添加端口,但仍然没有运气。

2 个答案:

答案 0 :(得分:4)

您没有正确创建TargetDescription对象,它应该是:

$thisInstance = New-Object Amazon.ElasticLoadBalancingV2.Model.TargetDescription
$thisInstance.Id = $instanceId
$thisInstance.Port = 80

对于到此处寻找简单答案的其他人,我们使用以下脚本为实例在部署新软件包时向ALB注册:

Set-DefaultAWSRegion "ap-southeast-2"

# work out the id and load balancer for this instance
$instanceId = (wget -UseBasicParsing "http://169.254.169.254/latest/meta-data/instance-id").Content
$targetGroupArn = (Get-EC2Tag -Filter @{Name="resource-id"; Values=$instanceId}, @{Name="key";Values="<name of key>"}).Value # instances have the alb arn tagged in when created by an autoscaling group

$thisInstance = New-Object Amazon.ElasticLoadBalancingV2.Model.TargetDescription
$thisInstance.Id = $instanceId
$thisInstance.Port = 80

write-host "Adding $instanceId to $targetGroupArn"

# register instace with ALB
Register-ELB2Target -TargetGroupArn $targetGroupArn -Targets @( $thisInstance ) -Force

write-host "Done"

答案 1 :(得分:0)

基本上,它与@CamM的答案相同,但语法较短:

Register-ELB2Target -TargetGroupArn $targetGroupArn -Target @{ Id = $instanceId; Port = 80 }