This page covers OpenDAL's support for cloud object storage services, including AWS S3, Google Cloud Storage, Azure Blob Storage, and other S3-compatible services. For file system storage backends, see File Systems. For database storage backends, see Key-Value Stores and Databases.
OpenDAL provides unified access to major cloud object storage services through a consistent Access
trait implementation. Each service follows a common architectural pattern while handling service-specific authentication, request signing, and API differences.
Service | Builder | Backend | Core |
---|---|---|---|
AWS S3 | S3Builder | S3Backend | S3Core |
Google Cloud Storage | GcsBuilder | GcsBackend | GcsCore |
Azure Blob Storage | AzblobBuilder | AzblobBackend | AzblobCore |
Alibaba Cloud OSS | OssBuilder | OssBackend | OssCore |
Tencent Cloud COS | CosBuilder | CosBackend | CosCore |
Huawei Cloud OBS | ObsBuilder | ObsBackend | ObsCore |
Sources: core/src/services/s3/backend.rs89-97 core/src/services/gcs/backend.rs59-66 core/src/services/azblob/backend.rs73-79 core/src/services/oss/backend.rs59-65 core/src/services/cos/backend.rs57-63 core/src/services/obs/backend.rs57-63
Sources: core/src/services/s3/backend.rs718-721 core/src/services/gcs/backend.rs236-239 core/src/services/azblob/backend.rs303-306 core/src/services/oss/backend.rs320-323
Sources: core/src/services/s3/core.rs125-158 core/src/services/gcs/core.rs91-133 core/src/services/azblob/core.rs90-128 core/src/services/oss/core.rs97-127
The S3Builder
supports extensive configuration options including:
bucket()
, endpoint()
, region()
access_key_id()
, secret_access_key()
, session_token()
role_arn()
, external_id()
, customized_credential_load()
enable_virtual_host_style()
, enable_versioning()
, allow_anonymous()
Sources: core/src/services/s3/backend.rs108-400 core/src/services/s3/backend.rs344-384
The S3Core
struct handles all HTTP request construction and signing:
Sources: core/src/services/s3/core.rs364-436 core/src/services/s3/core.rs539-573 core/src/services/s3/core.rs213-289
The S3 backend provides comprehensive capabilities:
Sources: core/src/services/s3/backend.rs910-998
GCS uses Google Cloud authentication with OAuth2 tokens:
Sources: core/src/services/gcs/backend.rs265-305 core/src/services/gcs/core.rs91-133
GCS uses both JSON API and XML API depending on the operation:
/storage/v1/
endpoints/upload/storage/v1/
Sources: core/src/services/gcs/core.rs182-343 core/src/services/gcs/core.rs387-439
Azure Blob Storage supports multiple authentication methods:
Sources: core/src/services/azblob/backend.rs127-231
Azure Blob Storage provides unique features like append blobs and customer-provided encryption:
Sources: core/src/services/azblob/core.rs140-169 core/src/services/azblob/writer.rs66-122
All cloud object storage services support multipart uploads with service-specific constraints:
Service | Min Part Size | Max Part Size | Max Parts |
---|---|---|---|
S3 | 5 MiB | 5 GiB | 10,000 |
GCS | 5 MiB | 5 GiB | 10,000 |
Azure | N/A | N/A | 50,000 |
OSS | 100 KiB | 5 GiB | 10,000 |
COS | 1 MiB | 5 GiB | 10,000 |
OBS | 5 MiB | 5 GiB | 10,000 |
Sources: core/src/services/s3/backend.rs963-971 core/src/services/gcs/backend.rs344-352 core/src/services/oss/backend.rs455-463 core/src/services/cos/backend.rs263-271 core/src/services/obs/backend.rs268-276
Services that support object versioning:
Sources: core/src/services/s3/backend.rs491-495 core/src/services/oss/backend.rs107-112 core/src/services/cos/backend.rs134-139 core/src/services/obs/backend.rs135-140
All cloud storage services implement multipart writing through the oio::MultipartWriter
:
Sources: core/src/services/s3/writer.rs32 core/src/services/gcs/writer.rs30 core/src/services/azblob/writer.rs31
Each service implements service-specific error parsing while maintaining consistent error types:
Sources: core/src/services/s3/error.rs core/src/services/gcs/error.rs core/src/services/azblob/error.rs core/src/services/oss/error.rs
Refresh this wiki
Last indexed: 5 June 2025 (37efe2)
This wiki was recently refreshed. Please wait 3 days to refresh again.