Azure Functions Documentation

Explore the power of Azure Functions

Blob Storage Bindings for Azure Functions

Blob storage bindings enable your Azure Functions to easily interact with Azure Blob Storage. You can configure bindings to trigger your function when a blob is created or updated, or to bind blob content as input to your function or output from your function.

Input Bindings

Input bindings allow you to read the content of a blob directly into your function's parameters. This simplifies the process of accessing blob data without manually writing SDK code.

Triggering with Blob Creation

You can use a blob trigger to start your function whenever a new blob is added or an existing one is updated.


{
  "scriptFile": "index.js",
  "bindings": [
    {
      "name": "myBlob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "samples-workitems/{name}",
      "connection": "AzureWebJobsStorage"
    }
  ]
}
                

In this example, the function is triggered by blobs in the container named samples-workitems. The {name} is a binding expression that captures the name of the blob.

Reading Blob Content

You can also define input bindings to read blob content directly.


{
  "scriptFile": "index.js",
  "bindings": [
    {
      "name": "myBlob",
      "type": "blob",
      "direction": "in",
      "path": "samples-data/{fileName}.json",
      "connection": "AzureWebJobsStorage"
    },
    {
      "name": "outputBlob",
      "type": "blob",
      "direction": "out",
      "path": "samples-processed/{fileName}.processed.txt",
      "connection": "AzureWebJobsStorage"
    }
  ]
}
                

Here, myBlob is an input binding that reads a JSON file, and outputBlob is an output binding for writing a processed text file.

Output Bindings

Output bindings allow your function to write data to Azure Blob Storage. This is useful for generating reports, saving processed data, or creating new blobs based on function execution.

Writing to Blob Storage


// Assuming 'outputBlob' is configured as an output binding in function.json
module.exports = async function (context, req) {
    const processedData = "This is the processed content of the blob.";
    context.bindings.outputBlob = processedData;
    context.res = {
        body: "Blob processed and outputted successfully."
    };
};
                
Note: Ensure your function.json correctly defines the blob path, direction (in/out), and the storage connection string.

Common Scenarios

  • Image Processing: Trigger a function when an image is uploaded, resize it, and save the resized version to another blob.
  • Log Aggregation: Collect logs from various sources and write them to a central blob storage location.
  • Data Transformation: Read data from one blob, transform it, and write the transformed data to a new blob.

Configuration Parameters

Parameter Description Required
name The name of the parameter in your function code that represents the blob. Yes
type Must be blob for input/output bindings or blobTrigger for triggers. Yes
direction in for input, out for output, in for trigger. Yes
path The path to the blob, including the container name. Can include binding expressions like {name}. Yes
connection The name of an app setting or connection string that contains the Azure Blob Storage connection string. Defaults to AzureWebJobsStorage. No

Examples

C# Example (Trigger + Input)


using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;

namespace AzureFunctionsBlob
{
    public static class BlobTriggerExample
    {
        [FunctionName("BlobTriggerExample")]
        public static void Run(
            [BlobTrigger("samples-workitems/{name}", Connection = "AzureWebJobsStorage")] Stream myBlob,
            string name,
            ILogger log)
        {
            log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
        }
    }
}
                        

JavaScript Example (Output Binding)


module.exports = async function (context) {
    const dataToWrite = `Content generated at ${new Date().toISOString()}`;
    context.bindings.outputBlob = dataToWrite;
    context.log('JavaScript blob output binding function processed work item.');
};