diff --git a/lib/awspec/helper/finder/ssm_parameter.rb b/lib/awspec/helper/finder/ssm_parameter.rb index a54db831..bdf03988 100644 --- a/lib/awspec/helper/finder/ssm_parameter.rb +++ b/lib/awspec/helper/finder/ssm_parameter.rb @@ -4,16 +4,23 @@ module Awspec::Helper module Finder module SsmParameter def find_ssm_parameter(name) - ssm_client.describe_parameters( - { - filters: [ - { - key: 'Name', - values: [name] - } - ] - } - ).parameters[0] + req = { + filters: [ + { + key: 'Name', + values: [name] + } + ] + } + loop do + res = ssm_client.describe_parameters(req) + if res.parameters.size >= 1 + return res.parameters.first + end + break if res.next_token.nil? + + req[:next_token] = res.next_token + end end def find_parameter_tag(id, tag_key) diff --git a/lib/awspec/stub/ssm_parameter.rb b/lib/awspec/stub/ssm_parameter.rb index 3d52fa2f..9bebd687 100644 --- a/lib/awspec/stub/ssm_parameter.rb +++ b/lib/awspec/stub/ssm_parameter.rb @@ -1,18 +1,30 @@ # frozen_string_literal: true -Aws.config[:ssm] = { - stub_responses: { - describe_parameters: { +def describe_parameters_response(context) + next_token = 'eyJOZXh0VG9rZW4iOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAxfQ==' + if context.params[:next_token] == next_token + { parameters: [ { name: 'my-parameter', type: 'SecureString', key_id: 'alias/aws/ssm', description: 'Some description', - version: 1, - next_token: nil + version: 1 } - ] + ], + next_token: nil + } + else + { + parameters: [], + next_token: next_token } + end +end + +Aws.config[:ssm] = { + stub_responses: { + describe_parameters: ->(context) { describe_parameters_response(context) } } }