def extract_hash(collection_name, key_name, value_name)
      handling_cf_errors do
        {}.tap do |result|
          cf_stack.public_send(collection_name).each do |item|
            key = item.public_send(key_name)
            value = item.public_send(value_name)
            result[key] = value
          end
        end
      end
    end
def extract_hash(collection_name, key_name, value_name)
      handling_cf_errors do
        {}.tap do |result|
          cf_stack.public_send(collection_name).each do |item|
            key = item.public_send(key_name)
            value = item.public_send(value_name)
            result[key] = value
          end
        end
      end
    end
Extract data from a collection attribute of the stack.

 @param [Symbol] collection_name collection attribute name
 @param [Symbol] key_name name of item attribute that provides key
 @param [Symbol] value_name name of item attribute that provides value
 @return [Hash<String, String>] mapping of collection