gpt4 book ai didi

azure - 使用 AZ PowerShell 获取函数 URL

转载 作者:行者123 更新时间:2023-12-02 23:33:02 25 4
gpt4 key购买 nike

在 PowerShell 中,我尝试检索函数应用程序的调用 URL 和 key 。经过几个小时的尝试,我在调用 URL 方面遇到了障碍。这实际上可能吗?

由于 Microsoft 没有提供与 az rest 相当的功能,因此我一直在查看 Invoke-AzResourceAction ,其文档如下 -

The Invoke-AzResourceAction cmdlet invokes an action on a specified Azure resource. To get a list of supported actions, use the Azure Resource Explorer tool.

使用一段时间后 Azure Resource Explorer tool我意识到这并不是很有帮助,所以我开始寻找其他选项并发现 Get-AzProviderOperation

The Get-AzProviderOperation gets the operations exposed by Azure resource providers.

使用上面的命令我可以看到有三个可用的操作 -

Operation                                        OperationName                   ProviderNamespace  ResourceName       Description            IsDataAction
--------- ------------- ----------------- ------------ ----------- ------------
microsoft.web/sites/functions/action Functions Web Apps Microsoft Web Apps Web App Functions Web Apps. False
microsoft.web/sites/functions/listsecrets/action List Web Apps Functions Secrets Microsoft Web Apps Web Apps Functions List Function secrets. False
microsoft.web/sites/functions/listkeys/action List Web Apps Functions Keys Microsoft Web Apps Web Apps Functions List Function keys. False

第一次尝试

最初,我很高兴使用 listsecrets 操作,但在向我的函数应用程序添加具有自定义路由的函数后,我注意到 listsecrets 不支持此自定义路由trigger_url 属性,所以我不得不放弃使用它。

$functionApp = Get-AzWebAppSlot -Name $FunctionAppName -ResourceGroup $ResourceGroupName -Slot $Slot
$functionApp | Format-List
$functionKey = Invoke-AzResourceAction -ResourceId ("{0}/functions/{1}" -f $functionApp.Id, $FunctionName) -Action "listsecrets" -ApiVersion "2019-08-01" -Force

第二次尝试

接下来,我尝试结合 functions 操作使用 listkeys 操作来获取功能键。我知道对于 REST API,在查询函数时可以在 properties.invoke_url_template 中找到调用 URL,因此我希望在这里也能找到同样的结果。唉...

Invoke-AzResourceAction -ResourceId ("{0}/functions"-f $functionApp.Id) -Action $FunctionName -ApiVersion "2019-08-01"-Force

No route registered for '/api/functions/Health?api-version=2019-08-01'

在这种情况下,我很可能错误地实现了 Invoke-AzResourceAction(今天之前从未使用过它)。

我考虑过的其他事情

除了缺少 az rest 的等效项之外,AZ PowerShell 还缺少 az-account-get-access-token 的等效项。这意味着我无法获取我的 token 并简单地查询 REST API。

最佳答案

正如我在评论中提到的,如果您想获取功能(触发)url,包括功能键,您可以使用下面的命令,$FunctionURL就是你想要的。

$FunctionAppName = "joyfun"
$GroupName = "xxxxx"
$TriggerName = "HttpTrigger1"
$FunctionApp = Get-AzWebApp -ResourceGroupName $GroupName -Name $FunctionAppName
$Id = $FunctionApp.Id
$DefaultHostName = $FunctionApp.DefaultHostName
$FunctionKey = (Invoke-AzResourceAction -ResourceId "$Id/functions/$TriggerName" -Action listkeys -Force).default
$FunctionURL = "https://" + $DefaultHostName + "/api/" + $TriggerName + "?code=" + $FunctionKey

enter image description here

如果触发器位于插槽中,请更改此行 $FunctionApp = Get-AzWebApp -ResourceGroupName $GroupName -Name $FunctionAppName$FunctionApp = Get-AzWebAppSlot -ResourceGroupName $GroupName -Name $FunctionAppName -Slot <slotname> .

enter image description here

更新:

我在我这边测试了自定义路线,我的host.json片段如下。

{
"extensions": {
"http": {
"routePrefix": "api/Health",
}
}
}

您可以使用下面的命令。

$FunctionAppName = "joyfun"
$GroupName = "xxxxx"
$TriggerName = "HttpTrigger1"
$FunctionApp = Get-AzWebApp -ResourceGroupName $GroupName -Name $FunctionAppName
$Id = $FunctionApp.Id
$DefaultHostName = $FunctionApp.DefaultHostName
$FunctionKey = (Invoke-AzResourceAction -ResourceId "$Id/functions/$TriggerName" -Action listkeys -Force).default
$invokeurl = (Get-AzResource -ResourceId "$Id/functions" | Where-Object {$_.Name -eq "$FunctionAppName/$TriggerName"}).Properties.invoke_url_template
$FunctionURL = $invokeurl + "?code=" + $FunctionKey

enter image description here

关于azure - 使用 AZ PowerShell 获取函数 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62641991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com