我开发了一个 Azure 函数,负责将文件导出到存储帐户。在测试阶段,我使用了共享访问签名 (SAS) 连接字符串,并使用下面的 PowerShell 脚本来建立存储帐户上下文:
$context = New-AzStorageContext -ConnectionString $storageConnectionString
当我们转向生产环境时,我的目标是利用 Azure Function 的系统分配的托管标识,该标识在指定的存储帐户中拥有存储帐户贡献者角色。
为了实现这一目标,我尝试使用托管标识创建存储帐户上下文。但是,New-AzStorageContext cmdlet 缺少托管标识的直接参数,导致以下尝试失败:
$context = New-AzStorageContext -StorageAccountName $storageAccountName -UseConnectedAccount -AssignedIdentityId $managedIdentityClientId
我目前正在探索使用托管身份的替代方法,例如获取对象 ID。任何有关如何使用托管标识成功创建存储帐户上下文的建议或指导将不胜感激。谢谢。
为了使用
Managed Identity
的Function App
连接到Azure storage account
,请使用以下方法:-
Azure Functions 身份:-
Azure 存储帐户分配的角色:-
功能应用程序
Http Trigger code
连接到存储帐户:-
using namespace System.Net
param($Request, $TriggerMetadata)
Write-Host "PowerShell HTTP trigger function processed a request."
$name = $Request.Query.Name
if (-not $name) {
$name = $Request.Body.Name
}
$body = "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."
if ($name) {
$body = "Hello, $name. This HTTP triggered function executed successfully."
}
Import-Module Az.Resources
Import-Module Az.Accounts
Import-Module Az.Storage
Connect-AzAccount -Identity
$AccountName = "siliconrgps843f"
$ResourceGroupName = "siliconrgps"
$StorageAccount = Get-AzStorageAccount -Name $AccountName -ResourceGroupName $ResourceGroupName
$storageAccountJson = $StorageAccount | ConvertTo-Json -Depth 4
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $storageAccountJson
})
我正在使用以下代码使用 Function App 托管身份连接到我的 Azure 帐户参考MS Document:-
# Authenticate with Azure
Connect-AzAccount -Identity
此外,您无法为托管身份添加存储帐户上下文,因为根据此 MS Document,该选项不可用。