根据对 FQDN 的 Web 请求启动容器实例
Start container instance on web request to FQDN
假设我们有一个很少使用的(容器化的)后端。也许每隔几天左右,一个(静态)网络前端调用该后端的一个 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 容器实例没有启动它们的 webbook 或 HTTP 触发器。但是,您可以使用 Azure Functions 或 Logic App 为您有效 运行 az container start
,然后使用 HTTP 调用它。使用这两种方法中的任何一种,您都必须设置一些 IAM 权限以向 ACI 资源授予 Function 或 Logic App 权限以启动它。
一种方法是:
- 使用 HTTP 触发器和托管标识创建 Azure Functions
- 授予托管身份参与者访问 ACI 容器组的权限
- 运行
az container start
或函数内的等效 REST 调用以启动 ACI 容器
- 调用 Azure 函数(使用函数令牌)启动容器。
假设我们有一个很少使用的(容器化的)后端。也许每隔几天左右,一个(静态)网络前端调用该后端的一个 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 容器实例没有启动它们的 webbook 或 HTTP 触发器。但是,您可以使用 Azure Functions 或 Logic App 为您有效 运行 az container start
,然后使用 HTTP 调用它。使用这两种方法中的任何一种,您都必须设置一些 IAM 权限以向 ACI 资源授予 Function 或 Logic App 权限以启动它。
一种方法是:
- 使用 HTTP 触发器和托管标识创建 Azure Functions
- 授予托管身份参与者访问 ACI 容器组的权限
- 运行
az container start
或函数内的等效 REST 调用以启动 ACI 容器 - 调用 Azure 函数(使用函数令牌)启动容器。