Class: Fog::CDN::AWS::Real
- Inherits:
-
Object
- Object
- Fog::CDN::AWS::Real
- Defined in:
- lib/fog/cdn/aws.rb,
lib/fog/cdn/requests/aws/get_distribution.rb,
lib/fog/cdn/requests/aws/post_distribution.rb,
lib/fog/cdn/requests/aws/post_invalidation.rb,
lib/fog/cdn/requests/aws/delete_distribution.rb,
lib/fog/cdn/requests/aws/get_distribution_list.rb,
lib/fog/cdn/requests/aws/put_distribution_config.rb
Instance Method Summary collapse
-
#delete_distribution(distribution_id, etag) ⇒ Object
Delete a distribution from CloudFront.
-
#get_distribution(distribution_id) ⇒ Object
Get information about a distribution from CloudFront.
-
#get_distribution_list(options = {}) ⇒ Object
List information about distributions in CloudFront.
-
#initialize(options = {}) ⇒ Real
constructor
Initialize connection to Cloudfront.
-
#post_distribution(options = {}) ⇒ Object
create a new distribution in CloudFront.
-
#post_invalidation(distribution_id, paths, caller_reference = Time.now.to_i.to_s) ⇒ Object
List information about distributions in CloudFront.
-
#put_distribution_config(distribution_id, etag, options = {}) ⇒ Object
update a distribution in CloudFront.
- #reload ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Real
Initialize connection to Cloudfront
Notes
options parameter must include values for :aws_access_key_id and :aws_secret_access_key in order to create a connection
Examples
cdn = Fog::AWS::CDN.new(
:aws_access_key_id => your_aws_access_key_id,
:aws_secret_access_key => your_aws_secret_access_key
)
Parameters
-
options<~Hash> - config arguments for connection. Defaults to {}.
Returns
-
cdn object with connection to aws.
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/fog/cdn/aws.rb', line 73 def initialize(={}) require 'fog/core/parser' @aws_access_key_id = [:aws_access_key_id] @aws_secret_access_key = [:aws_secret_access_key] @hmac = Fog::HMAC.new('sha1', @aws_secret_access_key) @host = [:host] || 'cloudfront.amazonaws.com' @path = [:path] || '/' @port = [:port] || 443 @scheme = [:scheme] || 'https' @version = [:version] || '2010-11-01' unless .has_key?(:persistent) [:persistent] = true end @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", [:persistent]) end |
Instance Method Details
#delete_distribution(distribution_id, etag) ⇒ Object
Delete a distribution from CloudFront
Parameters
-
distribution_id<~String> - Id of distribution to delete
-
etag<~String> - etag of that distribution from earlier get or put
See Also
docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/DeleteDistribution.html
15 16 17 18 19 20 21 22 23 |
# File 'lib/fog/cdn/requests/aws/delete_distribution.rb', line 15 def delete_distribution(distribution_id, etag) request({ :expects => 204, :headers => { 'If-Match' => etag }, :idempotent => true, :method => 'DELETE', :path => "/distribution/#{distribution_id}" }) end |
#get_distribution(distribution_id) ⇒ Object
Get information about a distribution from CloudFront
Parameters
-
distribution_id<~String> - id of distribution
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘S3Origin’<~Hash>:
-
‘DNSName’<~String> - origin to associate with distribution, ie ‘mybucket.s3.amazonaws.com’
-
‘OriginAccessIdentity’<~String> - Optional: Used when serving private content
-
or
-
‘CustomOrigin’<~Hash>:
-
‘DNSName’<~String> - origin to associate with distribution, ie ‘www.example.com’
-
‘HTTPPort’<~Integer> - HTTP port of origin, in [80, 443] or (1024…65535)
-
‘HTTPSPort’<~Integer> - HTTPS port of origin, in [80, 443] or (1024…65535)
-
‘OriginProtocolPolicy’<~String> - Policy on using http vs https, in [‘http-only’, ‘match-viewer’]
-
-
‘Id’<~String> - Id of distribution
-
‘LastModifiedTime’<~String> - Timestamp of last modification of distribution
-
‘Status’<~String> - Status of distribution
-
‘DistributionConfig’<~Array>:
-
‘CallerReference’<~String> - Used to prevent replay, defaults to Time.now.to_i.to_s
-
‘CNAME’<~Array> - array of associated cnames
-
‘Comment’<~String> - comment associated with distribution
-
‘Enabled’<~Boolean> - whether or not distribution is enabled
-
‘InProgressInvalidationBatches’<~Integer> - number of invalidation batches in progress
-
‘Logging’<~Hash>:
-
‘Bucket’<~String> - bucket logs are stored in
-
‘Prefix’<~String> - prefix logs are stored with
-
-
‘Origin’<~String> - s3 origin bucket
-
‘TrustedSigners’<~Array> - trusted signers
-
-
-
See Also
docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/GetDistribution.html
44 45 46 47 48 49 50 51 52 |
# File 'lib/fog/cdn/requests/aws/get_distribution.rb', line 44 def get_distribution(distribution_id) request({ :expects => 200, :idempotent => true, :method => 'GET', :parser => Fog::Parsers::CDN::AWS::Distribution.new, :path => "/distribution/#{distribution_id}" }) end |
#get_distribution_list(options = {}) ⇒ Object
List information about distributions in CloudFront
Parameters
-
options<~Hash> - config arguments for list. Defaults to {}.
-
‘Marker’<~String> - limits object keys to only those that appear lexicographically after its value.
-
‘MaxItems’<~Integer> - limits number of object keys returned
-
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘IsTruncated’<~Boolean> - Whether or not the listing is truncated
-
‘Marker’<~String> - Marker specified for query
-
‘MaxItems’<~Integer> - Maximum number of keys specified for query
-
‘NextMarker’<~String> - Marker to specify for next page (id of last result of current page)
-
‘DistributionSummary’<~Array>:
-
‘S3Origin’<~Hash>:
-
‘DNSName’<~String> - origin to associate with distribution, ie ‘mybucket.s3.amazonaws.com’
-
‘OriginAccessIdentity’<~String> - Optional: Used when serving private content
-
or
-
‘CustomOrigin’<~Hash>:
-
‘DNSName’<~String> - origin to associate with distribution, ie ‘www.example.com’
-
‘HTTPPort’<~Integer> - HTTP port of origin, in [80, 443] or (1024…65535)
-
‘HTTPSPort’<~Integer> - HTTPS port of origin, in [80, 443] or (1024…65535)
-
-
‘OriginProtocolPolicy’<~String> - Policy on using http vs https, in [‘http-only’, ‘match-viewer’]
-
‘Comment’<~String> - comment associated with distribution
-
‘CNAME’<~Array> - array of associated cnames
-
‘Enabled’<~Boolean> - whether or not distribution is enabled
-
‘Id’<~String> - Id of distribution
-
‘LastModifiedTime’<~String> - Timestamp of last modification of distribution
-
‘Origin’<~String> - s3 origin bucket
-
‘Status’<~String> - Status of distribution
-
‘TrustedSigners’<~Array> - trusted signers
-
-
-
See Also
docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/ListDistributions.html
45 46 47 48 49 50 51 52 53 54 |
# File 'lib/fog/cdn/requests/aws/get_distribution_list.rb', line 45 def get_distribution_list( = {}) request({ :expects => 200, :idempotent => true, :method => 'GET', :parser => Fog::Parsers::CDN::AWS::GetDistributionList.new, :path => "/distribution", :query => }) end |
#post_distribution(options = {}) ⇒ Object
create a new distribution in CloudFront
Parameters
-
options<~Hash> - config for distribution. Defaults to {}. REQUIRED:
-
‘S3Origin’<~Hash>:
-
‘DNSName’<~String> - origin to associate with distribution, ie ‘mybucket.s3.amazonaws.com’
-
‘OriginAccessIdentity’<~String> - Optional: Used when serving private content
-
or
-
‘CustomOrigin’<~Hash>:
-
‘DNSName’<~String> - origin to associate with distribution, ie ‘www.example.com’
-
‘HTTPPort’<~Integer> - Optional HTTP port of origin, in [80, 443] or (1024…65535), defaults to 80
-
‘HTTPSPort’<~Integer> - Optional HTTPS port of origin, in [80, 443] or (1024…65535), defaults to 443
-
‘OriginProtocolPolicy’<~String> - Policy on using http vs https, in [‘http-only’, ‘match-viewer’]
-
OPTIONAL:
-
‘CallerReference’<~String> - Used to prevent replay, defaults to Time.now.to_i.to_s
-
‘Comment’<~String> - Optional comment about distribution
-
‘CNAME’<~Array> - Optional array of strings to set as CNAMEs
-
‘DefaultRootObject’<~String> - Optional default object to return for ‘/’
-
‘Enabled’<~Boolean> - Whether or not distribution should accept requests, defaults to true
-
‘Logging’<~Hash>: Optional logging config
-
‘Bucket’<~String> - Bucket to store logs in, ie ‘mylogs.s3.amazonaws.com’
-
‘Prefix’<~String> - Optional prefix for log filenames, ie ‘myprefix/’
-
-
‘OriginAccessIdentity’<~String> - Used for serving private content, in format ‘origin-access-identity/cloudfront/ID’
-
‘RequiredProtocols’<~String> - Optional, set to ‘https’ to force https connections
-
‘TrustedSigners’<~Array> - Optional grant of rights to up to 5 aws accounts to generate signed URLs for private content, elements are either ‘Self’ for your own account or an AWS Account Number
-
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘DomainName’<~String>: Domain name of distribution
-
‘Id’<~String> - Id of distribution
-
‘LastModifiedTime’<~String> - Timestamp of last modification of distribution
-
‘Status’<~String> - Status of distribution
-
‘DistributionConfig’<~Array>:
-
‘CallerReference’<~String> - Used to prevent replay, defaults to Time.now.to_i.to_s
-
‘CNAME’<~Array> - array of associated cnames
-
‘Comment’<~String> - comment associated with distribution
-
‘Enabled’<~Boolean> - whether or not distribution is enabled
-
‘Logging’<~Hash>:
-
‘Bucket’<~String> - bucket logs are stored in
-
‘Prefix’<~String> - prefix logs are stored with
-
-
‘Origin’<~String> - s3 origin bucket
-
‘TrustedSigners’<~Array> - trusted signers
-
-
-
See Also
docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/CreateDistribution.html
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/fog/cdn/requests/aws/post_distribution.rb', line 56 def post_distribution( = {}) ['CallerReference'] = Time.now.to_i.to_s data = '<?xml version="1.0" encoding="UTF-8"?>' data << "<DistributionConfig xmlns=\"http://cloudfront.amazonaws.com/doc/#{@version}/\">" for key, value in case value when Array for item in value data << "<#{key}>#{item}</#{key}>" end when Hash data << "<#{key}>" for inner_key, inner_value in value data << "<#{inner_key}>#{inner_value}</#{inner_key}>" end data << "</#{key}>" else data << "<#{key}>#{value}</#{key}>" end end data << "</DistributionConfig>" request({ :body => data, :expects => 201, :headers => { 'Content-Type' => 'text/xml' }, :idempotent => true, :method => 'POST', :parser => Fog::Parsers::CDN::AWS::Distribution.new, :path => "/distribution" }) end |
#post_invalidation(distribution_id, paths, caller_reference = Time.now.to_i.to_s) ⇒ Object
List information about distributions in CloudFront
Parameters
-
distribution_id<~String> - Id of distribution for invalidations
-
paths<~Array> - Array of string paths to objects to invalidate
-
caller_reference<~String> - Used to prevent replay, defaults to Time.now.to_i.to_s
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘Id’<~String> - Id of invalidation
-
‘Status’<~String> - Status of invalidation
-
‘CreateTime’<~Integer> - Time of invalidation creation
-
‘InvalidationBatch’<~Array>:
-
‘Path’<~Array> - Array of strings of objects to invalidate
-
‘CallerReference’<~String> - Used to prevent replay, defaults to Time.now.to_i.to_s
-
-
-
See Also
docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/CreateInvalidation.html
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/fog/cdn/requests/aws/post_invalidation.rb', line 29 def post_invalidation(distribution_id, paths, caller_reference = Time.now.to_i.to_s) body = '<?xml version="1.0" encoding="UTF-8"?>' body << "<InvalidationBatch>" for path in [*paths] body << "<Path>" << path << "</Path>" end body << "<CallerReference>" << caller_reference << "</CallerReference>" body << "</InvalidationBatch>" request({ :body => body, :expects => 201, :headers => {'Content-Type' => 'text/xml'}, :idempotent => true, :method => 'POST', :parser => Fog::Parsers::CDN::AWS::PostInvalidation.new, :path => "/distribution/#{distribution_id}/invalidation" }) end |
#put_distribution_config(distribution_id, etag, options = {}) ⇒ Object
update a distribution in CloudFront
Parameters
-
distribution_id<~String> - Id of distribution to update config for
-
options<~Hash> - config for distribution. Defaults to {}. REQUIRED:
-
‘S3Origin’<~Hash>:
-
‘DNSName’<~String> - origin to associate with distribution, ie ‘mybucket.s3.amazonaws.com’
-
‘OriginAccessIdentity’<~String> - Optional: Used when serving private content
-
or
-
‘CustomOrigin’<~Hash>:
-
‘DNSName’<~String> - origin to associate with distribution, ie ‘www.example.com’
-
‘HTTPPort’<~Integer> - HTTP port of origin, in [80, 443] or (1024…65535)
-
‘HTTPSPort’<~Integer> - HTTPS port of origin, in [80, 443] or (1024…65535)
-
‘OriginProtocolPolicy’<~String> - Policy on using http vs https, in [‘http-only’, ‘match-viewer’]
-
OPTIONAL:
-
‘CallerReference’<~String> - Used to prevent replay, defaults to Time.now.to_i.to_s
-
‘Comment’<~String> - Optional comment about distribution
-
‘CNAME’<~Array> - Optional array of strings to set as CNAMEs
-
‘DefaultRootObject’<~String> - Optional default object to return for ‘/’
-
‘Enabled’<~Boolean> - Whether or not distribution should accept requests, defaults to true
-
‘Logging’<~Hash>: Optional logging config
-
‘Bucket’<~String> - Bucket to store logs in, ie ‘mylogs.s3.amazonaws.com’
-
‘Prefix’<~String> - Optional prefix for log filenames, ie ‘myprefix/’
-
-
‘OriginAccessIdentity’<~String> - Used for serving private content, in format ‘origin-access-identity/cloudfront/ID’
-
‘RequiredProtocols’<~String> - Optional, set to ‘https’ to force https connections
-
‘TrustedSigners’<~Array> - Optional grant of rights to up to 5 aws accounts to generate signed URLs for private content, elements are either ‘Self’ for your own account or an AWS Account Number
-
Returns
-
response<~Excon::Response>:
-
body<~Hash>:
-
‘DomainName’<~String>: Domain name of distribution
-
‘Id’<~String> - Id of distribution
-
‘LastModifiedTime’<~String> - Timestamp of last modification of distribution
-
‘Status’<~String> - Status of distribution
-
‘DistributionConfig’<~Array>:
-
‘CallerReference’<~String> - Used to prevent replay, defaults to Time.now.to_i.to_s
-
‘CNAME’<~Array> - array of associated cnames
-
‘Comment’<~String> - comment associated with distribution
-
‘Enabled’<~Boolean> - whether or not distribution is enabled
-
‘Logging’<~Hash>:
-
‘Bucket’<~String> - bucket logs are stored in
-
‘Prefix’<~String> - prefix logs are stored with
-
-
‘Origin’<~String> - s3 origin bucket
-
‘TrustedSigners’<~Array> - trusted signers
-
-
-
See Also
docs.amazonwebservices.com/AmazonCloudFront/latest/APIReference/CreateDistribution.html
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/fog/cdn/requests/aws/put_distribution_config.rb', line 57 def put_distribution_config(distribution_id, etag, = {}) data = '<?xml version="1.0" encoding="UTF-8"?>' data << "<DistributionConfig xmlns=\"http://cloudfront.amazonaws.com/doc/#{@version}/\">" for key, value in case value when Array for item in value data << "<#{key}>#{item}</#{key}>" end when Hash data << "<#{key}>" for inner_key, inner_value in value data << "<#{inner_key}>#{inner_value}</#{inner_key}>" end data << "</#{key}>" else data << "<#{key}>#{value}</#{key}>" end end data << "</DistributionConfig>" request({ :body => data, :expects => 200, :headers => { 'Content-Type' => 'text/xml', 'If-Match' => etag }, :idempotent => true, :method => 'PUT', :parser => Fog::Parsers::CDN::AWS::Distribution.new, :path => "/distribution/#{distribution_id}/config" }) end |
#reload ⇒ Object
90 91 92 |
# File 'lib/fog/cdn/aws.rb', line 90 def reload @connection.reset end |