从管道本身取消 Synapse 管道

Cancel Synapse pipeline from the pipeline itself

我有一个管道,如果运行时间过长,我需要将其取消。它可能看起来像这样:

因此,如果工作时间超过 10000 秒,管道将失败并自行取消。问题是,我无法让网络 activity 正常工作。我试过这样的事情: https://docs.microsoft.com/es-es/rest/api/synapse/data-plane/pipeline-run/cancel-pipeline-run

但它甚至无法使用 'Try it' 东西。我收到此错误:

{"code": "InvalidTokenAuthenticationAudience", "message": "Token Authentication failed with SecurityTokenInvalidAudienceException - IDX10214: Audience validation failed. Audiences: '[PII is hidden]'. Did not match: validationParameters.ValidAudience: '[PII is hidden]' or validationParameters.ValidAudiences: '[PII is hidden]'."}

使用这个 URL:

POST https://{workspacename}.dev.azuresynapse.net/pipelineruns/729345a-fh67-2344-908b-345dkd725668d/cancel?api-version=2020-12-01

此外,使用 ADF 似乎很容易做到这一点: https://cloudsafari.ca/2020/09/data-engineering/Azure-DataFactory-Cancel-Pipeline-Run

包括使用托管身份的身份验证,对于 Synapse,我不太确定我应该使用什么资源。关于如何实现我想要的或者我做错了什么的任何想法?

您的 URL 是正确的。只需检查以下内容,然后它就会起作用:

  1. 使用 Role = Contributor

    将工作区的 MSI 添加到工作区资源本身
  2. 在网络 activity 中,将资源设置为“https://dev.azuresynapse.net/”(显然没有引号) 这有点隐藏在文档中,请在此处查看本节的最后一个项目符号:https://docs.microsoft.com/en-us/rest/api/synapse/#common-parameters-and-headers

注意: REST API 无法在 Synapse 中的 DEBUG 中取消管道 运行(您将收到一个错误响应,说明管道未找到 ID)。这意味着要使其工作,您必须先发布管道然后触发它们。