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

在运行PowerShell的Azure函数消费计划中,如何使用系统分配的托管标识创建存储账户上下文?

在运行PowerShell的Azure函数消费计划中,如何使用系统分配的托管标识创建存储账户上下文?

我明白你遇到的问题——New-AzStorageContext确实没有直接支持托管标识的参数,不过有几种可靠的方法可以实现你的需求,下面我一步步给你说明:

方法一:通过获取访问令牌创建上下文

这是最直接且可控的方式,适合需要明确管理令牌生命周期的场景:

  1. 先获取存储服务的访问令牌
    用Get-AzAccessToken获取针对目标存储账户的令牌,注意根据你操作的存储类型(Blob/File等)调整-ResourceUrl:

    $storageAccountName = "你的存储账户名称"
    # 如果是Blob存储用这个ResourceUrl,文件存储换成 https://$storageAccountName.file.core.windows.net
    $token = Get-AzAccessToken -ResourceUrl "https://$storageAccountName.blob.core.windows.net"
    
  2. 用令牌构建存储上下文
    直接使用-AccessToken参数创建上下文:

    $context = New-AzStorageContext -StorageAccountName $storageAccountName -AccessToken $token.Token
    

方法二:通过托管标识登录后创建上下文

如果你的Az模块版本足够新,可以先通过托管标识登录Azure,再直接创建上下文:

  1. 使用系统分配的托管标识登录
    在Azure Functions消费计划中,系统分配的托管标识会被自动识别,无需额外配置:

    Connect-AzAccount -Identity
    

    如果你的函数有多个托管标识(比如同时有系统和用户分配的),可以加上-AccountId指定系统标识的Client ID:Connect-AzAccount -Identity -AccountId $managedIdentityClientId

  2. 创建存储上下文
    登录成功后,直接用存储账户名称创建上下文即可:

    $context = New-AzStorageContext -StorageAccountName $storageAccountName
    

一些重要的注意事项

  • 权限验证:确保你的系统托管标识已经被赋予了合适的存储权限——如果只是操作Blob/File数据,Storage Blob Data Contributor(或对应的数据角色)比Storage Account Contributor更符合最小权限原则,后者是管理层面的权限。
  • 令牌有效期:默认的访问令牌有效期是1小时,如果你的函数运行时间超过这个时长,需要重新获取令牌。
  • 模块版本:确保你使用的Az.Accounts和Az.Storage模块是最新版本,旧版本可能不支持上述参数或功能。

你之前尝试的-UseConnectedAccount参数其实可以配合Connect-AzAccount -Identity一起使用,不过只要登录成功,直接创建上下文就会自动使用当前的托管标识会话了。

备注:内容来源于stack exchange,提问作者Coco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 10:33:12