Azure自动化和逻辑应用程序,用于功能应用程序的计划自动扩展

pu82cl6c  于 2023-06-24  发布在  其他
关注(0)|答案(2)|浏览(142)

我正在尝试创建一个Azure自动化系统来更改Function应用程序的始终就绪示例的数量(应用程序服务计划是Elastic Premium One EP 1):

创建自动化系统是为了在工作日将“始终就绪”示例的数量设置为3,在周末将其设置为1。
系统由以下两个在Azure自动化帐户服务下创建的runbook组成:
1.“Runbook-Weekdays”

$resourceGroupName = "xxxxxxxxxxxx"
$functionApp = "xxxxxxxxxx-func"

$Resource = Get-AzResource -ResourceGroupName $resourceGroupName -ResourceName $functionApp/config/web -ResourceType Microsoft.Web/sites
$Resource.Properties.minimumElasticInstanceCount = 3
$Resource | Set-AzResource -Force

1.“Runbook-Weekend-days”

$resourceGroupName = "xxxxxxxxxxxx"
$functionApp = "xxxxxxxxxxxx-func"

$Resource = Get-AzResource -ResourceGroupName $resourceGroupName -ResourceName $functionApp/config/web -ResourceType Microsoft.Web/sites
$Resource.Properties.minimumElasticInstanceCount = 1
$Resource | Set-AzResource -Force

请注意,我在自动化帐户中使用的是“系统分配”身份。
当自动化逻辑使用Azure逻辑应用程序实现时:

其中“条件”框下的表达式为:formatDateTime(utcNow(),'dddd'),从上图中可以看出,它只为工作日设置。
下图是Logic App的第二部分:

请注意,在Logic Apps中创建自动化作业时,我选择了“OAuth default”作为身份验证方法,然后我只需粘贴订阅的tenantID。
现在,如果我从Logic App服务测试Logic App,它可以正常工作:

我希望总是准备好的示例的数量等于3,但是如果我检查总是准备好的示例的数量,没有任何变化:

另外,转到Runbook页面的错误页面:

我看到以下两个错误:

Get-AzResource : Run Connect-AzAccount to login. At line:4 char:13 + $Resource = Get-AzResource -ResourceGroupName $resourceGroupName -Res ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : CloseError: (:) [Get-AzResource], PSInvalidOperationException + FullyQualifiedErrorId : Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.GetAzureResourceCmdlet

和/或

The property 'minimumElasticInstanceCount' cannot be found on this object. Verify that the property exists and can be set. At line:5 char:1 + $Resource.Properties.minimumElasticInstanceCount = 3 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : PropertyNotFound

你知道可能是什么问题吗?

xmjla07d

xmjla07d1#

您是否已在Runbook中登录?
第一个错误告诉您使用Connect-AzAccount进行连接,第二个错误是属性不存在的一般错误,因为$Resource对象没有该属性。
1.第一个错误:
在自动化帐户控制台中,在帐户设置->身份下,确保将系统分配的身份设置为:

然后,单击“Azure role assignments”按钮,并检查您是否在功能应用的资源组中拥有“Contributor”角色并分配给Azure自动化帐户:

最后,在脚本中添加以下代码:

# Ensures you do not inherit an AzContext in your runbook
Disable-AzContextAutosave -Scope Process

# Connect to Azure with system-assigned managed identity
$AzureContext = (Connect-AzAccount -Identity).context

# Set and store context
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext

1.第二个错误:
转到Function App控制台,然后在Settings下单击“Configuration”并验证您是否具有属性“minimumElasticInstanceCount”:

如果你没有这个属性,你可以简单的创建它,点击"新建应用程序设置"按钮。
这是一个有用的Azure文档:
https://learn.microsoft.com/en-us/azure/automation/enable-managed-identity-for-automation#authenticate-access-with-system-assigned-managed-identity

iyfamqjs

iyfamqjs2#

错误“Run Connect-AzAccount to login”表示运行命令的调用不是在允许进行调用的安全上下文中进行的。
在您的情况下,是逻辑应用程序进行调用。因此,首先要检查的是逻辑应用程序的安全上下文。

相关问题