code: def _parse_layer_info(list_of_layers, resources):
          
          layers = []
          for layer in list_of_layers:
              # If the layer is a string, assume it is the arn
              if isinstance(layer, six.string_types):
                  layers.append(LayerVersion(layer, None))
                  continue
  
              # In the list of layers that is defined within a template, you can reference a LayerVersion resource.
              # When running locally, we need to follow that Ref so we can extract the local path to the layer code.
              if isinstance(layer, dict) and layer.get("Ref"):
                  layer_logical_id = layer.get("Ref")
                  layer_resource = resources.get(layer_logical_id)
                  if not layer_resource or \
                          layer_resource.get("Type", "") not in (SamFunctionProvider._SERVERLESS_LAYER,
                                                                 SamFunctionProvider._LAMBDA_LAYER):
                      raise InvalidLayerReference()
  
                  layer_properties = layer_resource.get("Properties", {})
                  resource_type = layer_resource.get("Type")
                  codeuri = None
  
                  if resource_type == SamFunctionProvider._LAMBDA_LAYER:
                      codeuri = SamFunctionProvider._extract_lambda_function_code(layer_properties, "Content")
  
                  if resource_type == SamFunctionProvider._SERVERLESS_LAYER:
                      codeuri = SamFunctionProvider._extract_sam_function_codeuri(layer_logical_id,
                                                                                  layer_properties,
                                                                                  "ContentUri")
  
                  layers.append(LayerVersion(layer_logical_id, codeuri))
  
          return layers
docs: Creates a list of Layer objects that are represented by the resources and the list of layers
  
          Parameters
          ----------
          list_of_layers List(str)
              List of layers that are defined within the Layers Property on a function
          resources dict
              The Resources dictionary defined in a template
  
          Returns
          -------
          List(samcli.commands.local.lib.provider.Layer)
              List of the Layer objects created from the template and layer list defined on the function. The order
              of the layers does not change.
  
              I.E: list_of_layers = ["layer1", "layer2"] the return would be [Layer("layer1"), Layer("layer2")]