2017-06-21 53 views
1

我已經創建了一個基本服務器映像的AMI,我希望在必要時進行部署。此基礎映像具有3個必需的磁盤,它們將成爲任何其他服務器版本的一部分。但是,額外的存儲要求在創建時會因實例而異。我可以創建並附加這個額外的存儲,但沒有問題,但我無法指定我希望在EC2實例終止時刪除這些卷,並且它們當前設置爲false。如何使用PowerShell配置EBS以終止刪除

$NewInstance = New-EC2Image -ImageID ami-image -InstanceType t2.medium ... 
$NewInstanceID = $NewInstance.Instances[0].Id; 
$NewVolume = New-EC2Volume -Size 200 -AvailabilityZone "my-fave-az" -VolumeType "gp2"; 
Add-EC2Volume -InstanceId $NewInstanceID -VolumeId $NewVolume.VolumeId -Device "xvdj"; 

這一切運作良好,但我想不通,因爲屬性被埋葬在deviceMappings.Ebs如何使用Edit-EC2InstanceAttribute要麼

一)上面創建的腳本

B)設置DeleteOnTermination。 DeleteOnTermination,我無法弄清楚如何使用這個commandlet訪問該屬性。

回答

1

在嘗試了幾種不同的模式之後,它對我來說只需在-BlockDeviceMapping參數中添加一個哈希表數組即可。

我已經嘗試了幾種不同的方法,如創建BlockDeviceMapping對象的數組

$DeviceMappings = @(); 
$charmap=100; 
foreach($Disk in $Disks) 
{ 
    $volume = New-Object Amazon.EC2.Model.EbsBlockDevice; 
    $volume.VolumeSize = $Disk.Size; 
    $volume.VolumeType = "gp2"; 
    $volume.DeleteOnTermination = $true; 

    $DeviceMapping = new-object Amazon.EC2.Model.BlockDeviceMapping; 
    $DeviceMapping.DeviceName = "xvd$([char]$charmap)"; 
    $DeviceMapping.Ebs = $volume; 
    $charmap++; 
} 

,但沒有奏效。

什麼結束了工作是這樣的

$DeviceMappings = @(); 
    $charmap = 100; 
    foreach($Disk in $Disks) 
    { 
     $volume = @{DeviceName="xvd$([char]$charmap)";[email protected]{VolumeSize=$Disk.Size;DeleteOnTermination="true";VolumeType="gp2"}}; 
     $DeviceMappings += $volume; 
     $charmap++; 
    }