是否可以在 Azure 中的 Docker 化应用服务上创建 Web 作业?背景:
我在 Azure 中有一个基于 East1、Linux 操作系统、S1 层定价的应用服务计划。在该计划中,我有一个运行超级简单 Node.js 应用程序的 dockerized 应用程序服务。Node 应用程序将 .png 文件保存到 blob 容器存储中,我想创建一个计划的 Web 作业来清除旧的 .png 文件。一切似乎都很好,除了 Azure 没有给我创建 webjob 的选项。该选项呈灰色:
网络工作不可用:

我尝试扩大订阅的定价等级,但没有成功。
我还有另一个订阅 Central,S1,但这是一台 Windows 计算机,订阅 #2 上的应用程序服务是运行 .net 应用程序的常规应用程序服务。在此应用程序服务上,我确实有能力运行网络作业。
两者之间存在一些差异,所以有人知道为什么其中一种有效而另一种无效吗?是地区吗?应用程序服务位于 Docker 上?或者是 Windows 与 Linux 的比较?
是否可以从 Visual Studio 将 WebJob 部署到 Docker 化应用服务,即使似乎无法从 Azure 门户执行此操作?我很难找到这方面的文档。
非常感谢!
我正在尝试创建一个超级基本的 Azure 函数,但在使用环境变量时遇到了问题。按照网上的各种教程,
var config = new ConfigurationBuilder()
.SetBasePath(context.FunctionAppDirectory)
.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
log.Info(config["AzureWebJobsStorage"]);
Run Code Online (Sandbox Code Playgroud)
我的 local.settings.json 看起来像这样:
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "<language worker>",
"AzureWebJobsStorage": "abc123",
"AzureWebJobsDashboard": "abc123",
"MyBindingConnection": "abc123"
},
"Host": {
"LocalHttpPort": 7071,
"CORS": "*"
}
}
Run Code Online (Sandbox Code Playgroud)
当我在本地运行它时,那
log.Info(config["AzureWebJobsStorage"]);
Run Code Online (Sandbox Code Playgroud)
行没有返回任何内容......但是当我部署到 Azure 时,我在控制台中看到“abc123”。
但是,如果我将该行更改为
log.Info(config["Values:AzureWebJobsStorage"]);
Run Code Online (Sandbox Code Playgroud)
然后当我在本地运行时,我看到“abc123”,但是当我部署到 Azure 时,我什么也看不到。
我是否缺少能够以与本地与部署相同的方式访问环境变量的东西?
我正在尝试在 Azure 数据工厂中构建一个非常基本的数据流,从 blob 存储中提取 JSON 文件,对某些列执行转换,然后存储在 SQL 数据库中。我最初使用托管标识对存储帐户进行身份验证,但在尝试测试与源的连接时出现以下错误:
com.microsoft.dataflow.broker.MissingRequiredPropertyException: account 是 [myStorageAccountName] 的必需属性。com.microsoft.dataflow.broker.PropertyNotFoundException: 无法从 [myStorageAccountName] 中提取值 - RunId: xxx
我还在工厂验证输出中看到以下消息:
[MyDataSetName] AzureBlobStorage 不支持数据流中的 SAS、MSI 或服务主体身份验证。
有了这个,我假设我需要做的就是将我的 Blob 存储链接服务切换到帐户密钥身份验证方法。在我切换到帐户密钥身份验证并选择我的订阅和存储帐户后,在测试连接时出现以下错误:
连接失败无法连接到 https://[myBlob].blob.core.windows.net/:错误消息:远程服务器返回错误:(403) 禁止。(ErrorCode: 403, Detail: This request is not Authorized to perform this operation., RequestId: xxxx),请确保提供的凭据有效。远程服务器返回错误:(403) Forbidden.StorageExtendedMessage=,远程服务器返回错误:(403) Forbidden。活动 ID:xxx。
我试过直接从 Azure 中选择并手动输入密钥,无论哪种方式都得到相同的错误。需要注意的一件事是存储帐户只允许访问指定的网络。我尝试连接到不同的公共存储帐户,并且能够正常访问。ADF 帐户具有存储帐户参与者角色,并且我添加了我当前工作位置的 IP 地址以及我在此处找到的 Azure 数据工厂的 IP 范围:https : //docs.microsoft.com/en-我们/azure/data-factory/azure-integration-runtime-ip-addresses
另请注意,目前我有大约 5 个复制数据任务与 Managed Identity 完美配合,但我需要开始执行更复杂的操作。
这似乎与无法在 Azure 数据工厂中创建链接服务类似,但我分配的存储帐户参与者和所有者角色应该取代回复中建议的读者角色。我也不确定海报使用的是公共存储帐户还是私人帐户。
先感谢您。
azure azure-storage azure-storage-blobs azure-data-factory azure-blob-storage
编辑谢谢@Marco
我正在尝试编写一个函数应用程序,它从 URL 中获取 SVG 并将其转换为 PNG。我知道有像CloudConvert这样的现有 API ,但它们不能很好地处理嵌入字体,这是我的要求。
无论如何,我编写了一个非常基本的功能应用程序,此时只需下载一个文件。在本地一切正常,但是当我发布到 Azure 时,我得到An exception occurred during a WebClient request.
感谢@Marco 的建议,我从 WebClient 切换到 HTTPWebRequest 以获得更详细的错误处理,结果,我看到以下内容:
2018-10-11T13:53:53.558 [Info] 函数已启动 (Id=e3cbda04-140e-4ef7-ad6c-c871ffe179dd)
2018-10-11T13:53:53.590 [Info] C# HTTP 触发函数处理了一个请求 2018-10-11T13:53:53.752 [Info] 下载失败
2018-10-11T13:53:53.752 [Info] 拒绝访问路径
“D:\Windows\system32\734e16961fc276df.svg”。
我是在尝试做一些不可能的事情,还是有解决办法?有没有办法在 Azure 函数中配置权限?我需要拉下文件进行编辑,而不仅仅是使用字节数组。
非常感谢!
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req,
TraceWriter log, ExecutionContext context)
{
log.Info("C# HTTP trigger function processed a request.");
// parse query parameter
string svgURL = req.GetQueryNameValuePairs()
.FirstOrDefault(q …Run Code Online (Sandbox Code Playgroud)