当前我正尝试使用Api Management来公开vnet中的Azure Function http触发器。
在设置完所有内容后,我尝试了一个简单的GET请求,但我收到了一个500错误,告诉我
"messages": [
"Error occured while calling backend service.",
"The remote name could not be resolved: '<function-name>.azurewebsites.net'"
]
我的Azure功能是:
- 使用高级计划创建
- 启用了具有专用终结点的入站流量
- 部署在与我的api管理服务相同的Vnet中
- 从门户添加了httpTrigger模板
- 使用Azure托管DNS名称设置
我的api管理服务是在外部模式下创建的,我在门户中将我的功能链接到了api管理。
我尝试过的东西:
- 我已经仔细检查了是否打开了正确的安全组规则,以便api管理工作
- 我已经确保我的api管理(外部(和Serverless函数都在同一个vnet中
- 我在同一个虚拟网络上部署了一个vm,但无法在那里解析我的函数的dns名称。使用了ping、telnet和nslookup
- 尝试将应用程序设置添加到我的函数中,以指定azure dns服务器以及其他设置
- 我检查了我的私人dns区域是否与我的vnet链接
似乎是DNS名称解析问题,但我似乎无法解决。有什么想法可以导致这个错误吗?
更新
所以这似乎是我的私人端点的一个问题。我创建的每一个没有端点的函数都很好,但我仍然希望有一个私有端点,这样就不能从互联网上访问它。
我知道我可能会锁定我的函数,只从api管理网关ip调用,但如果没有,我宁愿不必硬编码ip。
感谢MayankBargali MSFT|Microsoft Docs发布您的建议作为帮助其他社区成员的答案。
根据错误,APIM无法解析您的azure函数应用程序。请验证自定义DNS是否正确设置你可以参考这个文件了解更多详细信息。需要端口53上的出站访问与DNS服务器的通信。如果上存在自定义DNS服务器VPN网关的另一端,DNS服务器必须可以从子网托管API管理。我还建议你复习一下设置部件的文档。
参考:外部api管理服务无法解析Azure功能服务名称-Microsoft Q&