[Function("Function1")]
[BlobOutput("test-samples-output/{name}", Connection = "ConnectionString1")]
public string Run([BlobTrigger("test-samples-trigger/{name}", Connection = "ConnectionString1")] string myBlob,
string name, string blobTrigger)
{
_logger.LogInformation($"C# Blob trigger function Processed blob\n Name: {name} \n Data: {myBlob}");
return myBlob;
}
我有一个 blob 触发器设置为“test-samples-trigger/{name}”。我想将 BlobOutput 设置为使用输入容器名称“{input-container-name}-output/{name}”。有没有办法将 BlobOuput 字符串设置为动态指向该位置?
最佳答案
从我这边复制后,实现您的要求的一种方法是使用 GetEnvironmentVariable
读取变量,其中值是从 local.settings.json
读取的。下面是对我有用的完整代码。
Function1.cs
using System;
using System.IO;
using System.Text;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
namespace FunctionApp13
{
public class Function1
{
[FunctionName("Function1")]
public void Run([BlobTrigger("samples-workitems/{name}", Connection = "connstr")]Stream myBlob,
[Blob("%outputContainer%/{name}", FileAccess.Write, Connection = "connstr")] Stream outputBlob,
string name, ILogger log)
{
log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
string outputContainer = Environment.GetEnvironmentVariable("outputContainer");
outputBlob.Write();
}
}
}
本地.settings.json
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "<ConnectionString>",
"connstr": "<ConnectionString>",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"outputContainer": "sample"
}
}
结果:
关于Azure Blob 触发器 - 基于输入容器的动态 BlobOutput 绑定(bind)名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75447116/