由Azure DataFactory触发时,Azure函数返回403

问题描述

我在触发返回403(HTTP触发器)的Azure函数时遇到问题。

触发是使用Azure数据工厂启动的。

重要的是要提到该功能是通过Azure APIM(API管理)公开的-函数内部设置了限制,以仅允许APIM IP触发该功能的方式设置。

有趣的是,如果我发送“手动”触发器(邮递员,通过本地计算机通过APIM进行HTTP调用),一切都会按预期进行-我能够触发该功能

如果通过Azure DataFactory 403发送了相同的请求,则返回。就像请求永不离开Azure一样,命中该功能的IP也不是APIM IP。这可能吗?如果可以,如何解决呢?

Function,APIM和DataFactory在同一Azure订阅中。

FYI-403来自函数本身,而不是APIM。如果我从该功能删除了访问限制,那么一切都会按预期进行。

另外,为了确保请求通过APIM,对于其中一项测试,我输入了错误的APIM订阅密钥,这次是ADF触发了功能,但我收到了403,但来自APIM,这意味着请求肯定通过网关进行

解决方法

这可能吗,如果可以,如何解决?

我认为这是不可能的,我会在我这边对其进行测试,并且效果很好(无论是在邮递员还是在Data Factory中)。我提供了我的配置供您参考。

1。。我创建了一个APIM,我们可以看到其IP地址。然后将我的函数添加到APIM中。

enter image description here

2。。在我的功能中,我如下配置“访问限制”: enter image description here

3。。然后通过APIM在邮递员处请求URL,成功。 enter image description here

通过Data Factory中的APIM请求url,同样成功。

enter image description here

4。。因此,请检查我的配置是否有任何不同(例如,使用https://funappname.azurewebsites.net/api/HttpTrigger1?clientId=apim-huryAPIM之类的函数url,但不要使用Data Factory请求中APIM的URL)。我的职能APIM和数据工厂位于同一地区(东亚)。