You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 16:22:37