Class: StackMaster::ParameterResolvers::LatestContainer
- Defined in:
- lib/stack_master/parameter_resolvers/latest_container.rb
Instance Method Summary collapse
-
#initialize(config, stack_definition) ⇒ LatestContainer
constructor
A new instance of LatestContainer.
- #resolve(parameters) ⇒ Object
Methods inherited from Resolver
Constructor Details
#initialize(config, stack_definition) ⇒ LatestContainer
Returns a new instance of LatestContainer.
6 7 8 9 |
# File 'lib/stack_master/parameter_resolvers/latest_container.rb', line 6 def initialize(config, stack_definition) @config = config @stack_definition = stack_definition end |
Instance Method Details
#resolve(parameters) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/stack_master/parameter_resolvers/latest_container.rb', line 11 def resolve(parameters) if parameters['repository_name'].nil? raise ArgumentError, "repository_name parameter is required but was not supplied" end @region = parameters['region'] || @stack_definition.region ecr_client = Aws::ECR::Client.new(region: @region) images = fetch_images(parameters['repository_name'], parameters['registry_id'], ecr_client) unless parameters['tag'].nil? images.select! { |image| image..any? { |tag| tag == parameters['tag'] } } end images.sort! { |image_x, image_y| image_y.image_pushed_at <=> image_x.image_pushed_at } return nil if images.empty? latest_image = images.first # aws_account_id.dkr.ecr.region.amazonaws.com/repository@sha256:digest "#{latest_image.registry_id}.dkr.ecr.#{@region}.amazonaws.com/#{parameters['repository_name']}@#{latest_image.image_digest}" end |