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", :s3_origin => {:dns_name=>"bucket-for-konstantin-00.s3.amazonaws.com"}, :cnames => ["x1.my-awesome-site.net", "x1.my-awesome-site.net"] :comment => "My comments", :last_modified_time => "2008-09-10T17:00:04.000Z" }, ..., {...} ] distibution = list.first info = acf.get_distribution(distibution[:aws_id]) #=> {:last_modified_time=>"2010-05-19T18:54:38.242Z", :status=>"Deployed", :domain_name=>"dpzl38cuix402.cloudfront.net", :caller_reference=>"201005181943052207677116", :e_tag=>"EJSXFGM5JL8ER", :s3_origin=> {:dns_name=>"bucket-for-konstantin-eu.s3.amazonaws.com", :origin_access_identity=> "origin-access-identity/cloudfront/E3JPJZ80ZBX24G"}, :aws_id=>"E5P8HQ3ZAZIXD", :enabled=>false} 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!", :s3_origin => {:dns_name => "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
# File lib/acf/right_acf_interface.rb, line 89 def self.bench_service @@bench.service end
# File lib/acf/right_acf_interface.rb, line 86 def self.bench_xml @@bench.xml end
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:
:endpoint_url a fully qualified url to Amazon API endpoint (this overwrites: :server, :port, :service, :protocol). Example: 'cloudfront.amazonaws.com'
:server: CloudFront service host, default: DEFAULT_HOST
:port: CloudFront service port, default: DEFAULT_PORT
:protocol: 'http' or 'https', default: DEFAULT_PROTOCOL
:logger: for log messages, default: RAILS_DEFAULT_LOGGER else STDOUT
acf = RightAws::AcfInterface.new('1E3GDYEOGFJPIT7XXXXXX','hgTHt68JY07JKUY08ftHYtERkjgtfERn57XXXXXX', {:logger => Logger.new('/tmp/x.log')}) #=> #<RightAws::AcfInterface::0xb7b3c30c>
# File lib/acf/right_acf_interface.rb, line 105 def initialize(aws_access_key_id=nil, aws_secret_access_key=nil, params={}) init({ :name => 'ACF', :default_host => ENV['ACF_URL'] ? URI.parse(ENV['ACF_URL']).host : DEFAULT_HOST, :default_port => ENV['ACF_URL'] ? URI.parse(ENV['ACF_URL']).port : DEFAULT_PORT, :default_service => ENV['ACF_URL'] ? URI.parse(ENV['ACF_URL']).path : DEFAULT_PATH, :default_protocol => ENV['ACF_URL'] ? URI.parse(ENV['ACF_URL']).scheme : DEFAULT_PROTOCOL, :default_api_version => ENV['ACF_API_VERSION'] || API_VERSION }, aws_access_key_id || ENV['AWS_ACCESS_KEY_ID'], aws_secret_access_key || ENV['AWS_SECRET_ACCESS_KEY'], params) end
Create a new distribution. Returns the just created distribution or RightAws::AwsError exception.
# S3 Origin config = { :comment => "kd: delete me please", :s3_origin => { :dns_name => "devs-us-east.s3.amazonaws.com", :origin_access_identity => "origin-access-identity/cloudfront/E3JPJZ80ZBX24G"}, :enabled => true, :logging => { :prefix => "kd/log/", :bucket => "devs-us-west.s3.amazonaws.com"}} acf.create_distribution(config) #=> { :status=>"InProgress", :enabled=>true, :caller_reference=>"201012071910051044304704", :logging=>{:prefix=>"kd/log/", :bucket=>"devs-us-west.s3.amazonaws.com"}, :e_tag=>"ESCTG5WJCFWJK", :location=> "https://cloudfront.amazonaws.com/2010-11-01/distribution/E3KUBANZ7N1B2", :comment=>"kd: delete me please", :domain_name=>"d3stykk6upgs20.cloudfront.net", :aws_id=>"E3KUBANZ7N1B2", :s3_origin=> {:origin_access_identity=>"origin-access-identity/cloudfront/E3JPJZ80ZBX24G", :dns_name=>"devs-us-east.s3.amazonaws.com"}, :last_modified_time=>"2010-12-07T16:10:07.087Z", :in_progress_invalidation_batches=>0} # Custom Origin custom_config = { :comment => "kd: delete me please", :custom_origin => { :dns_name => "custom_origin.my-site.com", :http_port => 80, :https_port => 443, :origin_protocol_policy => 'match-viewer' }, :enabled => true, :logging => { :prefix => "kd/log/", :bucket => "my-bucket.s3.amazonaws.com"}} #=> { :last_modified_time=>"2010-12-08T14:23:43.522Z", :status=>"InProgress", :custom_origin=> {:http_port=>"80", :https_port=>"443", :origin_protocol_policy=>"match-viewer", :dns_name=>"custom_origin.my-site.com"}, :enabled=>true, :caller_reference=>"201012081723428499167245", :in_progress_invalidation_batches=>0, :e_tag=>"E1ZCJ8N5E52KO6", :location=> "https://cloudfront.amazonaws.com/2010-11-01/distribution/EK0AJ4RMNIF2P", :logging=>{:prefix=>"kd/log/", :bucket=>"my-bucket.s3.amazonaws.com"}, :domain_name=>"do36k7s2wxklg.cloudfront.net", :comment=>"kd: delete me please", :aws_id=>"EK0AJ4RMNIF2P"}
# File lib/acf/right_acf_interface.rb, line 373 def create_distribution(config) config[:caller_reference] ||= generate_call_reference link = generate_request('POST', 'distribution', {}, distribution_config_to_xml(config)) merge_headers(request_info(link, AcfDistributionListParser.new(:logger => @logger))[:distributions].first) end
Create a new Invalidation batch.
acf.create_invalidation('E3LTBMK4EAQS7D', :path => ['/boot.jpg', '/kd/boot.public.1.jpg']) #=> {:status=>"InProgress", :create_time=>"2010-12-08T14:03:38.449Z", :location=> "https://cloudfront.amazonaws.com/2010-11-01/distribution/E3LTBMK4EAQS7D/invalidation/I3AW9PPQS0CBKV", :aws_id=>"I3AW9PPQS0CBKV", :invalidation_batch=> {:caller_reference=>"201012081703372555972012", :path=>["/boot.jpg", "/kd/boot.public.1.jpg"]}}
# File lib/acf/right_acf_invalidations.rb, line 74 def create_invalidation(distribution_aws_id, invalidation_batch) invalidation_batch[:caller_reference] ||= generate_call_reference link = generate_request('POST', "/distribution/#{distribution_aws_id}/invalidation", {}, invalidation_batch_to_xml(invalidation_batch)) merge_headers(request_info(link, AcfInvalidationsListParser.new(:logger => @logger))[:invalidations].first) end
Create a new CloudFront Origin Access Identity.
acf.create_origin_access_identity('MyTestAccessIdentity') #=> {:e_tag=>"E2QOKZEXCUWHJX", :comment=>"MyTestAccessIdentity", :location=> "https://cloudfront.amazonaws.com/origin-access-identity/cloudfront/E3JPJZ80ZBX24G", :caller_reference=>"201004161657467493031273", :s3_canonical_user_id=> "de4361b33dbaf499d3d77159bfa1571d3451eaec25a2b16553de5e534da8089bb8c31a4898d73d1a658155d0e48872a7", :aws_id=>"E3JPJZ80ZBX24G"}
# File lib/acf/right_acf_origin_access_identities.rb, line 109 def create_origin_access_identity(comment='', caller_reference=nil) config = { :comment => comment, :caller_reference => caller_reference } create_origin_access_identity_by_config(config) end
# File lib/acf/right_acf_origin_access_identities.rb, line 115 def create_origin_access_identity_by_config(config) config[:caller_reference] ||= generate_call_reference link = generate_request('POST', 'origin-access-identity/cloudfront', {}, origin_access_identity_config_to_xml(config)) merge_headers(request_info(link, AcfOriginAccesIdentitiesListParser.new(:logger => @logger))[:origin_access_identities].first) end
Create a new streaming distribution. Returns the just created distribution or RightAws::AwsError exception.
acf.create_streaming_distribution('bucket-for-konstantin-00.s3.amazonaws.com', 'Woo-Hoo!', true, ['stream-1.web.my-awesome-site.net']) #=> {:status=>"InProgress", :caller_reference=>"201004191254412191173215", :cnames=>["stream-1.web.my-awesome-site.net"], :aws_id=>"E1M5LERJLU636F", :e_tag=>"E2588L5QL4BLXH", :enabled=>true, :domain_name=>"s1di8imd85wgld.cloudfront.net", :s3_origin=> {:dns_name=>"bucket-for-konstantin-00.s3.amazonaws.com"}, :last_modified_time=>Mon Apr 19 08:54:42 UTC 2010, :location=> "https://cloudfront.amazonaws.com/streaming-distribution/E1M5LERJLU636F", :comment=>"Woo-Hoo!"}
# File lib/acf/right_acf_streaming_interface.rb, line 127 def create_streaming_distribution(config) config[:caller_reference] ||= generate_call_reference link = generate_request('POST', 'streaming-distribution', {}, streaming_distribution_config_to_xml(config)) merge_headers(request_info(link, AcfDistributionListParser.new(:logger => @logger))[:distributions].first) end
Delete a distribution. The enabled distribution cannot be deleted. Returns true on success or RightAws::AwsError exception.
acf.delete_distribution('E2REJM3VUN5RSI', 'E39OHHU1ON65SI') #=> true
# File lib/acf/right_acf_interface.rb, line 482 def delete_distribution(aws_id, e_tag) link = generate_request('DELETE', "distribution/#{aws_id}", {}, nil, 'If-Match' => e_tag) request_info(link, RightHttp2xxParser.new(:logger => @logger)) end
Get Origin Access Identity
acf.get_origin_access_identity('E3HJ7V8C3324VF') #=> {:comment=>"kd: TEST-2", :caller_reference=>"201004161655035372351604", :aws_id=>"E3HJ7V8C3324VF", :s3_canonical_user_id=> "9af7058b1d197c2c03fdcc3ddad07012a7822f5fc4a8156025409ffac646bdae4dc714820482c92e6988e5703c8d9954", :e_tag=>"E309Q4IM450498"} acf.delete_origin_access_identity("E3HJ7V8C3324VF","E309Q4IM450498") #=> true
# File lib/acf/right_acf_origin_access_identities.rb, line 148 def delete_origin_access_identity(aws_id, e_tag) link = generate_request('DELETE', "origin-access-identity/cloudfront/#{aws_id}", {}, nil, 'If-Match' => e_tag) request_info(link, RightHttp2xxParser.new(:logger => @logger)) end
Delete a streaming distribution. The enabled distribution cannot be deleted. Returns true on success or RightAws::AwsError exception.
acf.delete_streaming_distribution('E1M5LERJLU636F', 'E2588L5QL4BLXH') #=> true
# File lib/acf/right_acf_streaming_interface.rb, line 222 def delete_streaming_distribution(aws_id, e_tag) link = generate_request('DELETE', "streaming-distribution/#{aws_id}", {}, nil, 'If-Match' => e_tag) request_info(link, RightHttp2xxParser.new(:logger => @logger)) end
Get a distribution's information. Returns a distribution's information or RightAws::AwsError exception.
acf.get_distribution('E2REJM3VUN5RSI') #=> {:last_modified_time=>"2010-05-19T18:54:38.242Z", :status=>"Deployed", :domain_name=>"dpzl38cuix402.cloudfront.net", :caller_reference=>"201005181943052207677116", :e_tag=>"EJSXFGM5JL8ER", :s3_origin=> {:dns_name=>"bucket-for-konstantin-eu.s3.amazonaws.com", :origin_access_identity=> "origin-access-identity/cloudfront/E3JPJZ80ZBX24G"}, :aws_id=>"E5P8HQ3ZAZIXD", :enabled=>false} acf.get_distribution('E2FNSBHNVVF11E') #=> {:e_tag=>"E1Q2DJEPTQOLJD", :status=>"InProgress", :last_modified_time=>"2010-04-17T17:24:25.000Z", :cnames=>["web1.my-awesome-site.net", "web2.my-awesome-site.net"], :aws_id=>"E2FNSBHNVVF11E", :logging=>{:prefix=>"xlog/", :bucket=>"my-bucket.s3.amazonaws.com"}, :enabled=>true, :active_trusted_signers=> [{:aws_account_number=>"120288270000", :key_pair_ids=>["APKAJTD5OHNDX0000000", "APKAIK74BJWCL0000000"]}, {:aws_account_number=>"self"}, {:aws_account_number=>"648772220000"}], :caller_reference=>"201004171154450740700072", :domain_name=>"d1f6lpevremt5m.cloudfront.net", :s3_origin=> {:dns_name=>"bucket-for-konstantin-eu.s3.amazonaws.com", :origin_access_identity=> "origin-access-identity/cloudfront/E3JPJZ80ZBX24G"}, :trusted_signers=>["self", "648772220000", "120288270000"]}
# File lib/acf/right_acf_interface.rb, line 417 def get_distribution(aws_id) link = generate_request('GET', "distribution/#{aws_id}") merge_headers(request_info(link, AcfDistributionListParser.new(:logger => @logger))[:distributions].first) end
Get a distribution's configuration. Returns a distribution's configuration or RightAws::AwsError exception.
acf.get_distribution_config('E2REJM3VUN5RSI') #=> {:caller_reference=>"201005181943052207677116", :e_tag=>"EJSXFGM5JL8ER", :s3_origin=> {:dns_name=>"bucket-for-konstantin-eu.s3.amazonaws.com", :origin_access_identity=> "origin-access-identity/cloudfront/E3JPJZ80ZBX24G"}, :enabled=>false} acf.get_distribution_config('E2FNSBHNVVF11E') #=> {:e_tag=>"E1Q2DJEPTQOLJD", :logging=>{:prefix=>"xlog/", :bucket=>"my-bucket.s3.amazonaws.com"}, :enabled=>true, :caller_reference=>"201004171154450740700072", :trusted_signers=>["self", "648772220000", "120288270000"], :s3_origin=> {:dns_name=>"bucket-for-konstantin-eu.s3.amazonaws.com", :origin_access_identity=> "origin-access-identity/cloudfront/E3JPJZ80ZBX24G"}}
# File lib/acf/right_acf_interface.rb, line 445 def get_distribution_config(aws_id) link = generate_request('GET', "distribution/#{aws_id}/config") merge_headers(request_info(link, AcfDistributionListParser.new(:logger => @logger))[:distributions].first) end
Get Invalidation
acf.get_invalidation('E3LTBMK4EAQS7D', 'I3AW9PPQS0CBKV') #=> {:create_time=>"2010-12-08T14:03:38.449Z", :status=>"InProgress", :aws_id=>"I3AW9PPQS0CBKV", :invalidation_batch=> {:caller_reference=>"201012081703372555972012", :path=>["/boot.jpg", "/kd/boot.public.1.jpg"]}}
# File lib/acf/right_acf_invalidations.rb, line 90 def get_invalidation(distribution_aws_id, aws_id) link = generate_request('GET', "distribution/#{distribution_aws_id}/invalidation/#{aws_id}") merge_headers(request_info(link, AcfInvalidationsListParser.new(:logger => @logger))[:invalidations].first) end
Get Origin Access Identity
acf.get_origin_access_identity('E3HJ7V8C3324VF') #=> {:comment=>"kd: TEST-2", :caller_reference=>"201004161655035372351604", :aws_id=>"E3HJ7V8C3324VF", :s3_canonical_user_id=> "9af7058b1d197c2c03fdcc3ddad07012a7822f5fc4a8156025409ffac646bdae4dc714820482c92e6988e5703c8d9954", :e_tag=>"E309Q4IM450498"}
# File lib/acf/right_acf_origin_access_identities.rb, line 131 def get_origin_access_identity(aws_id) link = generate_request('GET', "origin-access-identity/cloudfront/#{aws_id}") merge_headers(request_info(link, AcfOriginAccesIdentitiesListParser.new(:logger => @logger))[:origin_access_identities].first) end
Get Origin Access Identity config
acf.get_origin_access_identity_config("E3JPJZ80ZBX24G") #=> {:comment=>"MyTestAccessIdentity", :caller_reference=>"201004161657467493031273", :e_tag=>"E2QOKZEXCUWHJX"}
# File lib/acf/right_acf_origin_access_identities.rb, line 173 def get_origin_access_identity_config(aws_id) link = generate_request('GET', "origin-access-identity/cloudfront/#{aws_id}/config") merge_headers(request_info(link, AcfOriginAccesIdentitiesListParser.new(:logger => @logger))[:origin_access_identities].first) end
Get a streaming distribution's information. Returns a distribution's information or RightAws::AwsError exception.
acf.get_streaming_distribution('E3CWE2Z9USOS6B') #=> {:status=>"Deployed", :e_tag=>"EXTZ2SXAQT39K", :cnames=>["stream.web.my-awesome-site.net"], :aws_id=>"E3CWE2Z9USOS6B", :enabled=>true, :domain_name=>"s2jz1ourvss1fj.cloudfront.net", :s3_origin=> {:dns_name=>"bucket-for-konstantin-00.s3.amazonaws.com"}, :last_modified_time=>"2010-04-19T08:53:32.574Z", :comment=>"Woo-Hoo!", :caller_reference=>"201004191253311625537161"} acf.get_streaming_distribution('E1M5LERJLU636F') #=> {:trusted_signers=>["self", "648772220000", "120288270000"], :status=>"InProgress", :e_tag=>"E2K6XD13RCJQ6E", :cnames=>["stream-1.web.my-awesome-site.net"], :active_trusted_signers=> [{:key_pair_ids=>["APKAIK74BJWCLXZUMEJA"], :aws_account_number=>"120288270000"}, {:aws_account_number=>"self"}, {:aws_account_number=>"648772220000"}], :aws_id=>"E1M5LERJLU636F", :enabled=>false, :domain_name=>"s1di8imd85wgld.cloudfront.net", :s3_origin=> { :dns_name=>"bucket-for-konstantin-00.s3.amazonaws.com", :origin_access_identity=>"origin-access-identity/cloudfront/E3JPJZ80ZBX24G"}, :last_modified_time=>"2010-04-19T09:14:07.160Z", :comment=>"Olah-lah!", :caller_reference=>"201004191254412191173215"}
# File lib/acf/right_acf_streaming_interface.rb, line 169 def get_streaming_distribution(aws_id) link = generate_request('GET', "streaming-distribution/#{aws_id}") merge_headers(request_info(link, AcfDistributionListParser.new(:logger => @logger))[:distributions].first) end
Get a streaming distribution's configuration. Returns a distribution's configuration or RightAws::AwsError exception.
acf.get_streaming_distribution_config('E1M5LERJLU636F') #=> {:trusted_signers=>["self", "648772220000", "120288270000"], :e_tag=>"E2K6XD13RCJQ6E", :cnames=>["stream-1.web.my-awesome-site.net"], :enabled=>false, :s3_origin=> { :dns_name=>"bucket-for-konstantin-00.s3.amazonaws.com", :origin_access_identity=>"origin-access-identity/cloudfront/E3JPJZ80ZBX24G",}, :comment=>"Olah-lah!", :caller_reference=>"201004191254412191173215"}
# File lib/acf/right_acf_streaming_interface.rb, line 188 def get_streaming_distribution_config(aws_id) link = generate_request('GET', "streaming-distribution/#{aws_id}/config") merge_headers(request_info(link, AcfDistributionListParser.new(:logger => @logger))[:distributions].first) end
Incrementally list distributions.
Optional params: :marker and :max_items.
# get first distribution incrementally_list_distributions(:max_items => 1) #=> {:distributions=> [{:status=>"Deployed", :aws_id=>"E2Q0AOOMFNPSYL", :s3_origin=>{:dns_name=>"example.s3.amazonaws.com"}, :domain_name=>"d1s5gmdtmafnre.6hops.net", :comment=>"ONE LINE OF COMMENT", :last_modified_time=>"2008-10-22T19:31:23.000Z", :enabled=>true, :cnames=>[]}], :is_truncated=>true, :max_items=>1, :marker=>"", :next_marker=>"E2Q0AOOMFNPSYL"} # get max 100 distributions (the list will be restricted by a default MaxItems value ==100 ) incrementally_list_distributions # list distributions by 10 incrementally_list_distributions(:max_items => 10) do |response| puts response.inspect # a list of 10 distributions true # return false if the listing should be broken otherwise use true end
# File lib/acf/right_acf_interface.rb, line 304 def incrementally_list_distributions(params={}, &block) opts = {} opts['MaxItems'] = params[:max_items] if params[:max_items] opts['Marker'] = params[:marker] if params[:marker] last_response = nil loop do link = generate_request('GET', 'distribution', opts) last_response = request_info(link, AcfDistributionListParser.new(:logger => @logger)) opts['Marker'] = last_response[:next_marker] break unless block && block.call(last_response) && !last_response[:next_marker].right_blank? end last_response end
Incrementally list Invalidations. Optional params: :marker and :max_items.
# File lib/acf/right_acf_invalidations.rb, line 45 def incrementally_list_invalidations(distribution_aws_id, params={}, &block) opts = {} opts['MaxItems'] = params[:max_items] if params[:max_items] opts['Marker'] = params[:marker] if params[:marker] last_response = nil loop do link = generate_request('GET', "distribution/#{distribution_aws_id}/invalidation", opts) last_response = request_info(link, AcfInvalidationsListParser.new(:logger => @logger)) opts['Marker'] = last_response[:next_marker] break unless block && block.call(last_response) && !last_response[:next_marker].right_blank? end last_response end
Incrementally list Origin Access Identities. Optional params: :marker and :max_items.
acf.incrementally_list_origin_access_identities(:max_items => 2) #=> {:origin_access_identities=> [{:comment=>"kd: TEST", :s3_canonical_user_id=> "c7ca36f6c5d384e60aeca02032ac748bae3c458c5322a2e279382935f1f71b16d9ac251f7f71f1ea91c37d3c214645b8", :aws_id=>"E3TL4XWF5KTGH"}, {:comment=>"kd: TEST-2", :s3_canonical_user_id=> "9af7058b1d197c2c03fdcc3ddad07012a7822f5fc4a8156025409ffac646bdae4dc714820482c92e6988e5703c8d9954", :aws_id=>"E3HJ7V8C3324VF"}], :is_truncated=>true, :max_items=>2, :marker=>"", :next_marker=>"E3HJ7V8C3324VF"} # get max 100 origin access identities (the list will be restricted by a default MaxItems value ==100 ) incrementally_list_origin_access_identities # list origin access identities by 10 acf.incrementally_list_origin_access_identities(:max_items => 10) do |response| puts response.inspect # a list of 10 distributions true # return false if the listing should be broken otherwise use true end
# File lib/acf/right_acf_origin_access_identities.rb, line 79 def incrementally_list_origin_access_identities(params={}, &block) opts = {} opts['MaxItems'] = params[:max_items] if params[:max_items] opts['Marker'] = params[:marker] if params[:marker] last_response = nil loop do link = generate_request('GET', 'origin-access-identity/cloudfront', opts) last_response = request_info(link, AcfOriginAccesIdentitiesListParser.new(:logger => @logger)) opts['Marker'] = last_response[:next_marker] break unless block && block.call(last_response) && !last_response[:next_marker].right_blank? end last_response end
Incrementally list streaming distributions.
Optional params: :marker and :max_items.
# get first streaming distribution incrementally_list_distributions(:max_items => 1) #=> {:marker=>"", :next_marker=>"E3CWE2Z9USOS6B", :distributions=> [{:status=>"Deployed", :cnames=>["stream.web.my-awesome-site.net"], :aws_id=>"E3CWE2Z9USOS6B", :enabled=>true, :last_modified_time=>"2010-04-19T08:53:32.574Z", :domain_name=>"s2jz1ourvss1fj.cloudfront.net", :s3_origin=> {:dns_name=>"bucket-for-konstantin-00.s3.amazonaws.com"}, :comment=>"Woo-Hoo!"}], :max_items=>1, :is_truncated=>true} # get max 100 streaming distributions (the list will be restricted by a default MaxItems value ==100 ) incrementally_list_streaming_distributions # list streaming distributions by 10 incrementally_list_streaming_distributions(:max_items => 10) do |response| puts response.inspect # a list of 10 distributions true # return false if the listing should be broken otherwise use true end
# File lib/acf/right_acf_streaming_interface.rb, line 95 def incrementally_list_streaming_distributions(params={}, &block) opts = {} opts['MaxItems'] = params[:max_items] if params[:max_items] opts['Marker'] = params[:marker] if params[:marker] last_response = nil loop do link = generate_request('GET', 'streaming-distribution', opts) last_response = request_info(link, AcfDistributionListParser.new(:logger => @logger)) opts['Marker'] = last_response[:next_marker] break unless block && block.call(last_response) && !last_response[:next_marker].right_blank? end last_response end
List all distributions. Returns an array of distributions or RightAws::AwsError exception.
acf.list_distributions #=> [{:status=>"Deployed", :domain_name=>"dgmde.6os.net", :comment=>"ONE LINE OF COMMENT", :last_modified_time=>"2009-06-16T16:10:02.210Z", :s3_origin=>{:dns_name=>"example.s3.amazonaws.com"}, :aws_id=>"12Q05OOMFN7SYL", :enabled=>true}, ... ]
# File lib/acf/right_acf_interface.rb, line 266 def list_distributions result = [] incrementally_list_distributions do |response| result += response[:distributions] true end result end
List Invalidations
acf.list_invalidations('E3LTBMK4EAQS7D') #=> [{:status=>"InProgress", :aws_id=>"I3AW9PPQS0CBKV"}, {:status=>"InProgress", :aws_id=>"I1HV23N5KD3XH9"}]
# File lib/acf/right_acf_invalidations.rb, line 33 def list_invalidations(distribution_aws_id) result = [] incrementally_list_invalidations(distribution_aws_id) do |response| result += response[:invalidations] true end result end
List Origin Access Identities.
acf.list_origin_access_identities #=> [{:comment=>"kd: TEST", :s3_canonical_user_id=> "c7ca36f6c5d384e60aeca02032ac748bae3c458c5322a2e279382935f1f71b16d9ac251f7f71f1ea91c37d3c214645b8", :aws_id=>"E3TL4XWF5KTGH"}, {:comment=>"kd: TEST-2", :s3_canonical_user_id=> "9af7058b1d197c2c03fdcc3ddad07012a7822f5fc4a8156025409ffac646bdae4dc714820482c92e6988e5703c8d9954", :aws_id=>"E3HJ7V8C3324VF"}, {:comment=>"MyTestAccessIdentity", :s3_canonical_user_id=> "de4361b33dbaf499d3d77159bfa1571d3451eaec25a2b16553de5e534da8089bb8c31a4898d73d1a658155d0e48872a7", :aws_id=>"E3JPJZ80ZBX24G"}]
# File lib/acf/right_acf_origin_access_identities.rb, line 43 def list_origin_access_identities result = [] incrementally_list_origin_access_identities do |response| result += response[:origin_access_identities] true end result end
List all streaming distributions. Returns an array of distributions or RightAws::AwsError exception.
acf.list_streaming_distributions #=> [{:status=>"Deployed", :aws_id=>"E3CWE2Z9USOS6B", :enabled=>true, :domain_name=>"s2jz1ourvss1fj.cloudfront.net", :s3_origin=> {:dns_name=>"bucket-for-konstantin-00.s3.amazonaws.com"}, :last_modified_time=>"2010-04-19T08:53:32.574Z", :comment=>"Woo-Hoo!", :cnames=>["stream.web.my-awesome-site.net"]}, ... {:status=>"Deployed", :aws_id=>"E3NPQZY4LKAYQ8", :enabled=>true, :domain_name=>"sw9nrsq9pudk3.cloudfront.net", :s3_origin=> {:dns_name=>"bucket-for-konstantin-00.s3.amazonaws.com"}, :last_modified_time=>"2010-04-19T08:59:09.600Z", :comment=>"Woo-Hoo!", :cnames=>["stream-6.web.my-awesome-site.net"]}]
# File lib/acf/right_acf_streaming_interface.rb, line 57 def list_streaming_distributions result = [] incrementally_list_streaming_distributions do |response| result += response[:distributions] true end result end
Set a distribution's configuration 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!", :s3_origin => { :dns_name => "my-bucket.s3.amazonaws.com"}} config[:comment] = 'Olah-lah!' config[:enabled] = false config[:s3_origin][:origin_access_identity] = "origin-access-identity/cloudfront/E3JPJZ80ZBX24G" # or just # config[:s3_origin][:origin_access_identity] = "E3JPJZ80ZBX24G" config[:trusted_signers] = ['self', '648772220000', '120288270000'] config[:logging] = { :bucket => 'my-bucket.s3.amazonaws.com', :prefix => 'xlog/' } acf.set_distribution_config('E2REJM3VUN5RSI', config) #=> true
# File lib/acf/right_acf_interface.rb, line 471 def set_distribution_config(aws_id, config) link = generate_request('PUT', "distribution/#{aws_id}/config", {}, distribution_config_to_xml(config), 'If-Match' => config[:e_tag]) request_info(link, RightHttp2xxParser.new(:logger => @logger)) end
Set Origin Access Identity config
acf.set_origin_access_identity_config("E2QOKZEXCUWHJX", :comment => "MyBestOriginAccessConfig", :caller_reference => '01234567890', :e_tag=>"E2QOKZEXCUWHJX") #=> true
P.S. This guy is not tested yet: developer.amazonwebservices.com/connect/thread.jspa?threadID=45256
# File lib/acf/right_acf_origin_access_identities.rb, line 187 def set_origin_access_identity_config(aws_id, config) link = generate_request('PUT', "origin-access-identity/cloudfront/#{aws_id}/config", {}, origin_access_identity_config_to_xml(config), 'If-Match' => config[:e_tag]) request_info(link, RightHttp2xxParser.new(:logger => @logger)) end
Set a streaming distribution's configuration Returns true on success or RightAws::AwsError exception.
acf.get_streaming_distribution_config('E1M5LERJLU636F') #=> {:e_tag=>"E2588L5QL4BLXH", :cnames=>["stream-1.web.my-awesome-site.net"], :enabled=>true, :s3_origin=> {:dns_name=>"bucket-for-konstantin-00.s3.amazonaws.com"}, :comment=>"Woo-Hoo!", :caller_reference=>"201004191254412191173215"} config[:comment] = 'Olah-lah!' config[:enabled] = false config[:s3_origin][:origin_access_identity] = "origin-access-identity/cloudfront/E3JPJZ80ZBX24G" config[:trusted_signers] = ['self', '648772220000', '120288270000'] acf.set_distribution_config('E2REJM3VUN5RSI', config) #=> true
# File lib/acf/right_acf_streaming_interface.rb, line 211 def set_streaming_distribution_config(aws_id, config) link = generate_request('PUT', "streaming-distribution/#{aws_id}/config", {}, streaming_distribution_config_to_xml(config), 'If-Match' => config[:e_tag]) request_info(link, RightHttp2xxParser.new(:logger => @logger)) end
Generated with the Darkfish Rdoc Generator 2.