python - you - ¿Cómo iniciar la instancia de EC2 con Boto, especificando el tamaño de EBS?
us east virginia aws (2)
Primero debe crear una asignación de dispositivo de bloque:
dev_sda1 = boto.ec2.blockdevicemapping.EBSBlockDeviceType()
dev_sda1.size = 50 # size in Gigabytes
bdm = boto.ec2.blockdevicemapping.BlockDeviceMapping()
bdm[''/dev/sda1''] = dev_sda1
Después de esto, puede dar el mapa del dispositivo de bloque en su llamada run_instances
:
reservation = ec2.run_instances( image_id=AMI_ID,
key_name=EC2_KEY_HANDLE,
instance_type=INSTANCE_TYPE,
security_groups = [ SECGROUP_HANDLE, ],
block_device_mappings = [bdm])
Lamentablemente, esto no está muy bien documentado , pero el ejemplo se puede encontrar en el código fuente .
Estoy usando boto / python para lanzar una nueva instancia de EC2 que arranca desde un volumen de EBS. En el momento en que lanzo la instancia, me gustaría sobrescribir el tamaño predeterminado del volumen de EBS de arranque.
No encontré ningún método o parámetro de boto que pueda encajar en mi código de inicio:
ec2 = boto.connect_ec2( ACCESS_KEY, SECRET_KEY, region=region )
reservation = ec2.run_instances( image_id=AMI_ID,
key_name=EC2_KEY_HANDLE,
instance_type=INSTANCE_TYPE,
security_groups = [ SECGROUP_HANDLE, ] )
Esta página web muestra cómo aumentar el tamaño del volumen EBS de una instancia EC2 en ejecución usando herramientas de línea de comandos, pero me gustaría usar boto en el momento en que se especifica la instancia EC2:
También puede usar CloudFormation , que se utiliza para documentar y automatizar su entorno. Puede consultar la plantilla para la definición de ESB en: https://s3.amazonaws.com/cloudformation-templates-us-east-1/EC2WithEBSSample.template
"Resources" : {
"Ec2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"AvailabilityZone" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "TestAz" ]},
"SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ],
"KeyName" : { "Ref" : "KeyName" },
"ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]},
"Volumes" : [
{ "VolumeId" : { "Ref" : "NewVolume" },
"Device" : "/dev/sdk"
}
]
}
},
...
"NewVolume" : {
"Type" : "AWS::EC2::Volume",
"Properties" : {
"Size" : "100",
"AvailabilityZone" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "TestAz" ]}
}
}
Luego puede usar Boto CloudFormation API para implementar su entorno.