class Conrad::Emitters::AmazonBase

Base class for AWS-based emitters

Attributes

access_key_id[RW]

@deprecated Will be removed in 3.0.0, no migration path @return [String, nil] the configured AWS Access key ID

client[RW]

@return [Aws::SQS::Client] the created client

region[RW]

@return [String, nil] the configured region

secret_access_key[RW]

@deprecated Will be removed in 3.0.0, no migration path @return [String, nil] the configured AWS secret access key

Public Class Methods

new(args = {}) click to toggle source

@param queue_url [String] the queue to send messages to @param region [String] region the queue lives in @param access_key_id [String] AWS Acesss Key ID @param secret_access_key [String] AWS Secret Access Key

@raise [InvalidAwsCredentials] if access_key_id or secret_access_key are

not provided AND the running environment does not have valid AWS
credentials

@raise [Aws::Errors::MissingRegionError] if region is not provided and

also not set via an allowed AWS environment variable
Calls superclass method
# File lib/conrad/emitters/amazon_base.rb, line 34
def initialize(args = {})
  super
  create_client(region: region, access_key_id: access_key_id, secret_access_key: secret_access_key)
end

Private Instance Methods

create_client(region:, access_key_id:, secret_access_key:) click to toggle source
# File lib/conrad/emitters/amazon_base.rb, line 41
def create_client(region:, access_key_id:, secret_access_key:)
  if secret_access_key.nil? || access_key_id.nil?
    validate_implicit_credentials

    @client = self.class.client_class.new({ region: region }.compact)
  else
    @client = self.class.client_class.new({
      region: region,
      access_key_id: access_key_id,
      secret_access_key: secret_access_key
    }.compact)
  end
end
validate_implicit_credentials() click to toggle source
# File lib/conrad/emitters/amazon_base.rb, line 55
def validate_implicit_credentials
  raise Conrad::InvalidAwsCredentials unless Aws::CredentialProviderChain.new.resolve&.set?
end