Blob Storage Bindings

This document provides a detailed explanation of how to use Blob Storage bindings in Azure Functions. Blob Storage bindings allow you to easily connect to Azure Blob Storage from your functions, enabling you to read from and write to blobs.

Introduction to Blob Storage Bindings

Azure Functions offers flexible ways to interact with Azure Blob Storage. Blob Storage bindings act as declarative connections, simplifying the process of accessing blob data within your function code. You can configure them as input, output, or trigger bindings.

Blob Input Bindings

Blob input bindings allow you to read the content of a blob into your function. The content can be passed as a string, byte array, or a stream, depending on the data type you specify.

Configuration

In your function.json file, define an input binding with the type blob:


{
  "scriptFile": "run.py",
  "bindings": [
    {
      "name": "myBlob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "samples-workitems/{name}",
      "connection": "AzureWebJobsStorage"
    },
    {
      "name": "inputBlob",
      "type": "blob",
      "direction": "in",
      "path": "samples-workitems/{name}",
      "connection": "AzureWebJobsStorage"
    },
    {
      "name": "outputBlob",
      "type": "blob",
      "direction": "out",
      "path": "output-blobs/{name}.txt",
      "connection": "AzureWebJobsStorage"
    }
  ]
}

Usage in Code (Python Example)

The blob content is available as a parameter in your function:


import logging
import azure.functions as func

def main(myBlob: func.InputStream, inputBlob: str, outputBlob: func.Out[str]):
    logging.info(f"Python blob trigger function processed blob")
    logging.info(f"Name: {myBlob.name}")
    logging.info(f"Size: {myBlob.length} Bytes")
    logging.info(f"Input Blob Content: {inputBlob}")

    outputBlob.set(f"Processed content: {inputBlob.upper()}")
    logging.info("Successfully wrote to output blob.")

Blob Output Bindings

Blob output bindings allow you to write data from your function to a blob. This is useful for storing results, logs, or generated content.

Configuration

Define an output binding with the type blob in function.json:


{
  "scriptFile": "run.py",
  "bindings": [
    {
      "name": "inputBlob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "samples-workitems/{name}",
      "connection": "AzureWebJobsStorage"
    },
    {
      "name": "outputBlob",
      "type": "blob",
      "direction": "out",
      "path": "output-blobs/{name}.processed.txt",
      "connection": "AzureWebJobsStorage"
    }
  ]
}

Usage in Code (Python Example)

Use the output binding parameter to write data:


import logging
import azure.functions as func

def main(inputBlob: func.InputStream, outputBlob: func.Out[str]):
    logging.info(f"Python blob trigger function processed blob")
    content = inputBlob.read().decode('utf-8')
    logging.info(f"Input content: {content}")

    processed_content = content.lower()
    outputBlob.set(f"Processed: {processed_content}")
    logging.info("Output blob written successfully.")

Blob Trigger Bindings

Blob trigger bindings invoke your function when a new or updated blob is detected in a specified container. This is a powerful way to build event-driven architectures.

Configuration

Define a trigger binding with the type blobTrigger:


{
  "scriptFile": "run.py",
  "bindings": [
    {
      "name": "myBlob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "samples-data/{name}",
      "connection": "AzureWebJobsStorage"
    }
  ]
}

Usage in Code (Python Example)

The blob content and metadata are passed to your function:


import logging
import azure.functions as func

def main(myBlob: func.InputStream):
    logging.info(f"Python blob trigger function processed blob")
    logging.info(f"Blob Name: {myBlob.name}")
    logging.info(f"Blob Size: {myBlob.length} bytes")
    blob_content = myBlob.read().decode('utf-8')
    logging.info(f"Blob Content: {blob_content}")

Common Scenarios

Important Considerations

Note: Ensure your Azure Functions app has the necessary permissions to access the Blob Storage account specified in the connection string.
Important: For blob triggers, the path property in function.json uses a wildcard syntax. The part within curly braces (e.g., {name}) is a variable that captures the blob name and can be used in other bindings or within your function code.

Learn More