Class: AwsSsmEnv::Fetcher Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/aws-ssm-env/fetcher.rb

Overview

This class is abstract.

AWSのParameter Storeからパラメータを取得するための基底抽象クラス。Iteratorパターンを実装。 このクラスのサブクラスは‘fetch`メソッドを実装する必要がある。 実装クラスを AwsSsmEnv#load の引数に渡すことによりパラメータの取得方法を切り替えられるようにする。

Author:

  • Ryohei Sonoda

Since:

  • 0.1.0

Direct Known Subclasses

BeginsWithFetcher, PathFetcher

Instance Method Summary collapse

Constructor Details

#initialize(**args) ⇒ Fetcher

ここの引数は AwsSsmEnv#load の呼び出し時に渡された引数がそのまま渡される。 実装クラスによって‘args`の内容は変化するが、decryption, client, ssm_client_args は全サブクラス共通。

Parameters:

  • args (Hash)

    AwsSsmEnv#load の呼び出し時に渡された引数。

Options Hash (**args):

  • :decryption (Boolean)

    <optional> SecureStringパラメータを復号化するかどうか。デフォルトはtrue(復号化する)。

  • :client (Aws::SSM::Client)

    <optional> Aws::SSM::Clientのインスタンス。 指定されなかった場合は‘ssm_client_args`を引数にして Aws::SSM::Client#new される。

  • :ssm_client_args (Hash)

    Aws::SSM::Client#new を実行するときの引数。

See Also:

Since:

  • 0.1.0



25
26
27
28
# File 'lib/aws-ssm-env/fetcher.rb', line 25

def initialize(**args)
  @client = create_ssm_client(args)
  @with_decryption = with_decryption?(args)
end

Instance Method Details

#each {|consumer| ... } ⇒ Object

Iteratorパターンを実装したメソッド。AwsSsmEnv#load から呼び出される。 実際のパラメータ取得はサブクラスで実装された fetch メソッドで行う。

Yields:

  • (consumer)

    取得したパラメータを受け取って処理を行うブロック引数。

Yield Parameters:

  • parameter (Aws::SSM::Types::Parameter)

    パラメータ

Since:

  • 0.1.0



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/aws-ssm-env/fetcher.rb', line 34

def each
  next_token = nil
  loop do
    response = fetch(next_token)
    next_token = response.next_token
    if response.parameters.empty?
      break
    end
    response.parameters.each do |p|
      yield(p)
    end
    if next_token.nil?
      break
    end
  end
end