# Zend_Service_Amazon_Ec2: Reserved Instances

With Amazon EC2 Reserved Instances, you can make a low one-time payment for each instance to reserve and receive a significant discount on the hourly usage charge for that instance.

Amazon EC2 Reserved Instances are based on instance type and location (region and Availability Zone) for a specified period of time (e.g., 1 year or 3 years) and are only available for Linux or UNIX instances.

## How Reserved Instances are Applied

Reserved Instances are applied to instances that meet the type/location criteria during the specified period. In this example, a user is running the following instances:

- (4) m1.small instances in Availability Zone us-east-1a

- (4) c1.medium instances in Availability Zone us-east-1b

- (2) c1.xlarge instances in Availability Zone us-east-1b

The user then purchases the following Reserved Instances.

- (2) m1.small instances in Availability Zone us-east-1a

- (2) c1.medium instances in Availability Zone us-east-1a

- (2) m1.xlarge instances in Availability Zone us-east-1a

Amazon EC2 applies the two m1.small Reserved Instances to two of the instances in Availability Zone us-east-1a. Amazon EC2 doesn't apply the two c1.medium Reserved Instances because the c1.medium instances are in a different Availability Zone and does not apply the m1.xlarge Reserved Instances because there are no running m1.xlarge instances.

## Reserved Instances Usage

### Describes Reserved Instances that you purchased

`describeInstances()` will return information about a reserved instance or instances that you purchased.

`describeInstances()` returns a multi-demential array that contains reservedInstancesId, instanceType, availabilityZone, duration, fixedPrice, usagePrice, productDescription, instanceCount and state.

    $ec2_instance = new Zend_Service_Amazon_Ec2_Instance_Reserved('aws_key',
                                                         'aws_secret_key');
    $return = $ec2_instance->describeInstances('instanceId');

### Describe current Reserved Instance Offerings available

`describeOfferings()` Describes Reserved Instance offerings that are available for purchase. With Amazon EC2 Reserved Instances, you purchase the right to launch Amazon EC2 instances for a period of time (without getting insufficient capacity errors) and pay a lower usage rate for the actual time used.

`describeOfferings()` returns a multi-demential array that contains reservedInstancesId, instanceType, availabilityZone, duration, fixedPrice, usagePrice and productDescription.

    $ec2_instance = new Zend_Service_Amazon_Ec2_Instance_Reserved('aws_key',
                                                         'aws_secret_key');
    $return = $ec2_instance->describeOfferings();

### Turn off CloudWatch Monitoring on an Instance(s)

`purchaseOffering()` Purchases a Reserved Instance for use with your account. With Amazon EC2 Reserved Instances, you purchase the right to launch Amazon EC2 instances for a period of time (without getting insufficient capacity errors) and pay a lower usage rate for the actual time used.

`purchaseOffering()` returns the reservedInstanceId.

    $ec2_instance = new Zend_Service_Amazon_Ec2_Instance_Reserved('aws_key',
                                                         'aws_secret_key');
    $return = $ec2_instance->purchaseOffering('offeringId', 'instanceCount');