升级Azure Function至v4:如何用Azure.ResourceManager.ContainerInstance创建容器实例?
使用Azure.ResourceManager.ContainerInstance创建容器实例(替代弃用的Fluent包)
Azure.ResourceManager.ContainerInstance采用了基于Azure REST API的原生资源模型,替代了原Fluent包的链式构建风格。以下是对应你原有功能的实现代码:
前置准备
确保已安装所需NuGet包:
Install-Package Azure.ResourceManager.ContainerInstance Install-Package Azure.Identity
实现代码
using Azure.Identity; using Azure.ResourceManager; using Azure.ResourceManager.ContainerInstance; using Azure.ResourceManager.ContainerInstance.Models; using System.Linq; using System.Threading.Tasks; // 初始化ARM客户端(自动适配本地开发、Azure托管环境等场景的身份验证) var armClient = new ArmClient(new DefaultAzureCredential()); // 定位目标资源组(替换为你的订阅ID) var resourceGroupId = $"/subscriptions/{yourSubscriptionId}/resourceGroups/{resourceGroupName}"; var resourceGroup = await armClient.GetResourceGroupResource(new Azure.Core.ResourceIdentifier(resourceGroupId)).GetAsync(); // 构建容器组配置数据,完全匹配原有功能 var containerGroupData = new ContainerGroupData(azureRegion) { OsType = ContainerGroupOsType.Linux, DnsPrefix = containerGroupName, RestartPolicy = ContainerGroupRestartPolicy.Never, // 配置私有镜像仓库凭证 ImageRegistryCredentials = { new ImageRegistryCredential(registryServer, registryUsername, registryPassword) }, // 定义容器实例 Containers = { new ContainerInstance(containerInstanceName, containerImage) { // 配置CPU和内存资源 Resources = new ContainerResources( cpu: double.Parse(Config.ContainerCpuCoreCount), memoryInGB: double.Parse(Config.ContainerMemorySize) ), // 配置对外TCP端口 Ports = { new ContainerPort(int.Parse(Config.ContainerTcpPort)) }, // 转换原有环境变量格式 EnvironmentVariables = envVars.Select(kv => new EnvironmentVariable(kv.Key, kv.Value)).ToList() } } }; // 执行容器组创建操作,等待完成 var createOperation = await resourceGroup.GetContainerGroups().CreateOrUpdateAsync(Azure.WaitUntil.Completed, containerGroupName, containerGroupData); var containerGroup = createOperation.Value;
关键差异说明
- 身份验证:使用
DefaultAzureCredential自动适配不同环境的身份验证方式(本地开发用Azure CLI/VS登录,Azure托管环境用托管标识),替代原Fluent包的手动客户端初始化 - 资源定位:通过资源ID直接定位资源组,符合ARM资源模型的设计思路
- 配置方式:从链式
Define()调用转为直接构建ContainerGroupData对象,属性配置更直观,与Azure REST API请求结构一致 - 异步优先:所有操作默认提供异步方法,适配Azure Function v4的异步编程模型
内容的提问来源于stack exchange,提问作者PT2550
相关产品推荐
相关产品推荐

