C# 向外部方进行出站呼叫时,Azure函数中没有静态IP地址

C# 向外部方进行出站呼叫时,Azure函数中没有静态IP地址,c#,azure,azure-functions,C#,Azure,Azure Functions,我在消费计划上有一个Azure持久功能应用程序,它具有执行一组活动的Orchestrator功能。活动可以是将文件写入外部SFTP服务器,该服务器只允许连接白名单上的IP。Azure函数没有静态IP地址,但IP地址范围较大,这是不可接受的,因为外部SFTP服务器只接受1个或几个IP地址 如何更好地缓解这一问题?是否可以使用Azure网关/Azure Api管理,或者更确切地说,它有助于入站连接,而不是将写入外部SFTP的活动功能?应该使用某种代理吗 您将需要任何支持公共静态ip地址的服务。您应该

我在消费计划上有一个Azure持久功能应用程序,它具有执行一组活动的Orchestrator功能。活动可以是将文件写入外部SFTP服务器,该服务器只允许连接白名单上的IP。Azure函数没有静态IP地址,但IP地址范围较大,这是不可接受的,因为外部SFTP服务器只接受1个或几个IP地址


如何更好地缓解这一问题?是否可以使用Azure网关/Azure Api管理,或者更确切地说,它有助于入站连接,而不是将写入外部SFTP的活动功能?应该使用某种代理吗

您将需要任何支持公共静态ip地址的服务。您应该比较价格/复杂性,以将当前解决方案更改为其中之一


PS:值得一提的是,目前,消费计划中的API管理不接受静态ip地址。

如果没有其他管理良好的解决方案可供使用,一个选项是将FTP文件转储到blob存储,并通过包含文件引用的消息队列向VM群集发送消息


可以将这些静态IP虚拟机设置为侦听消息队列,从blob存储中检索文件,并将其上载到外部FTP站点。如果速度太慢,您可以添加更多虚拟机来侦听队列

您需要为此使用函数吗?如果您想要一个静态IP,充当反向代理,那么您必须在某个地方运行一个服务器,我假设FTP服务器不一定是可伸缩的。与其通过Azure函数路由请求,通过反向代理服务器,为什么不直接从普通服务器发送呢?如果您想运行一个慢的或长时间运行的任务,可以考虑WebJooWork。函数不用于编写外部SFTP,该活动是许多其他的工作之一,并且在不需要为其逻辑具有静态IP的情况下工作得很好。问题在于,当一个AppService或VM成为瓶颈时,正在执行大量函数的调用。我不想更改当前的解决方案,因为它无服务器且高度可扩展,适用于不同的活动,但应具有静态IP地址的活动除外。到目前为止,我已经尝试将写入外部SFTP功能转移到VM或AppService Web Api,并执行对AppService或VM的调用,该VM具有静态IP地址,并且可以写入外部SFTP:但限制是,对于函数,我目前有1000个活动正在执行,它们需要立即调用AppService Web Api,于是我启动了从Web接收超时Api@OleksandrTedikov,Web API处理请求的速度太慢,还是太“突发”?如果它过于突发,您可以通过消息队列发送这些请求,并将其馈送到web API中,以便它能够以自己的速度使用它们。然而,在这一点上,使用反向代理可能会更容易。因为我从Azure Function activity调用,所以在超时前大约有230秒,所以当一次向Web Api发出1000个请求时,它会处理这些请求,但例如在5分钟内,所以这一部分的时间out@Slothario除非您正在谈论将web api托管到虚拟机中,否则结果将是相同的,因为Azure函数在应用程序服务上运行,应用程序服务具有一系列输出ip地址。如果使用虚拟机,谁将侦听消息队列?应该是Windows服务吗?或者某种部署到VM的Web作业?@OleksandrTedikov可能是。