<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _fetch_layer_uri(self, layer):
 """ 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 """

        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")