Tous les produits
Search
Centre de documentation

Object Storage Service:OSS C++ SDK V2

Dernière mise à jour :Aug 08, 2026

Utilisez l'OSS C++ SDK V2 pour charger, télécharger et gérer des objets dans Alibaba Cloud OSS depuis vos applications C++. Conçu pour les scénarios à hautes performances, les systèmes embarqués et les applications de bureau.

Remarque

L'OSS C++ SDK V2 est en version d'aperçu. Les interfaces peuvent évoluer. Consultez les notes de publication du dépôt GitHub pour suivre les mises à jour.

GitHub | exemple de code | guide de migration | deepwiki

Démarrage rapide

Suivez les étapes ci-dessous pour installer le kit de développement logiciel (SDK), configurer les informations d'identification et initialiser un client.

Prérequis

  • Un compilateur C++17 ou ultérieur (GCC 7+, Clang 5+ ou MSVC 2017+).

  • CMake 3.15 ou ultérieur.

Exécutez la commande cmake --version pour vérifier votre version de CMake. Si CMake n'est pas installé ou si la version est antérieure à la 3.15, téléchargez et installez CMake .

Installation du SDK

L'utilisation de vcpkg est la méthode d'installation recommandée.

vcpkg

Utilisez le gestionnaire de paquets vcpkg pour installer le SDK :

vcpkg install alibabacloud-oss-cpp-sdk-v2[curl]

# On Windows, you can use WinHTTP as the HTTP transport layer instead.
vcpkg install alibabacloud-oss-cpp-sdk-v2[winhttp]

Vous pouvez également effectuer l'installation à partir du code source en utilisant un port de superposition (overlay) :

git clone https://github.com/aliyun/alibabacloud-oss-cpp-sdk-v2.git
vcpkg install alibabacloud-oss-cpp-sdk-v2[curl] --overlay-ports=alibabacloud-oss-cpp-sdk-v2/vcpkg --head
Remarque

Vous devez spécifier une couche de transport HTTP (curl ou winhttp), car aucune n'est activée par défaut. Vous pouvez activer les deux.

Si openssl et mbedtls sont tous deux activés, openssl est prioritaire.

Fonctionnalités optionnelles :

Fonctionnalité

Description

curl

Couche de transport HTTP basée sur libcurl. Vous devez spécifier explicitement [curl] dans la commande d'installation, car cette fonctionnalité n'est pas activée par défaut.

winhttp

Couche de transport HTTP basée sur WinHTTP (Windows uniquement).

openssl

Utilise OpenSSL pour le calcul de hachage.

mbedtls

Utilise mbedTLS pour le calcul de hachage.

encryption

Active le chiffrement côté client. Sur les plateformes autres que Windows, vous devez également activer openssl ou mbedtls.

rtti

Active les informations de type à l'exécution (RTTI) au moment de la compilation.

tinyxml2

Utilise la version de tinyxml2 installée sur le système plutôt que celle incluse avec le SDK.

Définitions complètes : vcpkg/vcpkg.json.

Code source

Téléchargez la dernière version de l'OSS C++ SDK V2 depuis GitHub, puis compilez et installez-le avec CMake :

git clone https://github.com/aliyun/alibabacloud-oss-cpp-sdk-v2.git
cd alibabacloud-oss-cpp-sdk-v2
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
cmake --build . --target install

Options CMake disponibles :

Option

Description

BUILD_SHARED_LIBS

Compile le SDK en tant que bibliothèque partagée. Par défaut, une bibliothèque statique est compilée (OFF).

USE_CURL_TRANSPORT

Utilise libcurl comme couche de transport HTTP.

USE_WINHTTP_TRANSPORT

Utilise WinHTTP comme couche de transport HTTP (Windows uniquement).

USE_SYSTEM_CURL

Utilise la version de libcurl installée sur le système plutôt que celle incluse avec le SDK.

USE_SYSTEM_OPENSSL

Utilise la version d'OpenSSL installée sur le système.

USE_SYSTEM_MBEDTLS

Utilise la version de mbedTLS installée sur le système.

USE_SYSTEM_TINYXML2

Utilise la version de tinyxml2 installée sur le système.

USE_STD_EXPECTED

Utilise std::expected de la norme C++23. Par défaut, l'implémentation compatible incluse avec le SDK est utilisée.

ENABLE_ENCRYPTION

Active le chiffrement côté client.

ENABLE_RTTI

Active les informations de type à l'exécution (RTTI).

Ajoutez la dépendance au fichier CMakeLists.txt de votre projet :

cmake_minimum_required(VERSION 3.15)
project(my-app)

find_package(alibabacloud_oss_v2 REQUIRED)

add_executable(MyApp main.cpp)
target_link_libraries(MyApp PRIVATE alibabacloud_oss_v2::oss)

Configuration des informations d'identification d'accès

Définissez des variables d'environnement contenant la paire AccessKey de votre utilisateur RAM.

Dans la console RAM , créez un utilisateur RAM et générez une AccessKey permanente . Enregistrez l'AccessKey, puis accordez l'autorisation AliyunOSSFullAccess à l'utilisateur.

Linux

  1. Dans l'interface de ligne de commande, exécutez les commandes suivantes pour ajouter les variables d'environnement à votre fichier ~/.bashrc.

    echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc
    echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc
    1. Exécutez la commande suivante pour appliquer les modifications.

      source ~/.bashrc
    2. Exécutez les commandes suivantes pour vérifier que les variables d'environnement sont définies.

      echo $OSS_ACCESS_KEY_ID
      echo $OSS_ACCESS_KEY_SECRET

macOS

  1. Dans le terminal, exécutez la commande suivante pour vérifier votre shell par défaut.

    echo $SHELL
    1. Les étapes suivantes dépendent de votre shell par défaut.

      Zsh

      1. Exécutez les commandes suivantes pour ajouter les variables d'environnement à votre fichier ~/.zshrc.

        echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc
        echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc
      2. Exécutez la commande suivante pour appliquer les modifications.

        source ~/.zshrc
      3. Exécutez les commandes suivantes pour vérifier que les variables d'environnement sont définies.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

      Bash

      1. Exécutez les commandes suivantes pour ajouter les variables d'environnement à votre fichier ~/.bash_profile.

        echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile
        echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile
      2. Exécutez la commande suivante pour appliquer les modifications.

        source ~/.bash_profile
      3. Exécutez les commandes suivantes pour vérifier que les variables d'environnement sont définies.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

Windows

Invite de commandes

  1. Dans l'invite de commandes (CMD), exécutez les commandes suivantes :

    setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
    setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
  2. Rouvrez l'invite de commandes et exécutez les commandes suivantes pour vérifier que les variables d'environnement sont définies.

    echo %OSS_ACCESS_KEY_ID%
    echo %OSS_ACCESS_KEY_SECRET%

PowerShell

  1. Dans PowerShell, exécutez les commandes suivantes.

    [System.Environment]::SetEnvironmentVariable('OSS_ACCESS_KEY_ID', 'YOUR_ACCESS_KEY_ID', [System.EnvironmentVariableTarget]::User)
    [System.Environment]::SetEnvironmentVariable('OSS_ACCESS_KEY_SECRET', 'YOUR_ACCESS_KEY_SECRET', [System.EnvironmentVariableTarget]::User)
  2. Rouvrez PowerShell et exécutez les commandes suivantes pour vérifier que les variables d'environnement sont définies.

    [System.Environment]::GetEnvironmentVariable('OSS_ACCESS_KEY_ID', [System.EnvironmentVariableTarget]::User)
    [System.Environment]::GetEnvironmentVariable('OSS_ACCESS_KEY_SECRET', [System.EnvironmentVariableTarget]::User)

Initialisation du client

Le SDK prend en charge trois modes de requête : OSSClient (synchrone), OSSClient (asynchrone) (basé sur un pool de threads) et OSSAsyncClient (asynchrone) (async natif). Les exemples suivants utilisent ListBuckets pour illustrer chaque mode.

OSSClient (synchrone)

Utilisez le mode synchrone d'OSSClient lorsque vous devez attendre la fin d'une opération avant de poursuivre.

Avant d'exécuter l'exemple de code, remplacez <region-id> par un point de terminaison et une région réels, tels que ap-southeast-1 .
#include <iostream>
#include "alibabacloud/oss2/ClientConfiguration.h"
#include "alibabacloud/oss2/OSSClient.h"
#include "alibabacloud/oss2/credentials/CredentialsProvider.h"

namespace oss = alibabacloud::oss2;

int main() {
    auto conf = oss::ClientConfiguration::loadDefault();
    conf.region = "<region-id>";
    conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();

    oss::OSSClient client(conf);

    auto outcome = client.listBuckets(
        oss::models::ListBucketsRequest());

    if (!outcome.has_value()) {
        auto& err = outcome.error();
        std::cerr << "Error Code: " << err.getCode() << std::endl;
        std::cerr << "Error Message: " << err.getMessage() << std::endl;
        std::cerr << "Request ID: " << err.getRequestId() << std::endl;
        return 1;
    }

    auto& result = outcome.value();
    for (auto& bucket : result.getBuckets()) {
        std::cout << "bucket: name:" << bucket.name
                  << ", region:" << bucket.region
                  << ", storageClass:" << bucket.storageClass
                  << std::endl;
    }

    return 0;
}

OSSClient (asynchrone)

Ce mode asynchrone basé sur un pool de threads utilise toujours OSSClient. Après avoir configuré conf.executor (un pool de threads), appelez asyncCall() pour envoyer une requête synchrone au pool de threads pour une exécution simultanée. L'appel renvoie un std::future, et l'appelant attend le résultat avec get().

Si conf.executor n'est pas configuré, asyncCall() renvoie une erreur NoExecutor .
#include <future>
#include <iostream>
#include "alibabacloud/oss2/ClientConfiguration.h"
#include "alibabacloud/oss2/OSSClient.h"
#include "alibabacloud/oss2/credentials/CredentialsProvider.h"
#include "alibabacloud/oss2/utils/DefaultExecutor.h"

namespace oss = alibabacloud::oss2;

int main() {
    auto conf = oss::ClientConfiguration::loadDefault();
    conf.region = "<region-id>";
    conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();
    // Key: Configure a thread pool to enable asyncCall() support for OSSClient.
    conf.executor = std::make_shared<oss::DefaultExecutor>();

    oss::OSSClient client(conf);

    // Asynchronous call that returns a std::future.
    auto future = client.asyncCall(oss::models::ListBucketsRequest());

    // Wait for the result by using get() (future pattern).
    auto outcome = future.get();
    if (!outcome.has_value()) {
        auto& err = outcome.error();
        std::cerr << "Error Code: " << err.getCode() << std::endl;
        std::cerr << "Error Message: " << err.getMessage() << std::endl;
        return 1;
    }

    auto& result = outcome.value();
    for (auto& bucket : result.getBuckets()) {
        std::cout << "bucket: name:" << bucket.name
                  << ", region:" << bucket.region << std::endl;
    }
    return 0;
}

Exemples de chargement et de téléchargement simultanés : AsyncCallOnSyncClient.cpp et AsyncCallbackOnSyncClient.cpp.

OSSAsyncClient (asynchrone)

Ce mode asynchrone natif utilise OSSAsyncClient. Chaque opération dispose d'une méthode correspondante operationNameAsync() qui reçoit le résultat via un rappel (callback), ce qui élimine le besoin de configurer un pool de threads. Ce mode est idéal pour les scénarios nécessitant un grand volume d'opérations simultanées.

Avant d'exécuter l'exemple de code, remplacez <region-id> par un point de terminaison et une région réels, tels que ap-southeast-1 .
#include <iostream>
#include <thread>
#include "alibabacloud/oss2/ClientConfiguration.h"
#include "alibabacloud/oss2/OSSAsyncClient.h"
#include "alibabacloud/oss2/credentials/CredentialsProvider.h"

namespace oss = alibabacloud::oss2;

int main() {
    auto conf = oss::ClientConfiguration::loadDefault();
    conf.region = "<region-id>";
    conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();

    auto client = std::make_shared<oss::OSSAsyncClient>(conf);

    client->listBucketsAsync(
        oss::models::ListBucketsRequest(),
        oss::ListBucketsAsyncCallback([](oss::ListBucketsOutcome outcome) {
            if (!outcome.has_value()) {
                auto& err = outcome.error();
                std::cerr << "Error Code: " << err.getCode() << std::endl;
                std::cerr << "Error Message: " << err.getMessage() << std::endl;
                return;
            }

            auto& result = outcome.value();
            for (auto& bucket : result.getBuckets()) {
                std::cout << "bucket: name:" << bucket.name
                          << ", region:" << bucket.region
                          << ", storageClass:" << bucket.storageClass
                          << std::endl;
            }
        }));

    // Wait for the asynchronous operation to complete.
    std::this_thread::sleep_for(std::chrono::seconds(5));

    return 0;
}

La sortie liste tous les buckets de votre compte, toutes régions confondues.

Configuration du client

Paramètres de client pris en charge

Paramètre

Description

region

(Obligatoire) Région vers laquelle envoyer les requêtes.

credentialsProvider

(Obligatoire) Fournisseur des identifiants d'accès.

endpoint

Endpoint du service.

httpTransport

Spécifie le client HTTP. Valeur par défaut : cURL.

retryMaxAttempts

Nombre maximal de tentatives pour une requête HTTP. Valeur par défaut : 3.

retryer

Gestionnaire de nouvelle tentative pour les requêtes HTTP. Valeur par défaut : StandardRetryer avec une stratégie de backoff FullJitterBackoff.

connectTimeout

Délai d'expiration de la connexion en millisecondes. Valeur par défaut : 5000.

readWriteTimeout

Délai d'expiration du transfert de données en millisecondes. Valeur par défaut : 20000.

insecureSkipVerify

Ignores la vérification du certificat SSL. Valeur par défaut : false (la vérification est activée).

enabledRedirect

Active la redirection HTTP. Valeur par défaut : false.

signatureVersion

Version de la signature. Valeur par défaut : v4. Ce paramètre nécessite que le paramètre region soit défini.

signer

Implémentation personnalisée du signataire. Cette option remplace signatureVersion si elle est définie.

disableSsl

Désactive HTTPS et utilise HTTP. Valeur par défaut : false (HTTPS est utilisé).

usePathStyle

Utilise des requêtes de style chemin. Valeur par défaut : false (le style d'hôte virtuel est utilisé).

useCName

Utilise un domaine personnalisé. Valeur par défaut : false.

useDualStackEndpoint

Utilise un endpoint à pile double. Valeur par défaut : false.

useAccelerateEndpoint

Utilise un endpoint d'accélération de transfert. Valeur par défaut : false.

useInternalEndpoint

Utilise un endpoint interne. Valeur par défaut : false.

additionalHeaders

En-têtes supplémentaires à inclure dans la signature v4.

userAgent

Informations supplémentaires à ajouter à l'en-tête User-Agent.

disableClockSkewCorrection

Désactive la correction automatique du décalage horaire. Valeur par défaut : false (la correction est activée).

disableAutoDetectMimeType

Désactive la détection automatique de Content-Type basée sur la clé de l'objet. Valeur par défaut : false (la détection est activée).

disableUploadCRC64Check

Désactive la vérification CRC64 pour les requêtes de téléchargement (PutObject, AppendObject, UploadPart et Uploader). Valeur par défaut : false (la vérification est activée).

disableDownloadCRC64Check

Désactive la vérification CRC64 pour les requêtes de téléchargement (GetObjectToFile et Downloader.DownloadFile). Valeur par défaut : false (la vérification est activée).

executor

Implémentation du pool de threads pour les opérations asynchrones dans OSSClient, telles que asyncCall et asyncCallback. Si ce paramètre n'est pas défini, l'appel de asyncCall renvoie une erreur NoExecutor.

asyncHttpTransport

Couche de transport HTTP asynchrone pour OSSAsyncClient. Valeur par défaut : CurlMultiTransport.

scheduledExecutor

Planificateur de tâches interne pour OSSAsyncClient. Le SDK utilise son implémentation intégrée par défaut.

Utiliser un domaine personnalisé

Un domaine personnalisé permet la prévisualisation des fichiers depuis un navigateur et la diffusion accélérée par CDN.

Avant d'exécuter l'exemple de code, remplacez <region-id> par un ID de région réel issu de la liste des régions et endpoints , tel que ap-southeast-1 .
#include <iostream>
#include "alibabacloud/oss2/ClientConfiguration.h"
#include "alibabacloud/oss2/OSSClient.h"
#include "alibabacloud/oss2/credentials/CredentialsProvider.h"

namespace oss = alibabacloud::oss2;

int main() {
    auto conf = oss::ClientConfiguration::loadDefault();
    conf.region = "<region-id>";
    conf.endpoint = "https://your-custom-domain.com";
    conf.useCName = true;
    conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();

    oss::OSSClient client(conf);

    // Perform operations using the custom domain.
    auto outcome = client.putObject(
        oss::models::PutObjectRequest()
            .setBucket("your-bucket")
            .setKey("your-key")
            .setBody(oss::RequestBody::fromString("Hello, OSS!")));

    if (!outcome.has_value()) {
        auto& err = outcome.error();
        std::cerr << "Error: " << err.getMessage() << std::endl;
        return 1;
    }

    std::cout << "Upload successful" << std::endl;
    return 0;
}

Contrôle des délais d'expiration

Utilisez connectTimeout et readWriteTimeout pour configurer les délais d'expiration de la connexion et de lecture/écriture en millisecondes.

auto conf = oss::ClientConfiguration::loadDefault();
conf.region = "<region-id>";
conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();
// Set the connection timeout to 10 seconds.
conf.connectTimeout = 10000;
// Set the read/write timeout to 30 seconds.
conf.readWriteTimeout = 30000;

oss::OSSClient client(conf);

Politique de nouvelle tentative

Le gestionnaire intégré StandardRetryer utilise une stratégie FullJitterBackoff avec un maximum de 3 tentatives par défaut. Utilisez retryMaxAttempts pour ajuster cette valeur.

auto conf = oss::ClientConfiguration::loadDefault();
conf.region = "<region-id>";
conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();
// Set the maximum number of retries to 5.
conf.retryMaxAttempts = 5;

oss::OSSClient client(conf);

Exemple de stratégie de nouvelle tentative personnalisée : CustomRetryStrategy.cpp.

Protocole HTTP/HTTPS

Le protocole HTTPS est utilisé par défaut. Pour utiliser le protocole HTTP, définissez disableSsl sur true.

auto conf = oss::ClientConfiguration::loadDefault();
conf.region = "<region-id>";
conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();
// Use the HTTP protocol.
conf.disableSsl = true;

oss::OSSClient client(conf);

Utiliser un endpoint interne

Lorsqu'il est déployé sur ECS, utilisez un endpoint interne pour éviter les coûts liés au trafic du réseau public.

auto conf = oss::ClientConfiguration::loadDefault();
conf.region = "<region-id>";
conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();
// Use an internal endpoint.
conf.useInternalEndpoint = true;

oss::OSSClient client(conf);

Utiliser un endpoint d'accélération de transfert

Utilisez un endpoint d'accélération de transfert pour les transferts de données sur de longues distances.

auto conf = oss::ClientConfiguration::loadDefault();
conf.region = "<region-id>";
conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();
// Use a transfer acceleration endpoint.
conf.useAccelerateEndpoint = true;

oss::OSSClient client(conf);

Utiliser un domaine personnalisé (CNAME)

Accédez à OSS en utilisant un domaine personnalisé (CNAME).

auto conf = oss::ClientConfiguration::loadDefault();
conf.region = "<region-id>";
conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();
conf.endpoint = "https://your-custom-domain.com";
conf.useCName = true;

oss::OSSClient client(conf);

Personnaliser le transport HTTP

Le SDK utilise cURL par défaut. Remplacez-le via httpTransport. WinHTTP est également pris en charge sous Windows.

Exemples de transport personnalisé : CurlCustomConfig.cpp et WinHttpCustomConfig.cpp.

Configurer les identifiants d'accès

Le SDK prend en charge les méthodes d'identification suivantes :

Comment choisir une méthode d'identification

Méthode d'identification

Cas d'utilisation

Nécessite des identifiants existants

Type d'identifiant

Validité de l'identifiant

Rotation ou actualisation

Utiliser la clé d'accès d'un utilisateur RAM

Pour les applications qui s'exécutent dans un environnement sécurisé et stable, non exposé aux attaques externes, et qui nécessitent un accès à long terme aux services cloud sans rotation fréquente des identifiants.

Oui

Clé d'accès

Long terme

Rotation manuelle

Utiliser un identifiant temporaire STS

Pour les applications qui s'exécutent dans un environnement non fiable et qui nécessitent un contrôle sur la validité de l'accès et les permissions.

Oui

Jeton STS

Temporaire

Actualisation manuelle

Utiliser RAMRoleARN

Pour les applications qui nécessitent un accès délégué aux services cloud, comme l'accès aux ressources entre différents comptes Alibaba Cloud.

Oui

Jeton STS

Temporaire

Actualisation automatique

Utiliser ECSRAMRole

Pour les applications déployées sur des instances ECS Alibaba Cloud, des instances ECI ou des nœuds de travail dans Container Service for Kubernetes (ACK).

Non

Jeton STS

Temporaire

Actualisation automatique

Utiliser OIDCRoleARN

Pour les applications non fiables déployées sur des nœuds de travail dans Container Service for Kubernetes (ACK).

Non

Jeton STS

Temporaire

Actualisation automatique

Utiliser l'accès anonyme

Pour accéder aux ressources OSS en lecture publique.

Non

Aucun

-

-

Utiliser un identifiant personnalisé

Si aucune des méthodes précédentes ne répond à vos besoins, vous pouvez implémenter un fournisseur d'identifiants personnalisé.

Personnalisé

Personnalisé

Personnalisé

Personnalisé

Clé d'accès d'utilisateur RAM

Utilisez la clé d'accès d'un utilisateur RAM pour les applications dans un environnement sécurisé et non exposé à Internet.

Variables d'environnement (recommandé)

Récupérez les identifiants à partir des variables d'environnement OSS_ACCESS_KEY_ID et OSS_ACCESS_KEY_SECRET.

  1. Définissez les variables d'environnement en utilisant la clé d'accès d'un utilisateur RAM.

    Linux

    1. Depuis la ligne de commande, exécutez les commandes suivantes pour ajouter les paramètres de variable d'environnement au fichier ~/.bashrc.

      echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc
      echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc
    2. Exécutez la commande suivante pour appliquer les modifications.

      source ~/.bashrc
    3. Exécutez les commandes suivantes pour vérifier que les variables d'environnement sont définies.

      echo $OSS_ACCESS_KEY_ID
      echo $OSS_ACCESS_KEY_SECRET

    macOS

    1. Dans le terminal, exécutez la commande suivante pour vérifier votre type de shell par défaut.

      echo $SHELL
    2. Suivez les étapes en fonction de votre type de shell par défaut.

      Zsh

      1. Exécutez les commandes suivantes pour ajouter les paramètres de variable d'environnement au fichier ~/.zshrc.

        echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc
        echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc
      2. Exécutez la commande suivante pour appliquer les modifications.

        source ~/.zshrc
      3. Exécutez les commandes suivantes pour vérifier que les variables d'environnement sont définies.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

      Bash

      1. Exécutez les commandes suivantes pour ajouter les paramètres de variable d'environnement au fichier ~/.bash_profile.

        echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile
        echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile
      2. Exécutez la commande suivante pour appliquer les modifications.

        source ~/.bash_profile
      3. Exécutez les commandes suivantes pour vérifier que les variables d'environnement sont définies.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

    Windows

    CMD

    1. Dans CMD, exécutez les commandes suivantes.

      setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
      setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
    2. Rouvrez CMD et exécutez les commandes suivantes pour vérifier que les variables d'environnement sont définies.

      echo %OSS_ACCESS_KEY_ID%
      echo %OSS_ACCESS_KEY_SECRET%

    PowerShell

    1. Dans PowerShell, exécutez les commandes suivantes.

      [System.Environment]::SetEnvironmentVariable('OSS_ACCESS_KEY_ID', 'YOUR_ACCESS_KEY_ID', [System.EnvironmentVariableTarget]::User)
      [System.Environment]::SetEnvironmentVariable('OSS_ACCESS_KEY_SECRET', 'YOUR_ACCESS_KEY_SECRET', [System.EnvironmentVariableTarget]::User)
    2. Rouvrez PowerShell et exécutez les commandes suivantes pour vérifier que les variables d'environnement sont définies.

      [System.Environment]::GetEnvironmentVariable('OSS_ACCESS_KEY_ID', [System.EnvironmentVariableTarget]::User)
      [System.Environment]::GetEnvironmentVariable('OSS_ACCESS_KEY_SECRET', [System.EnvironmentVariableTarget]::User)
  2. Après avoir modifié les variables d'environnement système, redémarrez votre IDE et votre terminal pour que les modifications prennent effet.

  3. Utilisez les variables d'environnement pour transmettre les identifiants.

    Avant d'exécuter l'exemple de code, remplacez <region-id> par un ID de région réel, tel que cn-hangzhou .
    #include "alibabacloud/oss2/ClientConfiguration.h"
    #include "alibabacloud/oss2/OSSClient.h"
    #include "alibabacloud/oss2/credentials/CredentialsProvider.h"
    
    namespace oss = alibabacloud::oss2;
    
    int main() {
        auto conf = oss::ClientConfiguration::loadDefault();
        conf.region = "<region-id>";
        conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();
    
        oss::OSSClient client(conf);
        // Use the client to perform operations.
        return 0;
    }

Explicitement dans le code

Vous pouvez fournir explicitement l'ID de clé d'accès et le secret de clé d'accès en utilisant StaticCredentialsProvider.

Avertissement

Cette méthode expose votre clé d'accès dans le code et est recommandée uniquement à des fins de test. Pour les environnements de production, utilisez une méthode plus sécurisée, telle que les variables d'environnement.

#include "alibabacloud/oss2/ClientConfiguration.h"
#include "alibabacloud/oss2/OSSClient.h"
#include "alibabacloud/oss2/credentials/CredentialsProvider.h"

namespace oss = alibabacloud::oss2;

int main() {
    auto conf = oss::ClientConfiguration::loadDefault();
    conf.region = "<region-id>";
    conf.credentialsProvider = std::make_shared<oss::StaticCredentialsProvider>(
        "YOUR_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_SECRET");

    oss::OSSClient client(conf);
    // Use the client to perform operations.
    return 0;
}

Identifiants temporaires STS

Les identifiants temporaires STS se composent d'un ID de clé d'accès, d'un secret de clé d'accès et d'un jeton de sécurité. Vous devez gérer et actualiser manuellement ce jeton.

Remarque
  • Pour obtenir un identifiant temporaire STS à l'aide d'un SDK, consultez la rubrique Utilisation d'identifiants temporaires STS pour accéder à OSS.

  • Lors de la génération d'un jeton STS, vous devez spécifier une durée d'expiration. Le jeton devient automatiquement invalide après cette échéance.

  • Notez que les ID de clé d'accès obtenus via STS commencent par le préfixe STS, par exemple : STS.L4aBSCSJVMuKg5U1****.

Variables d'environnement (recommandé)

Obtenez les identifiants temporaires en utilisant les variables d'environnement OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET et OSS_SESSION_TOKEN.

  1. Définissez les variables d'environnement avec les identifiants temporaires.

    macOS, Linux ou Unix

    export OSS_ACCESS_KEY_ID=<STS_ACCESS_KEY_ID>
    export OSS_ACCESS_KEY_SECRET=<STS_ACCESS_KEY_SECRET>
    export OSS_SESSION_TOKEN=<STS_SECURITY_TOKEN>

    Windows

    set OSS_ACCESS_KEY_ID=<STS_ACCESS_KEY_ID>
    set OSS_ACCESS_KEY_SECRET=<STS_ACCESS_KEY_SECRET>
    set OSS_SESSION_TOKEN=<STS_SECURITY_TOKEN>
  2. Utilisez les variables d'environnement pour transmettre les identifiants. Le fournisseur EnvironmentVariableCredentialsProvider du SDK lit automatiquement ces trois variables.

    Avant d'exécuter l'exemple de code, remplacez <region-id> par un ID de région réel, tel que cn-hangzhou .
    #include "alibabacloud/oss2/ClientConfiguration.h"
    #include "alibabacloud/oss2/OSSClient.h"
    #include "alibabacloud/oss2/credentials/CredentialsProvider.h"
    
    namespace oss = alibabacloud::oss2;
    
    int main() {
        auto conf = oss::ClientConfiguration::loadDefault();
        conf.region = "<region-id>";
        // Automatically reads OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET, and OSS_SESSION_TOKEN.
        conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();
    
        oss::OSSClient client(conf);
        // Use the client to perform operations.
        return 0;
    }

Explicitement dans le code

Vous pouvez fournir explicitement l'ID de clé d'accès temporaire, le secret de clé d'accès et le jeton de sécurité en utilisant le fournisseur StaticCredentialsProvider.

Avertissement

Réservé aux tests. N'intégrez pas d'identifiants dans le code de production. Privilégiez l'utilisation de variables d'environnement ou d'une méthode SDK avec actualisation automatique.

#include "alibabacloud/oss2/ClientConfiguration.h"
#include "alibabacloud/oss2/OSSClient.h"
#include "alibabacloud/oss2/credentials/CredentialsProvider.h"

namespace oss = alibabacloud::oss2;

int main() {
    auto conf = oss::ClientConfiguration::loadDefault();
    conf.region = "<region-id>";
    conf.credentialsProvider = std::make_shared<oss::StaticCredentialsProvider>(
        "STS_ACCESS_KEY_ID", "STS_ACCESS_KEY_SECRET", "STS_SECURITY_TOKEN");

    oss::OSSClient client(conf);
    // Use the client to perform operations.
    return 0;
}

RAMRoleARN, ECSRAMRole ou OIDCRoleARN

Pour les méthodes d'identification telles que RAMRoleARN, ECSRAMRole et OIDCRoleARN, nous recommandons d'utiliser la bibliothèque alibabacloud-credentials-cpp avec le fournisseur CredentialsProviderFunc.

  1. Installez la dépendance.

    vcpkg install alibabacloud-credentials-cpp
  2. Ajoutez la dépendance dans votre fichier CMakeLists.txt.

    find_package(alibabacloud_credentials REQUIRED)
  3. Intégrez la bibliothèque en utilisant CredentialsProviderFunc.

    RAMRoleARN

    #include "alibabacloud/oss2/ClientConfiguration.h"
    #include "alibabacloud/oss2/OSSClient.h"
    #include "alibabacloud/oss2/credentials/CredentialsProvider.h"
    #include <darabonba/core/Client.hpp>
    #include <alibabacloud/credential.hpp>
    
    namespace oss = alibabacloud::oss2;
    
    int main() {
        auto credConfig = std::make_shared<Alibabacloud_Credential::Config>();
        // The credential type must be ram_role_arn.
        credConfig->type = std::make_shared<std::string>("ram_role_arn");
        // The access key ID of the RAM user. To avoid hardcoding, we recommend injecting this value through the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable.
        credConfig->accessKeyId = std::make_shared<std::string>("YOUR_ACCESS_KEY_ID");
        // The access key secret of the RAM user. To avoid hardcoding, we recommend injecting this value through the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable.
        credConfig->accessKeySecret = std::make_shared<std::string>("YOUR_ACCESS_KEY_SECRET");
        // The ARN of the RAM role to assume. Example: acs:ram::123456789012****:role/adminrole
        // You can also set this value by using the ALIBABA_CLOUD_ROLE_ARN environment variable.
        credConfig->roleArn = std::make_shared<std::string>("YOUR_ROLE_ARN");
        // The role session name, used for auditing purposes. You can also set this value by using the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable.
        credConfig->roleSessionName = std::make_shared<std::string>("your-session-name");
        // (Optional) Further restrict permissions with a policy. This parameter is not required.
        // Example: {"Statement":[{"Action":["oss:GetObject"],"Effect":"Allow","Resource":["*"]}],"Version":"1"}
        // credConfig->policy = std::make_shared<std::string>("<Policy>");
        // (Optional) The role session duration in seconds. Default: 3600 (1 hour). This parameter is not required.
        // credConfig->roleSessionExpiration = std::make_shared<long>(3600);
    
        auto credClient = std::make_shared<Alibabacloud_Credential::Client>(credConfig);
    
        auto conf = oss::ClientConfiguration::loadDefault();
        conf.region = "<region-id>";
        conf.credentialsProvider = std::make_shared<oss::CredentialsProviderFunc>(
            [credClient]() -> oss::Credentials {
                auto cred = credClient->getCredential();
                auto ak = cred.getAccessKeyId();
                auto sk = cred.getAccessKeySecret();
                if (ak.empty() || sk.empty()) {
                    return oss::Credentials::withRetryableError(
                        "failed to get credentials from alibabacloud-credentials-cpp");
                }
                auto token = cred.getSecurityToken();
                return oss::Credentials(std::move(ak), std::move(sk), std::move(token));
            });
    
        oss::OSSClient client(conf);
        // Use the client to perform operations.
        return 0;
    }

    ECSRAMRole

    #include "alibabacloud/oss2/ClientConfiguration.h"
    #include "alibabacloud/oss2/OSSClient.h"
    #include "alibabacloud/oss2/credentials/CredentialsProvider.h"
    #include <darabonba/core/Client.hpp>
    #include <alibabacloud/credential.hpp>
    
    namespace oss = alibabacloud::oss2;
    
    int main() {
        auto credConfig = std::make_shared<Alibabacloud_Credential::Config>();
        // The credential type must be ecs_ram_role.
        credConfig->type = std::make_shared<std::string>("ecs_ram_role");
        // The name of the RAM role granted to the ECS instance. This parameter is optional.
        // If you do not set it, the SDK automatically retrieves it from the metadata service.
        // We strongly recommend setting this parameter explicitly to reduce requests to the metadata service.
        credConfig->roleName = std::make_shared<std::string>("YOUR_ECS_ROLE_NAME");
    
        auto credClient = std::make_shared<Alibabacloud_Credential::Client>(credConfig);
    
        auto conf = oss::ClientConfiguration::loadDefault();
        conf.region = "<region-id>";
        conf.credentialsProvider = std::make_shared<oss::CredentialsProviderFunc>(
            [credClient]() -> oss::Credentials {
                auto cred = credClient->getCredential();
                auto ak = cred.getAccessKeyId();
                auto sk = cred.getAccessKeySecret();
                if (ak.empty() || sk.empty()) {
                    return oss::Credentials::withRetryableError(
                        "failed to get credentials from alibabacloud-credentials-cpp");
                }
                auto token = cred.getSecurityToken();
                return oss::Credentials(std::move(ak), std::move(sk), std::move(token));
            });
    
        oss::OSSClient client(conf);
        // Use the client to perform operations.
        return 0;
    }

    OIDCRoleARN

    #include "alibabacloud/oss2/ClientConfiguration.h"
    #include "alibabacloud/oss2/OSSClient.h"
    #include "alibabacloud/oss2/credentials/CredentialsProvider.h"
    #include <darabonba/core/Client.hpp>
    #include <alibabacloud/credential.hpp>
    
    namespace oss = alibabacloud::oss2;
    
    int main() {
        auto credConfig = std::make_shared<Alibabacloud_Credential::Config>();
        // The credential type must be oidc_role_arn.
        credConfig->type = std::make_shared<std::string>("oidc_role_arn");
        // The ARN of the RAM role to assume. You can also set this value by using the ALIBABA_CLOUD_ROLE_ARN environment variable.
        credConfig->roleArn = std::make_shared<std::string>("YOUR_ROLE_ARN");
        // The ARN of the OIDC identity provider. You can also set this value by using the ALIBABA_CLOUD_OIDC_PROVIDER_ARN environment variable.
        credConfig->oidcProviderArn = std::make_shared<std::string>("YOUR_OIDC_PROVIDER_ARN");
        // The path to the OIDC token file, which is automatically mounted into the pod by RRSA. You can also set this value by using the ALIBABA_CLOUD_OIDC_TOKEN_FILE environment variable.
        credConfig->oidcTokenFilePath = std::make_shared<std::string>("/var/run/secrets/tokens/oidc-token");
        // The role session name, used for auditing purposes. You can also set this value by using the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable.
        credConfig->roleSessionName = std::make_shared<std::string>("your-session-name");
        // (Optional) Further restrict permissions with a policy. This parameter is not required.
        // credConfig->policy = std::make_shared<std::string>("<Policy>");
    
        auto credClient = std::make_shared<Alibabacloud_Credential::Client>(credConfig);
    
        auto conf = oss::ClientConfiguration::loadDefault();
        conf.region = "<region-id>";
        conf.credentialsProvider = std::make_shared<oss::CredentialsProviderFunc>(
            [credClient]() -> oss::Credentials {
                auto cred = credClient->getCredential();
                auto ak = cred.getAccessKeyId();
                auto sk = cred.getAccessKeySecret();
                if (ak.empty() || sk.empty()) {
                    return oss::Credentials::withRetryableError(
                        "failed to get credentials from alibabacloud-credentials-cpp");
                }
                auto token = cred.getSecurityToken();
                return oss::Credentials(std::move(ak), std::move(sk), std::move(token));
            });
    
        oss::OSSClient client(conf);
        // Use the client to perform operations.
        return 0;
    }

    Plus d'exemples d'identifiants : exemples d'identifiants.

Accès anonyme

Accédez aux compartiments et objets publics (public-read) sans utiliser d'identifiants.

#include "alibabacloud/oss2/ClientConfiguration.h"
#include "alibabacloud/oss2/OSSClient.h"
#include "alibabacloud/oss2/credentials/CredentialsProvider.h"

namespace oss = alibabacloud::oss2;

int main() {
    auto conf = oss::ClientConfiguration::loadDefault();
    conf.region = "<region-id>";
    conf.credentialsProvider = std::make_shared<oss::AnonymousCredentialsProvider>();

    oss::OSSClient client(conf);
    // Use the client to perform operations.
    return 0;
}

Fournisseur d'identifiants personnalisé

Implémentez une logique personnalisée de récupération des identifiants avec CredentialsProviderFunc.

#include "alibabacloud/oss2/ClientConfiguration.h"
#include "alibabacloud/oss2/OSSClient.h"
#include "alibabacloud/oss2/credentials/CredentialsProvider.h"

#include <cstdlib>

namespace oss = alibabacloud::oss2;

// Example: Load credentials from custom environment variables or a configuration file.
static oss::Credentials loadCredentialsFromCustomSource() {
    // In a real-world application, you can retrieve credentials from various sources:
    //   - A configuration file (such as ~/.ossrc)
    //   - A key management service (such as HashiCorp Vault or KMS)
    //   - A metadata service
    //   - A database
    const char* ak = std::getenv("MY_APP_ACCESS_KEY_ID");
    const char* sk = std::getenv("MY_APP_ACCESS_KEY_SECRET");
    const char* token = std::getenv("MY_APP_SESSION_TOKEN");

    if (!ak || !sk) {
        // The error message propagates to OperationError::getMessage().
        return oss::Credentials::withError(
            "MY_APP_ACCESS_KEY_ID and MY_APP_ACCESS_KEY_SECRET must be set");
        // For transient failures, such as network timeouts, use withRetryableError.
        // The SDK automatically retries credential retrieval.
        // return oss::Credentials::withRetryableError("...");
    }

    return oss::Credentials(ak, sk, token ? token : "");
}

int main() {
    // The custom credential provider function is called every time credentials are required,
    // allowing you to implement rotation, refresh, or caching logic.
    auto provider = std::make_shared<oss::CredentialsProviderFunc>(
        loadCredentialsFromCustomSource);

    auto conf = oss::ClientConfiguration::loadDefault();
    conf.region = "<region-id>";
    conf.credentialsProvider = provider;

    oss::OSSClient client(conf);
    // Use the client to perform operations.
    return 0;
}

Appel des opérations API

Les opérations API suivent une convention de nommage et un modèle d'appel cohérents.

Convention de nommage des API

Les noms de méthode utilisent le style camelCase. Chaque opération prend un paramètre <OperationName>Request et renvoie un résultat <OperationName>Outcome (de type Outcome<Result, Error>).

OSSClient (synchrone) :

OutcomeType operationName(const models::OperationNameRequest& request, const OperationOptions* options = nullptr)

OSSAsyncClient (asynchrone natif) :

void operationNameAsync(const models::OperationNameRequest& request, const OperationNameAsyncCallback& callback, const OperationOptions* options = nullptr)

Modes d'appel

Mode d'appel

OSSClient

OSSAsyncClient

synchrone

operationName(request)

-

asynchrone basé sur future

asyncCall(request) (nécessite la configuration de conf.executor)

asyncCall(request)

asynchrone basé sur rappel

asyncCallback(request, cb) (nécessite la configuration de conf.executor)

operationNameAsync(request, cb)

Annulation d'une requête

Pour annuler des opérations de longue durée avec un CancellationToken, transmettez un cancellationToken dans les OperationOptions. Le SDK C++ V2 pour OSS propose deux modes d'annulation :

Annulation immédiate

Appelez CancellationTokenSource::cancel() depuis un autre thread pour interrompre une requête en cours.

// Cancel the request from another thread.
auto cts = oss::CancellationTokenSource::create();

oss::OperationOptions opts;
opts.cancellationToken = cts->getToken();

// Start the request in another thread.
auto future = std::async([&]() {
    return client.getObject(request, &opts);
});

// Cancel from the current thread.
cts->cancel();

Annulation par délai

Appelez cancelAfter() pour définir un délai d'attente. Le SDK annule automatiquement la requête à l'expiration de ce délai.

// Set a 30-second timeout for automatic cancellation.
auto cts = oss::CancellationTokenSource::create();
cts->cancelAfter(std::chrono::seconds(30));

oss::OperationOptions opts;
opts.cancellationToken = cts->getToken();

auto outcome = client.getObject(request, &opts);

Gestion des erreurs

Le SDK C++ V2 pour OSS utilise le type Outcome<Result, Error>, compatible avec std::expected. Appelez has_value() pour vérifier le succès de l'opération. En cas de succès, récupérez le résultat avec value() ou en déréférençant l'objet outcome (*outcome). Sinon, récupérez l'objet d'erreur avec error().

auto outcome = client.putObject(request);

if (!outcome.has_value()) {
    auto& err = outcome.error();
    std::cerr << "Error code: " << err.getCode() << std::endl;
    std::cerr << "Error message: " << err.getMessage() << std::endl;
    std::cerr << "EC: " << err.getEC() << std::endl;
    std::cerr << "Request ID: " << err.getRequestId() << std::endl;
    std::cerr << "Request target: " << err.getRequestTarget() << std::endl;
}

Lors de la compilation avec l'option -DUSE_STD_EXPECTED=ON (C++23), Outcome devient un alias de type pour std::expected, qui prend en charge les opérations monadiques telles que .and_then(), .transform() et .or_else().

Exemples de code

Le tableau suivant répertorie les exemples de code disponibles.

Catégorie

Description

Version synchrone

Version asynchrone

Buckets

Créer un bucket

PutBucket.cpp

PutBucket.cpp

Répertorier les buckets

ListBuckets.cpp

ListBuckets.cpp

Supprimer un bucket

DeleteBucket.cpp

DeleteBucket.cpp

Obtenir les informations du bucket

GetBucketInfo.cpp

GetBucketInfo.cpp

Obtenir l'emplacement du bucket

GetBucketLocation.cpp

GetBucketLocation.cpp

Téléchargement d'objets

Téléchargement simple

PutObject.cpp

PutObject.cpp

Téléchargement par ajout (append)

AppendObject.cpp

AppendObject.cpp

Téléchargement multipartie

UploadPart.cpp

UploadPart.cpp

Copie multipartie

UploadPartCopy.cpp

UploadPartCopy.cpp

Téléchargement d'objets

Téléchargement simple

GetObject.cpp

GetObject.cpp

Copier un objet

CopyObject.cpp

CopyObject.cpp

Gestion des objets

Répertorier les objets

ListObjects.cpp

ListObjects.cpp

Répertorier les objets V2

ListObjectsV2.cpp

ListObjectsV2.cpp

Supprimer un objet

DeleteObject.cpp

DeleteObject.cpp

Supprimer plusieurs objets

DeleteMultipleObjects.cpp

DeleteMultipleObjects.cpp

Obtenir les métadonnées de l'objet

HeadObject.cpp

HeadObject.cpp

Obtenir les métadonnées simplifiées de l'objet

GetObjectMeta.cpp

GetObjectMeta.cpp

Objets archivés

Restaurer un objet

RestoreObject.cpp

RestoreObject.cpp

Supprimer un objet restauré

CleanRestoredObject.cpp

CleanRestoredObject.cpp

Liens symboliques

Créer un lien symbolique

PutSymlink.cpp

PutSymlink.cpp

Obtenir un lien symbolique

GetSymlink.cpp

GetSymlink.cpp

Tagging d'objets

Définir le tagging d'un objet

PutObjectTagging.cpp

PutObjectTagging.cpp

Obtenir le tagging d'un objet

GetObjectTagging.cpp

GetObjectTagging.cpp

Supprimer le tagging d'un objet

DeleteObjectTagging.cpp

DeleteObjectTagging.cpp

Contrôle d'accès

Définir l'ACL du bucket

PutBucketAcl.cpp

PutBucketAcl.cpp

Obtenir l'ACL du bucket

GetBucketAcl.cpp

GetBucketAcl.cpp

Définir l'ACL de l'objet

PutObjectAcl.cpp

PutObjectAcl.cpp

Versioning

Définir le versioning du bucket

PutBucketVersioning.cpp

PutBucketVersioning.cpp

Obtenir l'état du versioning du bucket

GetBucketVersioning.cpp

GetBucketVersioning.cpp

Répertorier les versions d'objets

ListObjectVersions.cpp

ListObjectVersions.cpp

Protection contre le hotlinking

Définir la protection contre le hotlinking

PutBucketReferer.cpp

PutBucketReferer.cpp

Obtenir la configuration de protection contre le hotlinking

GetBucketReferer.cpp

GetBucketReferer.cpp

Fonctions système

Interroger les informations sur l'endpoint

DescribeRegions.cpp

DescribeRegions.cpp

URL pré-signée

Générer une URL pré-signée pour le téléchargement

PresignGetObject.cpp

-

Générer une URL pré-signée pour l'upload

PresignPutObject.cpp

-

Générer une URL pré-signée pour une requête HEAD

PresignHeadObject.cpp

-

Générer une URL pré-signée pour l'upload multipartie

PresignUploadPart.cpp

-

API générique

Utilisation de invokeOperation

InvokeOperation.cpp

-

Traitement des données

Traiter un objet et enregistrer le résultat

ProcessObject.cpp

ProcessObject.cpp

Soumettre une tâche de traitement d'objet asynchrone

AsyncProcessObject.cpp

AsyncProcessObject.cpp

Paginateur

Répertorier tous les buckets

ListBucketsPaginator.cpp

-

Répertorier tous les objets (recommandé)

ListObjectsV2Paginator.cpp

-

Répertorier toutes les versions d'objets

ListObjectVersionsPaginator.cpp

-

Lister toutes les parties chargées

ListPartsPaginator.cpp

-

Lister tous les chargements multiparties

ListMultipartUploadsPaginator.cpp

-

Lister tous les objets (méthode obsolète, non recommandée)

ListObjectsPaginator.cpp

-

Exemples de scénarios

Série SinkFactory (téléchargement sans copie, reprise de chargement et vérification CRC)

samples/scenario/sink-factory

-

Opérations asynchrones avec future/callback

samples/scenario/sync-client-async

-

Autres exemples de scénarios

samples/scenario

-