code: def _fetch_layer_uri(self, layer):
          
          try:
              layer_version_response = self.lambda_client.get_layer_version(LayerName=layer.layer_arn,
                                                                            VersionNumber=layer.version)
          except NoCredentialsError:
              raise CredentialsRequired("Layers require credentials to download the layers locally.")
          except ClientError as e:
              error_code = e.response.get('Error').get('Code')
              error_exc = {
                  'AccessDeniedException': CredentialsRequired(
                      "Credentials provided are missing lambda:Getlayerversion policy that is needed to download the "
                      "layer or you do not have permission to download the layer"),
                  'ResourceNotFoundException': ResourceNotFound("{} was not found.".format(layer.arn))
              }
  
              if error_code in error_exc:
                  raise error_exc[error_code]
  
              # If it was not 'AccessDeniedException' or 'ResourceNotFoundException' re-raise
              raise e
  
          return layer_version_response.get("Content").get("Location")
docs: Fetch the Layer Uri based on the LayerVersion Arn
  
          Parameters
          ----------
          layer samcli.commands.local.lib.provider.LayerVersion
              LayerVersion to fetch
  
          Returns
          -------
          str
              The Uri to download the LayerVersion Content from
  
          Raises
          ------
          samcli.commands.local.cli_common.user_exceptions.NoCredentialsError
              When the Credentials given are not sufficient to call AWS Lambda