Module: Certman::Resource::S3
- Included in:
- Client
- Defined in:
- lib/certman/resource/s3.rb
Instance Method Summary collapse
Instance Method Details
#check_approval_mail ⇒ Object
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 68 69 |
# File 'lib/certman/resource/s3.rb', line 42 def check_approval_mail is_break = false 30.times do sleep 60 s3.list_objects(bucket: bucket_name).contents.map do |object| res = s3.get_object(bucket: bucket_name, key: object.key) res.body.read.match(%r{https://[^\s]*certificates\.amazon\.com/approvals[^\s]+}) do |md| cert_uri = md[0] handle = open(cert_uri) document = Oga.parse_html(handle) data = {} document.css('form input').each do |input| data[input.get('name')] = input.get('value') end post_uri = cert_uri.sub(/\?.*/, '') res = Net::HTTP.post_form(URI.parse(post_uri), data) raise 'Can not approve' unless res.body =~ /Success/ # success is_break = true break end end break if is_break break if @do_rollback resend_validation_email end raise 'Can not approve' unless is_break end |
#create_bucket ⇒ Object
4 5 6 7 8 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 |
# File 'lib/certman/resource/s3.rb', line 4 def create_bucket account_id = sts.get_caller_identity.account bucket_policy = <<-"EOF" { "Version": "2008-10-17", "Statement": [ { "Sid": "GiveSESPermissionToWriteEmail", "Effect": "Allow", "Principal": { "Service": [ "ses.amazonaws.com" ] }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::#{bucket_name}/*", "Condition": { "StringEquals": { "aws:Referer": "#{account_id}" } } } ] } EOF s3.create_bucket( acl: 'private', bucket: bucket_name ) s3.put_bucket_policy( bucket: bucket_name, policy: bucket_policy, use_accelerate_endpoint: false ) end |
#delete_bucket ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/certman/resource/s3.rb', line 71 def delete_bucket objects = s3.list_objects(bucket: bucket_name).contents.map do |object| { key: object.key } end unless objects.empty? s3.delete_objects( bucket: bucket_name, delete: { objects: objects } ) end s3.delete_bucket(bucket: bucket_name) end |
#s3 ⇒ Object
86 87 88 |
# File 'lib/certman/resource/s3.rb', line 86 def s3 @s3 ||= Aws::S3::Client.new end |