TigerZF
🌐Español

64.5. Zend_Service_Amazon_Ec2: Instances

64.5.1. Tipos de instancia

Las instancias de Amazon EC2 se agrupan en dos familias: estándar y High-CPU. Las instancias estándar tienen relaciones de memoria a CPU adecuadas para la mayoría de las aplicaciones de propósito general; las instancias High-CPU tienen proporcionalmente más recursos de CPU que memoria (RAM) y son adecuadas para aplicaciones que exigen un uso intensivo de cómputo. Al seleccionar los tipos de instancia, quizás quiera usar tipos de instancia menos potentes para sus instancias de servidor web y tipos de instancia más potentes para sus instancias de base de datos. Adicionalmente, quizás quiera ejecutar tipos de instancia CPU para tareas de procesamiento de datos intensivas en CPU.

Una de las ventajas de EC2 es que se paga por hora de instancia, lo que hace conveniente y económico probar el rendimiento de su aplicación en diferentes familias y tipos de instancia. Una buena forma de determinar la familia y el tipo de instancia más adecuados es lanzar instancias de prueba y medir el rendimiento de su aplicación.

[Nota] Tipos de instancia

Los tipos de instancia se definen como constantes en el código. La columna ocho de la tabla es el nombre de la constante definida

Tabla 64.10. Tipos de instancia disponibles

Tipo CPU Memoria Almacenamiento Plataforma E/S Nombre Nombre de la constante
Small

1 unidad de cómputo EC2 (1 núcleo virtual con 1 unidad de cómputo EC2)

1.7 GB

160 GB de almacenamiento de instancia (150 GB más 10 GB de partición raíz)

32 bits

Moderada

m1.small

Zend_Service_Amazon_Ec2_Instance::SMALL
Large

4 unidades de cómputo EC2 (2 núcleos virtuales con 2 unidades de cómputo EC2 cada uno)

7.5 GB

850 GB de almacenamiento de instancia (2 x 420 GB más 10 GB de partición raíz)

64 bits

Alta

m1.large

Zend_Service_Amazon_Ec2_Instance::LARGE
Extra Large

8 unidades de cómputo EC2 (4 núcleos virtuales con 2 unidades de cómputo EC2 cada uno)

15 GB

1,690 GB de almacenamiento de instancia (4 x 420 GB más 10 GB de partición raíz)

64 bits

Alta

m1.xlarge

Zend_Service_Amazon_Ec2_Instance::XLARGE
High-CPU Medium

5 unidades de cómputo EC2 (2 núcleos virtuales con 2.5 unidades de cómputo EC2 cada uno)

1.7 GB

350 GB de almacenamiento de instancia (340 GB más 10 GB de partición raíz)

32 bits

Moderada

c1.medium

Zend_Service_Amazon_Ec2_Instance::HCPU_MEDIUM
High-CPU Extra Large

20 unidades de cómputo EC2 (8 núcleos virtuales con 2.5 unidades de cómputo EC2 cada uno)

7 GB

1,690 GB de almacenamiento de instancia (4 x 420 GB más 10 GB de partición raíz)

64 bits

Alta

c1.xlarge

Zend_Service_Amazon_Ec2_Instance::HCPU_XLARGE

64.5.2. Ejecutar instancias de Amazon EC2

Esta sección describe los métodos de operación para mantener las instancias de Amazon EC2.

Ejemplo 64.13. Iniciar nuevas instancias Ec2

run lanzará un número especificado de instancias EC2. run recibe un array de parámetros para iniciar, a continuación se muestra una tabla con los valores válidos.

Tabla 64.11. Opciones válidas de run

Nombre Descripción Obligatorio
imageId

ID de la AMI con la que lanzar las instancias.

minCount

Número mínimo de instancias a lanzar. Por defecto: 1

No

maxCount

Número máximo de instancias a lanzar. Por defecto: 1

No

keyName

Nombre del par de claves con el que lanzar las instancias. Si no proporciona una clave, todas las instancias serán inaccesibles.

No

securityGroup

Nombres de los grupos de seguridad con los que asociar las instancias.

No

userData

Los datos de usuario disponibles para las instancias lanzadas. Estos no deben estar codificados en Base64.

No

instanceType

Especifica el tipo de instancia. Por defecto: m1.small

No

placement

Especifica la zona de disponibilidad en la que lanzar la(s) instancia(s). Por defecto, Amazon EC2 selecciona una zona de disponibilidad por usted.

No

kernelId

El ID del kernel con el que lanzar la instancia.

No

ramdiskId

El ID del disco RAM con el que lanzar la instancia.

No

blockDeviceVirtualName

Especifica el nombre virtual a asignar al nombre de dispositivo correspondiente. Por ejemplo: instancestore0

No

blockDeviceName

Especifica el dispositivo al que está asignando un nombre virtual. Por ejemplo: sdb

No

monitor

Activar la monitorización de instancia de AWS CloudWatch

No


run devolverá información sobre cada instancia que se está iniciando.

$ec2_instance = new Zend_Service_Amazon_Ec2_Instance('aws_key',
                                                     'aws_secret_key');
$return = $ec2_instance->run(array('imageId' => 'ami-509320',
                                   'keyName' => 'myKey',
                                   'securityGroup' => array('web',
                                                            'default')));

Ejemplo 64.14. Reiniciar instancias Ec2

reboot reiniciará una o más instancias.

Esta operación es asíncrona; únicamente encola una solicitud para reiniciar la(s) instancia(s) especificada(s). La operación tendrá éxito si las instancias son válidas y pertenecen al usuario. Las solicitudes para reiniciar instancias terminadas se ignoran.

reboot devuelve un booleano TRUE o FALSE

$ec2_instance = new Zend_Service_Amazon_Ec2_Instance('aws_key',
                                                     'aws_secret_key');
$return = $ec2_instance->reboot('instanceId');

Ejemplo 64.15. Terminar instancias Ec2

terminate apaga una o más instancias. Esta operación es idempotente; si termina una instancia más de una vez, cada llamada tendrá éxito.

terminate devuelve un booleano TRUE o FALSE

$ec2_instance = new Zend_Service_Amazon_Ec2_Instance('aws_key',
                                                     'aws_secret_key');
$return = $ec2_instance->terminate('instanceId');

[Nota] Instancias terminadas

Las instancias terminadas seguirán siendo visibles después de la terminación (aproximadamente una hora).

64.5.3. Utilidades de instancias de Amazon

En esta sección descubrirá cómo obtener información, la salida de consola y ver si una instancia contiene un código de producto.

Ejemplo 64.16. Describir instancias

describe devuelve información sobre las instancias que usted posee.

Si especifica uno o más ID de instancia, Amazon EC2 devuelve información para esas instancias. Si no especifica IDs de instancia, Amazon EC2 devuelve información para todas las instancias relevantes. Si especifica un ID de instancia no válido, se devuelve un error. Si especifica una instancia que no posee, no se incluirá en los resultados devueltos.

describe devolverá un array que contiene información sobre la instancia.

$ec2_instance = new Zend_Service_Amazon_Ec2_Instance('aws_key',
                                                     'aws_secret_key');
$return = $ec2_instance->describe('instanceId');

[Nota] Instancias terminadas

Las instancias recientemente terminadas podrían aparecer en los resultados devueltos. Este intervalo es habitualmente inferior a una hora. Si no desea que se devuelvan instancias terminadas, pase un segundo variable booleana TRUE a describe y las instancias terminadas se ignorarán.

Ejemplo 64.17. Describir instancias por Image Id

describeByImageId es funcionalmente igual a describe pero solo devolverá las instancias que estén usando el imageId proporcionado.

describeByImageId devolverá un array que contiene información sobre las instancias que se iniciaron con el imageId pasado

$ec2_instance = new Zend_Service_Amazon_Ec2_Instance('aws_key',
                                                     'aws_secret_key');
$return = $ec2_instance->describeByImageId('imageId');

[Nota] Instancias terminadas

Las instancias recientemente terminadas podrían aparecer en los resultados devueltos. Este intervalo es habitualmente inferior a una hora. Si no desea que se devuelvan instancias terminadas, pase una segunda variable booleana TRUE a describe y las instancias terminadas se ignorarán.

Ejemplo 64.18. Recuperar la salida de consola

consoleOutput recupera la salida de consola de la instancia especificada.

La salida de consola de la instancia se almacena en búfer y se publica poco después del arranque, reinicio y terminación de la instancia. Amazon EC2 conserva la salida más reciente de 64 KB, que estará disponible durante al menos una hora tras la publicación más reciente.

consoleOutput devuelve un array que contiene el instanceId, el timestamp de la última salida y la output de la consola.

$ec2_instance = new Zend_Service_Amazon_Ec2_Instance('aws_key',
                                                     'aws_secret_key');
$return = $ec2_instance->consoleOutput('instanceId');

Ejemplo 64.19. Confirmar el código de producto en una instancia

confirmProduct devuelve TRUE si el código de producto especificado está asociado a la instancia especificada. La operación devuelve FALSE si el código de producto no está asociado a la instancia.

La operación confirmProduct solo puede ser ejecutada por el propietario de la AMI. Esta característica es útil cuando el propietario de una AMI está ofreciendo soporte y desea verificar si la instancia de un usuario es elegible.

$ec2_instance = new Zend_Service_Amazon_Ec2_Instance('aws_key',
                                                     'aws_secret_key');
$return = $ec2_instance->confirmProduct('productCode', 'instanceId');

Ejemplo 64.20. Activar la monitorización de CloudWatch en una o más instancias

monitor devuelve la lista de instancias y su estado actual de la monitorización de CloudWatch. Si la instancia no tiene actualmente la monitorización habilitada, se activará.

$ec2_instance = new Zend_Service_Amazon_Ec2_Instance('aws_key',
                                                     'aws_secret_key');
$return = $ec2_instance->monitor('instanceId');

Ejemplo 64.21. Desactivar la monitorización de CloudWatch en una o más instancias

monitor devuelve la lista de instancias y su estado actual de la monitorización de CloudWatch. Si la instancia tiene actualmente la monitorización habilitada, se desactivará.

$ec2_instance = new Zend_Service_Amazon_Ec2_Instance('aws_key',
                                                     'aws_secret_key');
$return = $ec2_instance->unmonitor('instanceId');