class CfnResponse::Builder
Public Instance Methods
call(input={})
click to toggle source
# File lib/cfn_response/builder.rb, line 3 def call(input={}) input.transform_keys! { |k| k.to_s } default = { "Reason" => default_reason, "Status" => "SUCCESS", "PhysicalResourceId" => physical_resource_id(input["PhysicalResourceId"]) } resp = default.merge(input) verbatim = @event.slice("StackId", "RequestId", "LogicalResourceId") # pass these through verbatim verbatim.merge(resp) # final resp end
current_physical_resource_id()
click to toggle source
# File lib/cfn_response/builder.rb, line 35 def current_physical_resource_id @event["PhysicalResourceId"] || "PhysicalResourceId" end
default_reason()
click to toggle source
# File lib/cfn_response/builder.rb, line 39 def default_reason "See the details in CloudWatch Log Group: #{@context.log_group_name} Log Stream: #{@context.log_stream_name}" end
new_physical_resource_id()
click to toggle source
# File lib/cfn_response/builder.rb, line 27 def new_physical_resource_id regexp = /(\d+$)/ md = current_physical_resource_id.match(regexp) # capture trailing number n = md ? md[1].to_i + 1 : 1 basename = current_physical_resource_id.sub(regexp,'') # remove trailing number "#{basename}#{n}" end
physical_resource_id(id)
click to toggle source
# File lib/cfn_response/builder.rb, line 17 def physical_resource_id(id) if id.nil? current_physical_resource_id elsif id == :new_physical_resource_id or id == :new_id new_physical_resource_id else id end end