Azure 在对FQDN的web请求上启动容器实例
假设我们有一个(集装箱化)后端,它只被很少使用。可能每隔几天左右,一个(静态)web前端就会调用该后端的API端点 后端恰好是无状态的。没有数据存储或任何东西 我们希望尽可能降低托管成本,理想情况下希望每秒计费。它每个月只运行几分钟,我们只想收取使用费。基本上,我们需要功能即服务(FaaS),但需要整个后端,而不仅仅是单个功能 Azure容器实例似乎非常适合此场景。它可以在需要时在容器中启动后端。在一段时间不使用后,后端可以再次关闭 那么,让我们创建一个容器实例Azure 在对FQDN的web请求上启动容器实例,azure,azure-container-instances,Azure,Azure Container Instances,假设我们有一个(集装箱化)后端,它只被很少使用。可能每隔几天左右,一个(静态)web前端就会调用该后端的API端点 后端恰好是无状态的。没有数据存储或任何东西 我们希望尽可能降低托管成本,理想情况下希望每秒计费。它每个月只运行几分钟,我们只想收取使用费。基本上,我们需要功能即服务(FaaS),但需要整个后端,而不仅仅是单个功能 Azure容器实例似乎非常适合此场景。它可以在需要时在容器中启动后端。在一段时间不使用后,后端可以再次关闭 那么,让我们创建一个容器实例 az container cre
az container create \
--resource-group myResourceGroup \
--name mycontainer \
--image mycontainerimage \
--restart-policy Never
--dns-name-label mybackend123
--ports 80
很好,我们的后端在其FQDNhttp://mybackend123.eastus.azurecontainer.io
如上所述,它将在一段时间不使用后自动关闭。多亏了--restart policy Never
,ACI不会重新启动容器,而是将其保持在状态Stopped
我的问题是:如果对FQDN的web请求到达,有没有办法再次自动启动容器?
当然,我们可以通过跑步来唤醒它
az container start --resource-group myResourceGroup --name mycontainer
。。。或者使用等效的API调用。但是这样做的服务需要一直运行!理想情况下,我希望容器在收到请求时自行启动。Azure容器实例没有启动它们的wehbook或HTTP触发器。但是,您可以使用Azure函数或逻辑应用程序来有效地为您运行
az container start
,然后使用HTTP调用它。使用这两种方法中的任何一种,您都必须设置一些IAM权限,以便将函数或逻辑应用程序权限授予ACI资源以启动它
一种办法是:
az container start
或等效的REST调用以启动ACI容器我正要输入相同的内容,但@BrandonOlin比我快了,所以我想我只是添加一条评论。您可以创建一个在消费计划上运行的函数来启动,然后调用ACI。或者,只需在函数中运行容器本身,但要做到这一点,您将无法在消费计划中运行它。但是你可以在一个低成本的应用服务计划上运行它,这不是免费的(不能对容器使用免费层),但会很便宜。是的,在函数中运行容器也是另一种选择!