Azurex
Note: This package is republished on Hex as
blobex. It is a maintained fork ofazurexwith additional features including Req-based HTTP client and service principal authentication.
Implementation of the Azure Blob Storage Rest API for Elixir.
Supported actions
Currently supports:
- Downloading blobs
- Uploading blobs
- Deleting blobs
- Stream uploading blobs
- Listing blobs
- Creating containers
- Listing containers
Installation
Available in Hex, the package can be installed
by adding blobex to your list of dependencies in mix.exs:
def deps do
[
{:blobex, "~> 2.0"}
]
endConfiguration
For authentication, there is support for using both an account key or service principal.
For configuration of the account key, use eitherstorage_account_name and storage_account_keyorstorage_account_connection_string.
config :blobex, Azurex.Blob.Config,
api_url: "https://sample.blob.core.windows.net", # Optional
default_container: "defaultcontainer", # Optional
storage_account_name: "sample",
storage_account_key: "access key",
storage_account_connection_string: "Storage=Account;Connection=String" # Required if storage account `name` and `key` not set
For configuration of service principal, use storage_client_id, storage_client_secret, storage_tenant_id.
config :blobex, Azurex.Blob.Config,
api_url: "https://sample.blob.core.windows.net", # Optional
default_container: "defaultcontainer", # Optional
storage_account_name: "sample",
storage_client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
storage_client_secret: "secret"
storage_tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",Note that SAS token generation is currently not supported when using Service Principal.
Each of these options is then overridable per-request, if you need to work with multiple instances:
Azurex.Blob.list_blobs(container: "other", api_uri: "https://other.blob.net")
Azurex.Blob.get_blob("file.txt", [
storage_account_connection_string: "Account=Storage;String=Connection"
])
Azurex.Blob.put_blob("file.txt", "contents", "text/plain", [
storage_account_key: "key",
storage_account_name: "name"
])Documentation
Documentation can be found at https://hexdocs.pm/blobex. Or generated using ExDoc
Development
The goal is to support all actions in the Azure Blob Storage Rest API - PRs welcome :)