运行 函数应用程序中的 New-AzureRmResourceGroupDeployment

Running New-AzureRmResourceGroupDeployment from within a Function App

我需要连接一个临时的无状态工作者来执行一个长时间的 运行ning 作业,该作业基于完成后自毁的用户操作。我正在尝试从 PoSh 函数应用程序中 运行 New-AzureRmResourceGroupDeployment,但无法弄清楚如何从 PoSh 脚本中向 Azure 进行身份验证。

我试过这个:

$accountName = "myID@mydomain.com"
$pwd = ConvertTo-SecureString "password" -AsPlainText -Force

$cred = new-object PSCredential($accountName, $pwd)

Add-AzureRmAccount -Credential $cred
New-AzureResourceGroupDeployment -ResourceGroupName yadda yadda

我收到一条错误消息,提示我需要使用组织 ID(我就是这样,我们的 Azure AD 是联合的,我们使用 AD Sync(如果重要的话,还有 SiteMinder w/o WS-*)) :

 Add-AzureRmAccount : -Credential parameter can only be used with Organization ID credentials. For more information, please refer to http://go.microsoft.com/fwlink/?linkid=331007&clcid=0x409 for more information about the difference between an organizational account and a Microsoft account.

我试过 "Login-AzureRMAccount -Credential $cred",结果相似。

如果我在本地机器(加入 AD 的成员)上使用 -Credential 标志从 PoSh window 执行 Add- 或 Login- cmdlet,我会收到类似的错误。如果我 运行 没有凭据的 cmdlet,系统会通过交互式 ID/PW window 提示我输入凭据(输入我的 ID 后我不必输入密码)。

有谁知道我如何进行身份验证?我可以像上面那样进行身份验证,从我们的网络层传递某种凭证,甚至是我不知道的选项 C。

为此,您需要使用服务主体身份验证。我认为将 Azure Doc 复制粘贴到此答案没有任何意义,只需查阅此文档:

https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-authenticate-service-principal

您将需要使用服务主体进行身份验证。可以在此处找到带有说明的示例。