azure - Azure 函数 (PowerShell)
问题描述
安装 azure-core-functions v3 并将项目迁移到 v3 Powershell 项目后开始失败。将问题缩小为在运行时不再识别作为依赖项加载的 Az 模块。进一步的测试显示,函数 host.json 文件中的托管依赖项设置正确加载了 Az 模块,因为通过 Kudu 删除了 data/ManagedDependencies 文件夹并重新启动 Function App 恢复了 Az 模块,因此 requirements.psd1 正常工作 - Powershell 只是找不到下载的模块。
恢复到 v2 后,我在 v2 中发现了同样的问题。通过将所需的 AZ 模块添加到 Azure Function 项目的模块文件夹中,我能够暂时解决此问题。注意:Dev and Deploy 目前是通过 VS Code 进行的。
Powershell如何引用托管依赖项?解决参考问题的下一个途径是什么?
Host.json 内容:
"version": "2.0",
"managedDependency": {
"enabled": true
}
}
requirements.psd1 内容:
# This file enables modules to be automatically managed by the Functions service.
# See https://aka.ms/functionsmanageddependency for additional information.
#
@{
'Az' = '3.*'
}
功能应用配置:
[
{
"name": "APPINSIGHTS_INSTRUMENTATIONKEY",
"value": "32178670-77eb-40aa-afbc-ca17946f0350",
"slotSetting": false
},
{
"name": "AzureWebJobsStorage",
"value": "DefaultEndpointsProtocol=https;AccountName=REDACTED;EndpointSuffix=core.windows.net",
"slotSetting": false
},
{
"name": "FUNCTIONS_EXTENSION_VERSION",
"value": "~2",
"slotSetting": false
},
{
"name": "FUNCTIONS_WORKER_RUNTIME",
"value": "powershell",
"slotSetting": false
},
{
"name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
"value": "DefaultEndpointsProtocol=REDACTED;EndpointSuffix=core.windows.net",
"slotSetting": false
},
{
"name": "WEBSITE_CONTENTSHARE",
"value": "rightrezmonitor7d0758",
"slotSetting": false
},
{
"name": "WEBSITE_NODE_DEFAULT_VERSION",
"value": "~10",
"slotSetting": false
},
{
"name": "WEBSITE_RUN_FROM_PACKAGE",
"value": "1",
"slotSetting": false
}
]
Kudu 中的 data/ManagedDependencies/200103210646931.r 目录包含 AZ 和 AZ.Module 文件夹
解决方案
你还在看这个问题吗?您的函数应用程序是否依赖于 .Net Core 2.2?
我有一个 PowerShell 函数应用程序,它使用Get-AzKeyVaultSecret
cmdlet 从 KeyVault 检索机密。此函数应用最初是为在 V2 上运行而创建的。但是,我手动进行了更改以将其移至 V3,并且一切都按预期继续工作。
要回答您的问题:
Powershell如何引用托管依赖项?
答:指向存储帐户的托管依赖项路径将附加到$env:PSModulePath
第一次调用中。
解决参考问题的下一个途径是什么?
A:您可以尝试强制重新安装函数应用依赖项。为此,请转到门户并选择您的函数应用。转到概述并停止函数应用。之后,选择平台功能并转到 Kudu,如下所示。
进入 Kudu 后,转到调试控制台,然后选择 PowerShell,如下所示。
从那里,导航到D:\home\data\ManagedDependencies
. 一旦运行Remove-Item * -Recurse -Force
,例如,
cd D:\home\data\ManagedDependencies
Remove-Item * -Recurse -Force
接下来,启动函数应用程序,在第一次函数调用时,将下载依赖项并将路径附加到$env:PSModulePath
.
如果您在将应用迁移到 V3 后仍然遇到问题,请在https://github.com/Azure/azure-functions-powershell-worker/issues打开一个问题,提供您的函数应用名称,我会采取看看。
干杯,
弗朗西斯科
推荐阅读
- amazon-web-services - 如何为 MP3 播放创建 AWS S3 存储桶策略限制引荐来源网址
- firebase - 数据库中的firebase如何订购文档(云firestore)
- javascript - javascript转换设置为逗号分隔的字符串 - IE11
- python - 我在哪里可以找到 anaconda 3.6
- javascript - 输出map()的索引
- node.js - 在 cognito AdminCreateUser 电子邮件中使用动态占位符
- sql - 如何在函数中使用一个表行(在like 运算符中)作为另一个表的参数?
- python - Selenium 查看一个类并确定该类中有多少元素,最后对找到的所有元素执行一个操作
- react-native - 使用块重新激活 TapGestureHandler 回调
- matlab - 在Matlab中声明一个由20个相同数量的元素组成的数组