module Slugforge::Helper::Fog
Public Instance Methods
autoscaling()
click to toggle source
# File lib/slugforge/helper/fog.rb, line 13 def autoscaling @autoscaling ||= ::Fog::AWS::AutoScaling.new(aws_credentials) end
aws_bucket()
click to toggle source
# File lib/slugforge/helper/fog.rb, line 31 def aws_bucket config.slug_bucket || raise(error_class, "You must specify a slug bucket in your configuration") end
aws_credentials()
click to toggle source
# File lib/slugforge/helper/fog.rb, line 23 def aws_credentials { :aws_access_key_id => verify_aws_config(config.aws_access_key, 'access key'), :aws_secret_access_key => verify_aws_config(config.aws_secret_key, 'secret key'), :aws_session_token => config.aws_session_token }.reject{ |_,v| v.nil? } end
aws_session(duration = 30)
click to toggle source
Create a temporary AWS session @return [Hash] hash containing :access_key_id, :secret_access_key, :session_token
# File lib/slugforge/helper/fog.rb, line 42 def aws_session(duration = 30) @aws_session ||= begin sts = ::Fog::AWS::STS.new(aws_credentials) # Request a token for the user that has permissions masked to a single S3 bucket and only lasts a short time token = sts.get_federation_token( username, bucket_policy, duration * 60 ) # session duration in minutes { aws_access_key_id: token.body['AccessKeyId'], aws_secret_access_key: token.body['SecretAccessKey'], aws_session_token: token.body['SessionToken'], aws_region: config.aws_region } end end
compute()
click to toggle source
# File lib/slugforge/helper/fog.rb, line 6 def compute @compute ||= ::Fog::Compute.new(aws_credentials.merge({ :region => config.aws_region, :provider => 'AWS' })) end
expiring_url(file, expiration=nil)
click to toggle source
# File lib/slugforge/helper/fog.rb, line 35 def expiring_url(file, expiration=nil) expiration ||= Time.now + 60*60 file.url(expiration) end
s3()
click to toggle source
# File lib/slugforge/helper/fog.rb, line 17 def s3 @s3 ||= ::Fog::Storage.new(aws_credentials.merge({ :provider => 'AWS' })) end
Private Instance Methods
bucket_policy(bucket = aws_bucket)
click to toggle source
# File lib/slugforge/helper/fog.rb, line 68 def bucket_policy(bucket = aws_bucket) { "Version" => "2012-10-17", "Statement" => [ { "Action" => ["s3:*"], "Effect" => "Allow", "Resource" => ["arn:aws:s3:::#{bucket}/*"] }, { "Action" => [ "s3:ListBucket" ], "Effect" => "Allow", "Resource" => [ "arn:aws:s3:::#{bucket}" ] } ] } end
username()
click to toggle source
# File lib/slugforge/helper/fog.rb, line 59 def username `whoami`.chomp end
verify_aws_config(variable, message)
click to toggle source
# File lib/slugforge/helper/fog.rb, line 63 def verify_aws_config(variable, message) raise error_class, "AWS #{message} is required to access AWS" unless variable variable end