changeset 1086:28c52e047cf1

merge
author Alain Mazy <am@orthanc.team>
date Fri, 28 Jun 2024 11:15:29 +0200
parents 05d37a5abcc4 (current diff) 337bbecf74c0 (diff)
children faf18bfe89a0
files
diffstat 1 files changed, 67 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/Sphinx/source/plugins/object-storage.rst	Fri Jun 28 11:15:17 2024 +0200
+++ b/Sphinx/source/plugins/object-storage.rst	Fri Jun 28 11:15:29 2024 +0200
@@ -10,42 +10,75 @@
 -------------
 
 Release notes are available `here
-<https://orthanc.uclouvain.be/hg/orthanc-object-storage/file/default/NEWS>`__ 
-   
+<https://orthanc.uclouvain.be/hg/orthanc-object-storage/file/default/NEWS>`__.
+
 Introduction
 ------------
 
-These 3 plugins enable storing the Orthanc files in `Object Storage <https://en.wikipedia.org/wiki/Object_storage>`__
-at the 3 main Cloud providers: `AWS <https://aws.amazon.com/s3/>`__, 
-`Azure <https://azure.microsoft.com/en-us/services/storage/blobs/>`__ & 
-`Google Cloud <https://cloud.google.com/storage>`__
+These 3 plugins enable storing the Orthanc files into `object storage
+<https://en.wikipedia.org/wiki/Object_storage>`__ at the 3 public
+cloud providers: `AWS <https://aws.amazon.com/s3/>`__, `Azure
+<https://azure.microsoft.com/en-us/services/storage/blobs/>`__, and
+`Google Cloud <https://cloud.google.com/storage>`__.
 
-Storing Orthanc files in object storage and your index SQL in a 
-managed database allows you to have a stateless Orthanc that does
-not store any data in its local file system which is highly recommended
+Storing Orthanc files in object storage and your index SQL in a
+managed database allows you to have a stateless Orthanc that does not
+store any data in its local file system, which is highly recommended
 when deploying an application in the cloud.
 
 
 Pre-compiled binaries
 ---------------------
 
-These 3 plugins are provided as part of the ``orthancteam/orthanc`` :ref:`Docker images <docker-orthancteam>`.
-The AWS plugin is available in the default Docker images while the Azure and Google plugins are available
-in the ``-full`` images.
+Note about proprietary cloud storage
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+These plugins are used to interface Orthanc with commercial and
+proprietary cloud services that you accept to pay. As a consequence,
+the Orthanc project usually doesn't freely update them or fix them
+unless the requester purchases a support contract, e.g., at `Orthanc
+Team <https://orthanc.team>`__.
+
+Although you are obviously free to compile these plugins by
+yourself (instructions are given below), purchasing such support
+contracts makes the Orthanc project sustainable in the long term, to
+the benefit of the worldwide community of medical imaging.
+
+
+``orthancteam/orthanc`` Docker image
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+All the 3 plugins are provided as part of the ``orthancteam/orthanc``
+:ref:`Docker images <docker-orthancteam>`. The AWS plugin is available
+in the default Docker images, while the Azure and Google plugins are
+available in the ``-full`` images.
+
+
+AWS S3 plugin
+^^^^^^^^^^^^^
+
+Because the AWS S3 plugin is compatible with free and open-source
+implementations of the S3 protocol (notably MinIO and Ceph), we
+provide pre-compiled binaries of the AWS S3 plugin, which can be found
+at the following locations:
+
+* In the `official Microsoft Windows installers <https://orthanc.uclouvain.be/downloads/windows-64/installers/index.html>`__, starting with release 24.6.3.
+* For `Microsoft Windows 32 <https://orthanc.uclouvain.be/downloads/windows-32/orthanc-aws-s3/index.html>`__,
+* For `Microsoft Windows 64 <https://orthanc.uclouvain.be/downloads/windows-64/orthanc-aws-s3/index.html>`__,
+* For `cross-distribution Linux <https://orthanc.uclouvain.be/downloads/linux-standard-base/orthanc-aws-s3/index.html>`__,
+* In the :ref:`backport Debian repository <binaries>` (notably compatible with Ubuntu 22.04 and 24.04),
+* In the :ref:`jodogne/orthanc Docker images <docker>`,
+* In the :ref:`orthancteam/orthanc Docker images <docker-orthancteam>`.
+
+
+Microsoft Azure plugin
+^^^^^^^^^^^^^^^^^^^^^^
 
 The Azure plugin is also available as part of the `Windows Installer
 <https://orthanc.uclouvain.be/downloads/windows-64/installers/index.html>`__
 (only for 64bits platform).
 
-These plugins are used to interface Orthanc with commercial and
-proprietary cloud services that you accept to pay. As a consequence,
-the Orthanc project usually doesn't freely update them or fix them unless
-the requester purchases a support contract e.g. at `Orthanc Team <https://orthanc.team>`__.
 
-Although you are obviously free to compile these plugins by
-yourself (instructions are given below), purchasing such support
-contracts makes the Orthanc project sustainable in the long term, to
-the benefit of the worldwide community of medical imaging.
 
 
 Configuration
@@ -91,6 +124,12 @@
 The **UseTransferManager** configuration is used to select the `Transfer Manager <https://docs.aws.amazon.com/sdk-for-cpp/v1/developer-guide/examples-s3-transfermanager.html>`__ mode in the AWS SDK client.
 This option was introduced in version 2.3.0.  If set to false (default value), the default "object" mode is used.
 
+**Important:** On Microsoft Windows, it is recommended to set the
+environment variable ``AWS_EC2_METADATA_DISABLED`` to ``true`` to
+speed up the initialization of the plugin. The reasons are explained
+in the `AWS official documentation
+<https://docs.aws.amazon.com/cli/v1/userguide/cli-configure-envvars.html>`__.
+
 
 .. _minio:
   
@@ -209,7 +248,7 @@
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 When the ``HybridMode`` is set to ``WriteToFileSystem``, it is sometimes useful to move old files
-to the object-storage for long term archive or to `pre-fetch` files from object-storage to file
+to the object-storage for long term archive or to "pre-fetch" files from object-storage to file
 system for improved performances e.g when before opening the study in a viewer.
 
 When the ``HybridMode`` is set to ``WriteToObjectStorage``, it is useful to move file from the
@@ -236,12 +275,12 @@
 The **StorageStructure** configuration allows you to select the way objects are organized
 within the storage (``flat`` or ``legacy``).  
 Unlike the traditional file system in which Orthanc uses 2 levels
-of folders, object storages usually have no limit on the number of files per folder and 
+of folders, an object storage usually has no limit on the number of files per folder and 
 therefore all objects are stored at the root level of the object storage.  This is the
-default ``flat`` behaviour.  Note that, in the ``flat`` mode, an extension `.dcm` or `.json`
+default ``flat`` behavior.  Note that, in the ``flat`` mode, an extension ``.dcm`` or ``.json``
 is added to the filename which is not the case in the legacy mode.
 
-The ``legacy`` behaviour mimics the Orthanc File System convention.  This is actually helpful
+The ``legacy`` behavior mimics the Orthanc File System convention.  This is actually helpful
 when migrating your data from a file system to an object storage since you can copy all the file
 hierarchy as is.
 
@@ -332,7 +371,7 @@
 
 The format of data stored on disk is therefore the following:
 
-- **VERSION HEADER**: 2 bytes: identify the structure of the following data currently `A1`
+- **VERSION HEADER**: 2 bytes: identify the structure of the following data currently ``A1``
 - **MASTER KEY ID**: 4 bytes: a numerical ID of the KEK that was used to encrypt the DEK
 - **EIV**: 32 bytes: IV used by DEK for data encryption; encrypted by KEK
 - **EDEK**: 32 bytes: the DEK encrypted by the KEK.
@@ -348,11 +387,11 @@
 
   openssl rand -base64 -out /tmp/test.key 32
 
-Each key must have a unique id that is a uint32 number.
+Each key must have a unique id that is a ``uint32`` number.
 
 .. highlight:: json
 
-Here's a sample configuration file of the `StorageEncryption` section of the plugins::
+Here's a sample configuration file of the ``StorageEncryption`` section of the plugins::
 
   {
     "GoogleCloudStorage" : {
@@ -418,7 +457,7 @@
 **NB:** If you don't want to use vcpkg, you can use the following
 command (this syntax is not compatible with Ninja yet)::
 
-  $ cmake -DCMAKE_BUILD_TYPE=Debug -DUSE_VCPKG_PACKAGES=OFF -DUSE_SYSTEM_GOOGLE_TEST=OFF ../../orthanc-object-storage/Aws
+  $ cmake -DCMAKE_BUILD_TYPE=Debug -DUSE_VCPKG_PACKAGES=OFF -DUSE_SYSTEM_GOOGLE_TEST=OFF -DUSE_SYSTEM_ORTHANC_SDK=OFF ../../orthanc-object-storage/Aws
   $ make
 
 Crypto++ must be installed (on Ubuntu, run ``sudo apt install libcrypto++-dev``).