2014-07-09 5 views
1

Je souhaite utiliser le nouveau type de volume "gp2" comme volume de démarrage pour mes instances Windows, avec une AMI Windows prête à l'emploi d'Amazon (par exemple ami-527b823a) et le SDK AWS pour .NET (v2.1.7 - en date du 9 juillet 2014). Comment configurer ma requête run-instances?Comment puis-je configurer un volume de démarrage gp2 pour mes instances Windows EC2?

Basé sur the post on the AWS blog, j'ai essayé une mise BlockDeviceMapping:

new RunInstancesRequest { 
    ... 
    BlockDeviceMappings = { 
     BlockDeviceMapping { 
      DeviceName = "sda1", 
      Ebs = new EbsBlockDevice { VolumeType = VolumeType.Gp2 } 
     }, 
     new BlockDeviceMapping { 
      DeviceName = "xvdf", 
      Ebs = new EbsBlockDevice { 
       SnapshotId = SNAPSHOT_ID 
       DeleteOnTermination = true, 
       VolumeType = VolumeType.Gp2 
      } 
     } 
     ... 
    } 
} 

Mais cela ne fonctionne pas, et je me suis une exception sans surprise:

Amazon.EC2.AmazonEC2Exception: The device 'sda1' is used in more than one 
block-device mapping ---> System.Net.WebException: The remote server 
returned an error: (400) Bad Request. 
    at System.Net.HttpWebRequest.GetResponse() 
    ... 

Est-il possible de définir la chaussure (root) volume de mes instances Windows à gp2? Ou dois-je attendre une version ultérieure du SDK?

+0

Juste pour un contrôle de santé d'esprit, êtes-vous sûr êtes seulement en train de créer 1 BlockDeviceMapping pour le volume racine? –

+0

@HyperAnthony Oui, j'en suis certain. Dans mon code de production utilisant des volumes EBS "standard" (que j'essaie de modifier), je ne spécifie même pas le périphérique racine dans RunInstancesRequest, seulement le second périphérique "xvdf". –

+0

Pouvez-vous utiliser l'une des AMI Windows 2012R2, déjà configurées avec un volume GP2? Vous pouvez obtenir une liste des AMI disponibles avec la commande suivante (en supposant que vous avez installé AWS Tools pour Windows Powershell) - Get-EC2ImageByName -Noms Windows_Server-2012-R2_RTM-English-64Bit-GP2 * –

Répondre

2

En utilisant le code suivant et la version 2.1.7 du SDK AWS pour .NET, j'ai pu lancer avec succès avec un volume racine EBS GP2:

BlockDeviceMapping mapping = new BlockDeviceMapping 
{ 
    DeviceName = "/dev/sda1", 
    Ebs = new EbsBlockDevice 
    { 
     VolumeType = VolumeType.Gp2, 
     VolumeSize = 30 
    } 
}; 
var request = new RunInstancesRequest 
{ 
    BlockDeviceMappings = { mapping }, 
    ImageId = "ami-527b823a", 
    InstanceType = InstanceType.M1Small, 
    MinCount = 1, 
    MaxCount =1 
}; 
var ec2Client = new AmazonEC2Client(RegionEndpoint.USEast1); 
ec2Client.RunInstances(request); 
+0

Ça marche aussi pour moi. Fait intéressant, il semble que DeviceName est la chose clé ici. "sda1" se lève, mais "/ dev/sda1" passe à travers. Merci beaucoup! –

Questions connexes