自动缩放中的EBS卷未附加

时间:2017-10-02 15:49:28

标签: amazon-web-services amazon-cloudformation

我正在尝试在自动调节环境中创建2 ebs卷,我将启动2个实例。

目前,如果没有"可用"此用户数据ps脚本能够检查并进入else循环。体积。但它只创建了2个卷而不是4个因为(每个实例2个)。我需要睡觉吗? 2 ebs卷如何附加到通过自动缩放启动的2个独立实例?

   $instanceId = Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/instance-id;                         

   $available = Get-EC2Volume -Filter @{ Name="status"; Values="available" }

   if($available) {
       Get-EC2Volume -Filter @{ Name="status"; Values="available" } >> c:\cfn\scripts\volumeinfo.txt;          
       $vid = Get-Content "c:\cfn\scripts\volumeinfo.txt" | select-string volumeId | Foreach-Object { $_.ToString().split(':')[1] -replace '\s','' }
       Add-Content -Path c:\cfn\scripts\info.txt -Value $vid
       [Byte] $c = [Char] 'd';
       foreach ($volumeid in $vid) {                                                 
                    Add-Content -Path c:\cfn\scripts\info.txt -Value $volumeid                                                       
                    $instanceId = Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/instance-id 
                    Add-EC2Volume -InstanceId $instanceId -VolumeId $volumeid -Device "/dev/sd$([Char] $c++)" }
       Get-Disk | Where-Object IsOffline –Eq $True | Set-Disk –IsOffline $False             

  } else {
      echo "Else Loop" >> c:\cfn\scripts\info.txt;
      $instanceId = Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/instance-id
      $rgn = Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/placement/availability-zone
      $v = New-EC2Volume -AvailabilityZone $rgn -Size 50 -VolumeType gp2                  
      Add-EC2Volume -Device /dev/sdb -InstanceId $instanceId -VolumeId $v.VolumeId
      Add-Content -Path c:\cfn\scripts\info.txt -Value $v.VolumeId

      $v = New-EC2Volume -AvailabilityZone $rgn -Size 50 -VolumeType gp2                  
      Add-EC2Volume -Device /dev/sdc -InstanceId $instanceId -VolumeId $v.VolumeId
      Add-Content -Path c:\cfn\scripts\info.txt -Value $v.VolumeId        
      Get-Disk | Where-Object IsOffline –Eq $True | Set-Disk –IsOffline $False          

1 个答案:

答案 0 :(得分:0)

可以添加Get-EC2Volume并等待状态变为available,然后将其附加到EC2实例。 http://docs.aws.amazon.com/powershell/latest/reference/Index.html