Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure 在对FQDN的web请求上启动容器实例_Azure_Azure Container Instances - Fatal编程技术网

Azure 在对FQDN的web请求上启动容器实例

Azure 在对FQDN的web请求上启动容器实例,azure,azure-container-instances,Azure,Azure Container Instances,假设我们有一个(集装箱化)后端,它只被很少使用。可能每隔几天左右,一个(静态)web前端就会调用该后端的API端点 后端恰好是无状态的。没有数据存储或任何东西 我们希望尽可能降低托管成本,理想情况下希望每秒计费。它每个月只运行几分钟,我们只想收取使用费。基本上,我们需要功能即服务(FaaS),但需要整个后端,而不仅仅是单个功能 Azure容器实例似乎非常适合此场景。它可以在需要时在容器中启动后端。在一段时间不使用后,后端可以再次关闭 那么,让我们创建一个容器实例 az container cre

假设我们有一个(集装箱化)后端,它只被很少使用。可能每隔几天左右,一个(静态)web前端就会调用该后端的API端点

后端恰好是无状态的。没有数据存储或任何东西

我们希望尽可能降低托管成本,理想情况下希望每秒计费。它每个月只运行几分钟,我们只想收取使用费。基本上,我们需要功能即服务(FaaS),但需要整个后端,而不仅仅是单个功能

Azure容器实例似乎非常适合此场景。它可以在需要时在容器中启动后端。在一段时间不使用后,后端可以再次关闭

那么,让我们创建一个容器实例

az container create \
    --resource-group myResourceGroup \
    --name mycontainer \
    --image mycontainerimage \
    --restart-policy Never
    --dns-name-label mybackend123 
    --ports 80
很好,我们的后端在其FQDN
http://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资源以启动它

一种办法是:

  • 使用HTTP触发器和托管标识创建Azure函数
  • 授予托管标识参与者对ACI容器组的访问权限
  • 在函数中运行
    az container start
    或等效的REST调用以启动ACI容器
  • 调用Azure函数(使用函数令牌)以启动容器

  • 我正要输入相同的内容,但@BrandonOlin比我快了,所以我想我只是添加一条评论。您可以创建一个在消费计划上运行的函数来启动,然后调用ACI。或者,只需在函数中运行容器本身,但要做到这一点,您将无法在消费计划中运行它。但是你可以在一个低成本的应用服务计划上运行它,这不是免费的(不能对容器使用免费层),但会很便宜。是的,在函数中运行容器也是另一种选择!