Class RightAws::AcfInterface
In: lib/acf/right_acf_interface.rb
Parent: RightAwsBase

RightAws::AcfInterface — RightScale Amazon‘s CloudFront interface

The AcfInterface class provides a complete interface to Amazon‘s CloudFront service.

For explanations of the semantics of each call, please refer to Amazon‘s documentation at developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=211

Example:

 acf = RightAws::AcfInterface.new('1E3GDYEOGFJPIT7XXXXXX','hgTHt68JY07JKUY08ftHYtERkjgtfERn57XXXXXX')

 list = acf.list_distributions #=>
   [{:status             => "Deployed",
     :domain_name        => "d74zzrxmpmygb.6hops.net",
     :aws_id             => "E4U91HCJHGXVC",
     :origin             => "my-bucket.s3.amazonaws.com",
     :cnames             => ["x1.my-awesome-site.net", "x1.my-awesome-site.net"]
     :comment            => "My comments",
     :last_modified_time => Wed Sep 10 17:00:04 UTC 2008 }, ..., {...} ]

 distibution = list.first

 info = acf.get_distribution(distibution[:aws_id]) #=>
   {:enabled            => true,
    :caller_reference   => "200809102100536497863003",
    :e_tag              => "E39OHHU1ON65SI",
    :status             => "Deployed",
    :domain_name        => "d3dxv71tbbt6cd.6hops.net",
    :cnames             => ["web1.my-awesome-site.net", "web2.my-awesome-site.net"]
    :aws_id             => "E2REJM3VUN5RSI",
    :comment            => "Woo-Hoo!",
    :origin             => "my-bucket.s3.amazonaws.com",
    :last_modified_time => Wed Sep 10 17:00:54 UTC 2008 }

 config = acf.get_distribution_config(distibution[:aws_id]) #=>
   {:enabled          => true,
    :caller_reference => "200809102100536497863003",
    :e_tag            => "E39OHHU1ON65SI",
    :cnames           => ["web1.my-awesome-site.net", "web2.my-awesome-site.net"]
    :comment          => "Woo-Hoo!",
    :origin           => "my-bucket.s3.amazonaws.com"}

 config[:comment] = 'Olah-lah!'
 config[:enabled] = false
 config[:cnames] << "web3.my-awesome-site.net"

 acf.set_distribution_config(distibution[:aws_id], config) #=> true

Methods

Included Modules

RightAwsBaseInterface

Constants

API_VERSION = "2008-06-30"
DEFAULT_HOST = 'cloudfront.amazonaws.com'
DEFAULT_PORT = 443
DEFAULT_PROTOCOL = 'https'
DEFAULT_PATH = '/'

Public Class methods

Create a new handle to a CloudFront account. All handles share the same per process or per thread HTTP connection to CloudFront. Each handle is for a specific account. The params have the following options:

  • :server: CloudFront service host, default: DEFAULT_HOST
  • :port: CloudFront service port, default: DEFAULT_PORT
  • :protocol: ‘http’ or ‘https’, default: DEFAULT_PROTOCOL
  • :multi_thread: true=HTTP connection per thread, false=per process
  • :logger: for log messages, default: RAILS_DEFAULT_LOGGER else STDOUT
  • :cache: true/false: caching for list_distributions method, default: false.
 acf = RightAws::AcfInterface.new('1E3GDYEOGFJPIT7XXXXXX','hgTHt68JY07JKUY08ftHYtERkjgtfERn57XXXXXX',
   {:multi_thread => true, :logger => Logger.new('/tmp/x.log')}) #=>  #<RightAws::AcfInterface::0xb7b3c30c>

Public Instance methods

Create a new distribution. Returns the just created distribution or RightAws::AwsError exception.

 acf.create_distribution('bucket-for-k-dzreyev.s3.amazonaws.com', 'Woo-Hoo!', true, ['web1.my-awesome-site.net'] ) #=>
   {:comment            => "Woo-Hoo!",
    :enabled            => true,
    :location           => "https://cloudfront.amazonaws.com/2008-06-30/distribution/E2REJM3VUN5RSI",
    :status             => "InProgress",
    :aws_id             => "E2REJM3VUN5RSI",
    :domain_name        => "d3dxv71tbbt6cd.6hops.net",
    :origin             => "my-bucket.s3.amazonaws.com",
    :cnames             => ["web1.my-awesome-site.net"]
    :last_modified_time => Wed Sep 10 17:00:54 UTC 2008,
    :caller_reference   => "200809102100536497863003"}

Delete a distribution. The enabled distribution cannot be deleted. Returns true on success or RightAws::AwsError exception.

 acf.delete_distribution('E2REJM3VUN5RSI', 'E39OHHU1ON65SI') #=> true

Get a distribution‘s information. Returns a distribution‘s information or RightAws::AwsError exception.

 acf.get_distribution('E2REJM3VUN5RSI') #=>
   {:enabled            => true,
    :caller_reference   => "200809102100536497863003",
    :e_tag              => "E39OHHU1ON65SI",
    :status             => "Deployed",
    :domain_name        => "d3dxv71tbbt6cd.6hops.net",
    :cnames             => ["web1.my-awesome-site.net", "web2.my-awesome-site.net"]
    :aws_id             => "E2REJM3VUN5RSI",
    :comment            => "Woo-Hoo!",
    :origin             => "my-bucket.s3.amazonaws.com",
    :last_modified_time => Wed Sep 10 17:00:54 UTC 2008 }

Get a distribution‘s configuration. Returns a distribution‘s configuration or RightAws::AwsError exception.

 acf.get_distribution_config('E2REJM3VUN5RSI') #=>
   {:enabled          => true,
    :caller_reference => "200809102100536497863003",
    :e_tag            => "E39OHHU1ON65SI",
    :cnames           => ["web1.my-awesome-site.net", "web2.my-awesome-site.net"]
    :comment          => "Woo-Hoo!",
    :origin           => "my-bucket.s3.amazonaws.com"}

List distributions. Returns an array of distributions or RightAws::AwsError exception.

 acf.list_distributions #=>
   [{:status             => "Deployed",
     :domain_name        => "d74zzrxmpmygb.6hops.net",
     :aws_id             => "E4U91HCJHGXVC",
     :cnames             => ["web1.my-awesome-site.net", "web2.my-awesome-site.net"]
     :origin             => "my-bucket.s3.amazonaws.com",
     :comment            => "My comments",
     :last_modified_time => Wed Sep 10 17:00:04 UTC 2008 }, ..., {...} ]

Set a distribution‘s configuration (the :origin and the :caller_reference cannot be changed). Returns true on success or RightAws::AwsError exception.

 config = acf.get_distribution_config('E2REJM3VUN5RSI') #=>
   {:enabled          => true,
    :caller_reference => "200809102100536497863003",
    :e_tag            => "E39OHHU1ON65SI",
    :cnames           => ["web1.my-awesome-site.net", "web2.my-awesome-site.net"]
    :comment          => "Woo-Hoo!",
    :origin           => "my-bucket.s3.amazonaws.com"}
 config[:comment] = 'Olah-lah!'
 config[:enabled] = false
 acf.set_distribution_config('E2REJM3VUN5RSI', config) #=> true

[Validate]