Module: CloudFrontInterativeInvalidator
- Defined in:
- lib/cloud_front_interative_invalidator.rb,
lib/cloud_front_interative_invalidator/version.rb
Constant Summary collapse
- VERSION =
"0.0.2"
Class Method Summary collapse
- .create_invalidation(distribution_id) ⇒ Object
- .get_invalidation(distribution_id, invalidation_id) ⇒ Object
- .list_distributions(options = {}) ⇒ Object
- .list_invalidations(distribution_id = nil) ⇒ Object
- .show_distribution(distribution_id) ⇒ Object
- .start(params = {}) ⇒ Object
Class Method Details
.create_invalidation(distribution_id) ⇒ Object
72 73 74 75 76 77 78 79 |
# File 'lib/cloud_front_interative_invalidator.rb', line 72 def self.create_invalidation(distribution_id) puts "Input the path to be invalidated:" paths = [] paths << gets.chomp = {distribution_id: distribution_id, invalidation_batch: { paths: { quantity: paths.size, items: paths } , caller_reference: rand.to_s }} tp AWS::CloudFront::Client.new.create_invalidation().data show_distribution(distribution_id) end |
.get_invalidation(distribution_id, invalidation_id) ⇒ Object
81 82 83 |
# File 'lib/cloud_front_interative_invalidator.rb', line 81 def self.get_invalidation(distribution_id, invalidation_id) tp AWS::CloudFront::Client.new.get_invalidation(distribution_id: distribution_id, id: invalidation_id).data end |
.list_distributions(options = {}) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/cloud_front_interative_invalidator.rb', line 28 def self.list_distributions(={}) distributions = [] AWS::CloudFront::Client.new.list_distributions[:items].each_with_index do |item, index| distributions << { number: index + 1, id: item[:id], domain_name: item[:domain_name], origins: item[:origins][:items].map{|i| i[:domain_name]}.join(',') } end tp distributions begin puts "Input the number of the distribution (or anything else to quit):" distribution_input = gets.chomp return unless distribution_input.match(/^[0-9]+$/) distribution_index = distribution_input.to_i - 1 end until distribution_index < distributions.size && distribution_index > 0 distribution_id = distributions[distribution_index][:id] show_distribution(distribution_id) if distribution_id end |
.list_invalidations(distribution_id = nil) ⇒ Object
61 62 63 64 65 66 67 68 69 70 |
# File 'lib/cloud_front_interative_invalidator.rb', line 61 def self.list_invalidations(distribution_id=nil) begin invalidations = AWS::CloudFront::Client.new.list_invalidations(distribution_id: distribution_id) tp invalidations[:items] puts "Refresh? (y/n)" end while gets.chomp.downcase == 'y' invalidation_id = nil #get_invalidation(distribution_id, invalidation_id) show_distribution(distribution_id) end |
.show_distribution(distribution_id) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/cloud_front_interative_invalidator.rb', line 45 def self.show_distribution(distribution_id) #tp AWS::CloudFront::Client.new.get_distribution(id: distribution_id).data puts "Distribution #{distribution_id} selected." puts "l/list: list invalidations" puts "c/create: create invalidations" puts "q/quit: quit current step" actions = { /^(l|list)$/ => :list_invalidations, /^(c|create)$/ => :create_invalidation, /^(q|quit)$/ => :list_distributions, } action = gets.chomp method_name = actions.select{|k,v| k.match(action)}.values.first send(method_name, distribution_id) end |
.start(params = {}) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/cloud_front_interative_invalidator.rb', line 7 def self.start(params={}) tp.set :max_width, 100 if ENV['AWS_ACCESS_KEY_ID'].nil? puts "Input AWS access key id:" ENV['AWS_ACCESS_KEY_ID'] = gets.chomp end if ENV['AWS_SECRET_ACCESS_KEY'].nil? puts "Input AWS secret access key:" ENV['AWS_SECRET_ACCESS_KEY'] = gets.chomp end AWS.config({ :access_key_id => ENV['AWS_ACCESS_KEY_ID'], :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'], }) list_distributions end |