The documentation you are viewing is for Dapr v0.11 which is an older version of Dapr. For up-to-date documentation, see the latest version.
Azure Blob Storage binding spec
Setup Dapr component
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: <NAME>
namespace: <NAMESPACE>
spec:
type: bindings.azure.blobstorage
version: v1
metadata:
- name: storageAccount
value: myStorageAccountName
- name: storageAccessKey
value: ***********
- name: container
value: container1
storageAccount
is the Blob Storage account name.storageAccessKey
is the Blob Storage access key.container
is the name of the Blob Storage container to write to.decodeBase64
optional configuration to decode base64 file content before saving to Blob Storage. (In case of saving a file with binary content). “true” is the only allowed positive value. Other positive variations like “True” are not acceptable.
Warning
The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets as described here.Output Binding Supported Operations
Create Blob
To perform a create blob operation, invoke the Azure Blob Storage binding with a POST
method and the following JSON body:
Note: by default, a random UUID is generated. See below for Metadata support to set the name
{
"operation": "create",
"data": "YOUR_CONTENT"
}
Example:
We escape since ' is not supported on Windows On Windows, utilize CMD (PowerShell has different escaping mechanism)
Saving to a random generated UUID file
curl -d "{ \"operation\": \"create\", \"data\": \"Hello World\" }" \
http://localhost:<dapr-port>/v1.0/bindings/<binding-name>
Saving to a specific file
curl -d "{ \"operation\": \"create\", \"data\": \"Hello World\", \"metadata\": { \"blobName\": \"my-test-file.txt\" } }" \
http://localhost:<dapr-port>/v1.0/bindings/<binding-name>
Saving a file
To upload a file, encode it as Base64 and let the Binding know to deserialize it:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: <NAME>
namespace: <NAMESPACE>
spec:
type: bindings.azure.blobstorage
version: v1
metadata:
- name: storageAccount
value: myStorageAccountName
- name: storageAccessKey
value: ***********
- name: container
value: container1
- name: decodeBase64
value: "true"
Then you can upload it as you would normally:
curl -d "{ \"operation\": \"create\", \"data\": \"YOUR_BASE_64_CONTENT\", \"metadata\": { \"blobName\": \"my-test-file.jpg\" } }" \
http://localhost:<dapr-port>/v1.0/bindings/<binding-name>
Response
The response body will contain the following JSON:
{
"blobURL": "https://<your account name>. blob.core.windows.net/<your container name>/<filename>"
}
Get Blob
To perform a get blob operation, invoke the Azure Blob Storage binding with a POST
method and the following JSON body:
{
"operation": "get",
"metadata": {
"blobName": "myblob"
}
}
Example:
curl -d '{ "operation": "get", "metadata": { "blobName": "myblob" }}' \
http://localhost:<dapr-port>/v1.0/bindings/<binding-name>
Response
The response body will contain the value stored in the blob object.
Metadata information
By default the Azure Blob Storage output binding will auto generate a UUID as blob filename and not assign any system or custom metadata to it. It is configurable in the Metadata property of the message (all optional).
Applications publishing to an Azure Blob Storage output binding should send a message with the following contract:
{
"data": "file content",
"metadata": {
"blobName" : "filename.txt",
"ContentType" : "text/plain",
"ContentMD5" : "vZGKbMRDAnMs4BIwlXaRvQ==",
"ContentEncoding" : "UTF-8",
"ContentLanguage" : "en-us",
"ContentDisposition" : "attachment",
"CacheControl" : "no-cache",
"Custom" : "hello-world",
},
"operation": "create"
}
Related links
- Bindings building block
- How-To: Trigger application with input binding
- How-To: Use bindings to interface with external resources
- Bindings API reference