module Covalence::S3

Constants

REGION
AWS ennvironment variables #####

AWS_ACCESS_KEY_ID – AWS access key. AWS_SECRET_ACCESS_KEY – AWS secret key. Access and secret key variables override

credentials stored in credential and config files.

AWS_REGION – AWS region. This variable overrides the default region of the in-use

profile, if set.

Public Class Methods

get_state_store(params, workspace_enabled=false) click to toggle source

Return configuration for remote state store.

# File lib/covalence/core/state_stores/s3.rb, line 77
    def self.get_state_store(params, workspace_enabled=false)
      raise "State store parameters must be a Hash" unless params.is_a?(Hash)
      required_params = [
        'bucket',
        'name'
      ]
      required_params.each do |param|
        raise "Missing '#{param}' store parameter" unless params.has_key?(param)
      end

      config = <<-CONF
terraform {
  backend "s3" {
CONF

      if !params.has_key?('key')
        Covalence::LOGGER.debug "'key' parameter not specified. Inferring value from 'name' parameter."

        if workspace_enabled
          config += "    key = \"terraform.tfstate\"\n"
        else
          config += "    key = \"#{params['name']}/terraform.tfstate\"\n"
        end
      end

      if !params.has_key?('workspace_key_prefix')
        if workspace_enabled
          Covalence::LOGGER.debug "'workspace_key_prefix' parameter not specified. Inferring value from 'name' parameter."
          config += "    workspace_key_prefix = \"#{params['name']}\"\n"
        end
      end

      params.each do |k,v|
        next if k == 'name'

        v = Covalence::Helpers::ShellInterpolation.parse_shell(v) if v.to_s.include?("$(")
        config += "    #{k} = \"#{v}\"\n"
      end

      config += "  }\n}\n"

      return config
    end
has_state_store?() click to toggle source

def self.has_state_read? return true end

# File lib/covalence/core/state_stores/s3.rb, line 135
def self.has_state_store?
  return true
end
lookup(type, params) click to toggle source

Key lookups

# File lib/covalence/core/state_stores/s3.rb, line 140
def self.lookup(type, params)
  raise "Lookup parameters must be a Hash" unless params.is_a?(Hash)

  case
  when type == 'key' || type == 'state'
    required_params = [
      'bucket',
      'document',
      'key'
    ]
    required_params.each do |param|
      raise "Missing '#{param}' lookup parameter" unless params.has_key?(param)
    end
    raise "Missing 'key' lookup parameter" unless params.has_key? 'key'
    client = S3::Client.new(region: REGION)
    client.get_key(params['bucket'],params['document'],params['key'])
  end
end