Class: Ipecache::Plugins::CloudFront
- Defined in:
- lib/ipecache/plugins/cloudfront.rb
Instance Method Summary collapse
Methods inherited from Plugin
#continue_on_error, #enabled?, hook, hooks, #initialize, #log_file, name, #name, #plugin_puts, #plugin_puts_error, #quiet_mode, #urls
Constructor Details
This class inherits a constructor from Ipecache::Plugins::Plugin
Instance Method Details
#perform ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/ipecache/plugins/cloudfront.rb', line 9 def perform safe_require 'aws-sdk-v1' safe_require 'uri' access_key_id = config.access_key_id secret_access_key = config.secret_access_key region = config.region distributions = config.distributions batch_size = config.batch_size || 3000 if access_key_id.nil? plugin_puts "Cloudfront access id not specified, Exiting..." exit 1 end if secret_access_key.nil? plugin_puts "Cloudfront access key not specified, Exiting..." exit 1 end if distributions.nil? plugin_puts "Cloudfront distributions not specified, Exiting..." exit 1 end if region.nil? plugin_puts "Cloudfront region not specified, Exiting..." exit 1 end plugin_puts "Beginning URL Purge from CloudFront..." AWS.config( :access_key_id => access_key_id, :secret_access_key => secret_access_key, :region => region ) cf = AWS::CloudFront.new() urls.each_slice(batch_size) do |u| paths = [] u.each { |x| paths << URI.parse(x).path} distributions.each do |distri| plugin_puts "Purging #{u.length} items from #{distri}" result = cf.client.create_invalidation( :distribution_id => distri, :invalidation_batch => { :paths => { :quantity => paths.length, :items => paths }, :caller_reference => "Ipecache_#{Time.now}" } ) plugin_puts "#{result[:id]}: #{result[:status]}, #{result[:invalidation_batch][:paths][:items].length} item(s)" end plugin_puts "This invalidation costs #{paths.length*0.005} Euro" end end |