class OpenStudio::Aws::Config

Attributes

access_key[RW]
secret_key[RW]

Public Class Methods

new(yml_config_file = nil) click to toggle source
# File lib/openstudio/aws/config.rb, line 44
def initialize(yml_config_file = nil)
  # If the AWS keys are set in the env variable and the yml_config_file is nil, then use those keys
  @access_key = ENV['AWS_ACCESS_KEY_ID'] if ENV['AWS_ACCESS_KEY_ID']
  @secret_key = ENV['AWS_SECRET_ACCESS_KEY'] if ENV['AWS_SECRET_ACCESS_KEY']

  if @access_key && @secret_key && yml_config_file.nil?
    logger.info 'Using AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY from environment variables'
  else
    # Otherwise read the file
    logger.info 'Reading AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY from aws config file'

    @yml_config_file = yml_config_file
    @config = nil

    @yml_config_file = File.join(File.expand_path('~'), 'aws_config.yml') if @yml_config_file.nil?

    unless File.exist?(@yml_config_file)
      write_config_file
      raise "Config file not found. A template has been added, please edit and save: #{@yml_config_file}"
      exit 1
    end

    begin
      @config = YAML.load(File.read(@yml_config_file))

      # always convert to symbolized hash
      @config = @config.inject({}) { |a, (k, v)| a[k.to_sym] = v; a }

      @access_key = @config[:access_key_id]
      @secret_key = @config[:secret_access_key]
    rescue StandardError
      raise "Couldn't read config file #{@yml_config_file}. Delete file then recreate by rerunning script"
    end
  end
end

Private Instance Methods

write_config_file() click to toggle source
# File lib/openstudio/aws/config.rb, line 82
def write_config_file
  # create the file
  data = {
    access_key_id: 'YOUR_ACCESS_KEY_ID',
    secret_access_key: 'YOUR_SECRET_ACCESS_KEY'
  }

  File.open(@yml_config_file, 'w') { |f| f << data.to_yaml }
end