Files
Vincent Van Rossem d0fcf012c1 [IMP] attachment_azure: add stack_info on ResourceExistsError
The blob already exists, so the exception traceback (inside upload_blob)
is not useful on its own. Adding stack_info=True to _logger.exception()
also logs the call stack, revealing who triggered the duplicate write.
2026-04-14 15:22:34 +02:00
..
2021-06-01 11:11:50 -05:00
2024-06-24 11:58:48 +02:00

===========================================
Attachments on Microsoft Azure Blob Storage
===========================================

This addon allows to store the attachments (documents and assets) on `Microsoft Azure
Blob Storage <https://docs.microsoft.com/azure/storage/blobs/>`_.

Configuration
-------------

Activate Azure Blob storage:

* Create or set the system parameter with the key ``ir_attachment.location``
  and the value in the form ``azure``.

Configure accesses with environment variables:

* ``AZURE_STORAGE_CONNECTION_STRING`` or
* ``AZURE_STORAGE_ACCOUNT_NAME``
* ``AZURE_STORAGE_ACCOUNT_URL``
* ``AZURE_STORAGE_ACCOUNT_KEY``

One container will be created per database using the `RUNNING_ENV` environment variable
and the name of the database. By default, `RUNNING_ENV` is set to `dev`.

The container name can be overridden with environment variable ``AZURE_STORAGE_NAME``.
The strings ``{db}`` and ``{env}`` can be used inside that variable and the values
will be replaced respectively by the database name and environment name.

The container name will also be stored in the database for each attachment,
and will be used to access the right container in the storage.

This addon must be added in the server wide addons with (``--load`` option):

``--load=web,attachment_azure``

The System Parameter ``ir_attachment.storage.force.database`` can be customized to
force storage of files in the database. See the documentation of the module
``base_attachment_object_storage``.

Limitations
-----------

* You need to call ``env['ir.attachment'].force_storage()`` after
  having changed the ``ir_attachment.location`` configuration in order to
  migrate the existing attachments to Azure Blob Storage.