# AWS SDK for Ruby - Version 1 [![Build Status](https://travis-ci.org/aws/aws-sdk-ruby.svg?branch=aws-sdk-v1)](https://travis-ci.org/aws/aws-sdk-ruby)

This is version 1 of the AWS SDK for Ruby. **Version 2 can be found in the
[master branch](https://github.com/aws/aws-sdk-ruby).**

## Installation

Version 1 of the AWS SDK for Ruby is available on rubygems.org as two gems:

* `aws-sdk-v1`
* `aws-sdk`

This project uses [semantic versioning](http://semver.org/). If you are using the
`aws-sdk` gem, we strongly recommend you specify a version constraint in
your Gemfile. Version 2 of the Ruby SDK will not be backwards compatible
with version 1.

    # version constraint
    gem 'aws-sdk', '< 2'

    # or use the v1 gem
    gem 'aws-sdk-v1'

If you use the `aws-sdk-v1` gem, you may also load the v2 Ruby SDK in the
same process; The v2 Ruby SDK uses a different namespace, making this possible.

    # when the v2 SDK ships, you will be able to do the following
    gem 'aws-sdk', '~> 2.0'
    gem 'aws-sdk-v1'

If you are currently using v1 of `aws-sdk` and you update to `aws-sdk-v1`, you
may need to change how you require the Ruby SDK:

    require 'aws-sdk-v1' # not 'aws-sdk'

If you are using a version of Ruby older than 1.9, you may encounter problems with Nokogiri.
The authors dropped support for Ruby 1.8.x in Nokogiri 1.6. To use aws-sdk, you'll also have
to install or specify a version of Nokogiri prior to 1.6, like this:

    gem 'nokogiri', '~> 1.5.0'

## Basic Configuration

You need to provide your AWS security credentials and choose a default region.

```
AWS.config(access_key_id: '...', secret_access_key: '...', region: 'us-west-2')
```

You can also specify these values via `ENV`:

    export AWS_ACCESS_KEY_ID='...'
    export AWS_SECRET_ACCESS_KEY='...'
    export AWS_REGION='us-west-2'

## Basic Usage

Each service provides a service interface and a client.

```
ec2 = AWS.ec2 #=> AWS::EC2
ec2.client #=> AWS::EC2::Client
```

The client provides one method for each API operation.  The client methods
accept a hash of request params and return a response with a hash of
response data. The service interfaces provide a higher level abstration built using the client.

**Example: list instance tags using a client**

```
resp = ec2.client.describe_tags(filters: [{ name: "resource-id", values: ["i-12345678"] }])
resp[:tag_set].first
#=> {:resource_id=>"i-12345678", :resource_type=>"instance", :key=>"role", :value=>"web"}
```

**Example: list instance tags using the AWS::EC2 higher level interface**

```
ec2.instances['i-12345678'].tags.to_h
#=> {"role"=>"web"}
```

See the [API Documentation](http://docs.aws.amazon.com/AWSRubySDK/latest/frames.html) for more examples.

## Testing

All HTTP requests to live services can be globally mocked (e.g. from within the `spec_helper.rb` file):

```
AWS.stub!
```

## Links of Interest

* [API Documentation](http://docs.aws.amazon.com/AWSRubySDK/latest/frames.html)
* [Release Notes](http://aws.amazon.com/releasenotes/Ruby)
* [Issues](http://github.com/aws/aws-sdk-ruby/issues)
* [Forums](https://forums.aws.amazon.com/forum.jspa?forumID=125)
* [License](http://aws.amazon.com/apache2.0/)

## Supported Services

The SDK currently supports the following services:

       Class
       API Version
       AWS Service Name

       AWS::AutoScaling
       2011-01-01
       Auto Scaling

       AWS::CloudFormation
       2010-05-15
       AWS CloudFormation

       AWS::CloudFront
       2013-05-12
       Amazon CloudFront

       2013-08-26

       2013-09-27

       2013-11-11

       2013-11-22

       2014-01-31

       2014-05-31

       2014-10-21

       2014-11-06

       AWS::CloudSearch
       2011-02-01
       Amazon CloudSearch

       2013-01-01

       AWS::CloudTrail
       2013-11-01
       AWS CloudTrail

       AWS::CloudWatch
       2010-08-01
       Amazon CloudWatch

       AWS::DataPipeline
       2012-10-29
       AWS Data Pipeline

       AWS::DirectConnect
       2012-10-25
       AWS Direct Connect

       AWS::DynamoDB
       2011-12-05
       Amazon DynamoDB

       2012-08-10

       AWS::EC2
       2013-08-15
       Amazon Elastic Compute Cloud

       2013-10-01

       2013-10-15

       2014-02-01

       2014-05-01

       2014-09-01

       2014-10-01

       AWS::ElastiCache
       2013-06-15
       Amazon ElastiCache

       2014-03-24

       2014-07-15

       2014-09-30

       AWS::ElasticBeanstalk
       2010-12-01
       AWS Elastic Beanstalk

       AWS::ElasticTranscoder
       2012-09-25
       Amazon Elastic Transcoder

       AWS::ELB
       2012-06-01
       Elastic Load Balancing

       AWS::EMR
       2009-03-31
       Amazon Elastic MapReduce

       AWS::Glacier
       2012-06-01
       Amazon Glacier

       AWS::IAM
       2010-05-08
       AWS Identity and Access Management

       AWS::ImportExport
       2010-06-01
       AWS Import/Export

       AWS::Kinesis
       2013-12-02
       Amazon Kinesis

       AWS::OpsWorks
       2013-02-18
       AWS OpsWorks

       AWS::RDS
       2013-05-15
       Amazon Relational Database Service (Beta)

       2013-09-09

       2014-09-01

       AWS::Redshift
       2012-12-01
       Amazon Redshift

       AWS::Route53
       2012-12-12
       Amazon Route 53

       2013-04-01

       AWS::S3
       2006-03-01
       Amazon Simple Storage Service

       AWS::SimpleDB
       2009-04-15
       Amazon SimpleDB

       AWS::SimpleEmailService
       2010-12-01
       Amazon Simple E-mail Service

       AWS::SimpleWorkflow
       2012-01-25
       Amazon Simple Workflow Service

       AWS::SNS
       2010-03-31
       Amazon Simple Notifications Service

       AWS::SQS
       2012-11-05
       Amazon Simple Queue Service

       AWS::StorageGateway
       2012-06-30
       AWS Storage Gateway

       2013-06-30

       AWS::STS
       2011-06-15
       AWS Security Token Service

       AWS::Support
       2013-04-15
       AWS Support

## License

This SDK is distributed under the
[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0).

```no-highlight
Copyright 2012. Amazon Web Services, Inc. All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
```
