Tüm Ürünler
Search
Belge Merkezi

Object Storage Service:OSS C++ SDK V2

Son Güncelleme:Oct 02, 2026

C++ uygulamalarınızdan Alibaba Cloud OSS içindeki nesneleri yüklemek, indirmek ve yönetmek için OSS C++ SDK V2'yi kullanın. Yüksek performanslı senaryolar, gömülü sistemler ve masaüstü uygulamaları için tasarlanmıştır.

Not

OSS C++ SDK V2 önizleme aşamasındadır. Arayüzlerde değişiklikler olabilir. Güncellemeler için GitHub deposundaki sürüm notlarını kontrol edin.

GitHub | örnek kodlar | geçiş kılavuzu | deepwiki

Hızlı başlangıç

SDK'yı kurmak, kimlik bilgilerini yapılandırmak ve bir istemciyi başlatmak için aşağıdaki adımları tamamlayın.

Ön koşullar

  • C++17 veya üzeri bir derleyici (GCC 7+, Clang 5+ veya MSVC 2017+).

  • CMake 3,15 veya üzeri.

CMake sürümünüzü kontrol etmek için cmake --version komutunu çalıştırın. CMake yüklü değilse veya sürüm 3,15'ten önceyse CMake'i indirip kurun .

SDK'yı yükleme

Önerilen kurulum yöntemi vcpkg'dir.

vcpkg

SDK'yı yüklemek için vcpkg paket yöneticisini kullanın:

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]

Bir overlay port kullanarak kaynak koddan da kurulum yapabilirsiniz:

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
Not

Varsayılan olarak hiçbiri etkinleştirilmediğinden bir HTTP aktarım katmanı (curl veya winhttp) belirtmeniz gerekir. Her ikisini de etkinleştirebilirsiniz.

Hem openssl hem de mbedtls etkinleştirilmişse openssl önceliklidir.

İsteğe bağlı özellikler:


Özellik


Açıklama


curl


libcurl tabanlı bir HTTP aktarım katmanı. Bu özellik varsayılan olarak etkin olmadığından kurulum komutunda [curl] ifadesini açıkça belirtmelisiniz.


winhttp


WinHTTP tabanlı bir HTTP aktarım katmanı (yalnızca Windows).


openssl


Karma hesaplama için OpenSSL kullanır.


mbedtls


Karma hesaplama için mbedTLS kullanır.


encryption


İstemci tarafı şifrelemeyi etkinleştirir. Windows dışı platformlarda ayrıca openssl veya mbedtls özelliğini etkinleştirmeniz gerekir.


rtti


Derleme zamanında çalışma zamanı türü bilgisini (RTTI) etkinleştirir.


tinyxml2


SDK ile birlikte gelen sürüm yerine sisteme yüklü tinyxml2 kitaplığını kullanır.

Tam tanımlamalar: vcpkg/vcpkg.json.

Kaynak kodu

OSS C++ SDK V2'nin en son sürümünü GitHub üzerinden indirin ve CMake ile derleyip kurun:

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

Kullanılabilir CMake seçenekleri:

Seçenek

Açıklama

BUILD_SHARED_LIBS

SDK'yı paylaşılan bir kitaplık olarak derler. Varsayılan olarak statik bir kitaplık derlenir (OFF).

USE_CURL_TRANSPORT

HTTP aktarım katmanı olarak libcurl kullanır.

USE_WINHTTP_TRANSPORT

HTTP aktarım katmanı olarak WinHTTP kullanır (yalnızca Windows).

USE_SYSTEM_CURL

SDK ile birlikte gelen sürüm yerine sisteme yüklü libcurl kitaplığını kullanır.

USE_SYSTEM_OPENSSL

Sisteme yüklü OpenSSL kitaplığını kullanır.

USE_SYSTEM_MBEDTLS

Sisteme yüklü mbedTLS kitaplığını kullanır.

USE_SYSTEM_TINYXML2

Sisteme yüklü tinyxml2 kitaplığını kullanır.

USE_STD_EXPECTED

C++23 standardındaki std::expected öğesini kullanır. Varsayılan olarak SDK ile birlikte gelen uyumlu uygulama kullanılır.

ENABLE_ENCRYPTION

İstemci tarafı şifrelemeyi etkinleştirir.

ENABLE_RTTI

Çalışma zamanı türü bilgisini (RTTI) etkinleştirir.

Projenizin CMakeLists.txt dosyasına bağımlılığı ekleyin:

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)

Erişim kimlik bilgilerini yapılandırma

RAM kullanıcınızın AccessKey çiftini ortam değişkenleri olarak ayarlayın.

RAM konsolu nda bir RAM kullanıcısı oluşturun ve kalıcı bir AccessKey oluşturun . AccessKey'i kaydedin ve kullanıcıya AliyunOSSFullAccess iznini atayın.

Linux

  1. Komut satırı arayüzünde ortam değişkenlerini ~/.bashrc dosyanıza eklemek için aşağıdaki komutları çalıştırın.

    echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc
    echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc
    1. Değişiklikleri uygulamak için aşağıdaki komutu çalıştırın.

      source ~/.bashrc
    2. Ortam değişkenlerinin ayarlandığını doğrulamak için aşağıdaki komutları çalıştırın.

      echo $OSS_ACCESS_KEY_ID
      echo $OSS_ACCESS_KEY_SECRET

macOS

  1. Terminalde varsayılan kabuğunuzu kontrol etmek için aşağıdaki komutu çalıştırın.

    echo $SHELL
    1. Aşağıdaki adımlar varsayılan kabuğunuza bağlıdır.

      Zsh

      1. Ortam değişkenlerini ~/.zshrc dosyanıza eklemek için aşağıdaki komutları çalıştırın.

        echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc
        echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc
      2. Değişiklikleri uygulamak için aşağıdaki komutu çalıştırın.

        source ~/.zshrc
      3. Ortam değişkenlerinin ayarlandığını doğrulamak için aşağıdaki komutları çalıştırın.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

      Bash

      1. Ortam değişkenlerini ~/.bash_profile dosyanıza eklemek için aşağıdaki komutları çalıştırın.

        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. Değişiklikleri uygulamak için aşağıdaki komutu çalıştırın.

        source ~/.bash_profile
      3. Ortam değişkenlerinin ayarlandığını doğrulamak için aşağıdaki komutları çalıştırın.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

Windows

Command Prompt

  1. Command Prompt (CMD) içinde aşağıdaki komutları çalıştırın:

    setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
    setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
  2. Command Prompt'u yeniden açın ve ortam değişkenlerinin ayarlandığını doğrulamak için aşağıdaki komutları çalıştırın.

    echo %OSS_ACCESS_KEY_ID%
    echo %OSS_ACCESS_KEY_SECRET%

PowerShell

  1. PowerShell'de aşağıdaki komutları çalıştırın.

    [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. PowerShell'i yeniden açın ve ortam değişkenlerinin ayarlandığını doğrulamak için aşağıdaki komutları çalıştırın.

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

İstemciyi başlatma

SDK üç istek modunu destekler: OSSClient (senkron), OSSClient (asenkron) (iş parçacığı havuzu tabanlı) ve OSSAsyncClient (asenkron) (yerel async). Aşağıdaki örneklerde her bir mod ListBuckets işlemiyle gösterilmiştir.

OSSClient (senkron)

Bir işlemin tamamlanmasını beklemeniz gerektiğinde OSSClient senkron modunu kullanın.

Örnek kodu çalıştırmadan önce <region-id> ifadesini gerçek bir bölge ve uç nokta ile değiştirin; örneğin 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 (asenkron)

Bu iş parçacığı havuzu tabanlı asenkron mod yine OSSClient kullanır. conf.executor (bir iş parçacığı havuzu) ayarlandıktan sonra, senkron bir isteği eşzamanlı yürütme için iş parçacığı havuzuna göndermek üzere asyncCall() yöntemini çağırırsınız. Çağrı bir std::future döndürür ve çağıran sonuç için get() ile bekler.

conf.executor ayarlanmazsa asyncCall() yöntemi bir NoExecutor hatası döndürür.
#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;
}

Eşzamanlı yükleme ve indirme örnekleri: AsyncCallOnSyncClient.cpp ve AsyncCallbackOnSyncClient.cpp.

OSSAsyncClient (asenkron)

Bu yerel asenkron mod OSSAsyncClient kullanır. Her işlem için karşılık gelen bir operationNameAsync() yöntemi bulunur ve sonuç bir geri arama aracılığıyla alınır; bu sayede iş parçacığı havuzu yapılandırmaya gerek kalmaz. Bu mod, yüksek hacimli eşzamanlı işlemler gerektiren senaryolar için idealdir.

Örnek kodu çalıştırmadan önce <region-id> ifadesini gerçek bir bölge ve uç nokta ile değiştirin; örneğin 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;
}

Çıktı, hesabınızdaki tüm bölgelerdeki tüm paketleri listeler.

İstemci yapılandırması

Desteklenen istemci parametreleri


Parametre


Açıklama


region


(Gerekli) İsteklerin gönderileceği bölge.


credentialsProvider


(Gerekli) Erişim kimlik bilgileri sağlayıcısı.


endpoint


Hizmet uç noktası.


httpTransport


HTTP istemcisini belirtir. Varsayılan: cURL.


retryMaxAttempts


Bir HTTP isteği için maksimum yeniden deneme sayısı. Varsayılan: 3.


retryer


HTTP istekleri için yeniden deneyici işleyici. Varsayılan: StandardRetryer ile FullJitterBackoff geri çekilme stratejisi.


connectTimeout


Milisaniye cinsinden bağlantı zaman aşımı. Varsayılan: 5000.


readWriteTimeout


Milisaniye cinsinden veri aktarımı zaman aşımı. Varsayılan: 20000.


insecureSkipVerify


SSL sertifika doğrulamasını atlar. Varsayılan: false (doğrulama etkindir).


enabledRedirect


HTTP yönlendirmesini etkinleştirir. Varsayılan: false.


signatureVersion


İmza sürümü. Varsayılan: v4. Bu parametrenin ayarlanması için region parametresinin belirtilmesi gerekir.


signer


Özel imzalayıcı uygulaması. Ayarlanırsa signatureVersion parametresini geçersiz kılar.


disableSsl


HTTPS'yi devre dışı bırakır ve HTTP kullanır. Varsayılan: false (HTTPS kullanılır).


usePathStyle


Yol tarzı istekler kullanır. Varsayılan: false (sanal ana bilgisayar tarzı kullanılır).


useCName


Özel alan adı kullanır. Varsayılan: false.


useDualStackEndpoint


Çift yığın uç noktası kullanır. Varsayılan: false.


useAccelerateEndpoint


Aktarım hızlandırma uç noktası kullanır. Varsayılan: false.


useInternalEndpoint


Dahili uç noktası kullanır. Varsayılan: false.


additionalHeaders


v4 imzasına dahil edilecek ek üstbilgiler.


userAgent


User-Agent üstbilgisine eklenecek ek bilgiler.


disableClockSkewCorrection


Otomatik saat farkı düzeltmesini devre dışı bırakır. Varsayılan: false (düzeltme etkindir).


disableAutoDetectMimeType


Nesne anahtarına göre otomatik Content-Type algılamasını devre dışı bırakır. Varsayılan: false (algılama etkindir).


disableUploadCRC64Check


Yükleme istekleri (PutObject, AppendObject, UploadPart ve Uploader) için CRC64 denetimini devre dışı bırakır. Varsayılan: false (denetim etkindir).


disableDownloadCRC64Check


İndirme istekleri (GetObjectToFile ve Downloader.DownloadFile) için CRC64 denetimini devre dışı bırakır. Varsayılan: false (denetim etkindir).


executor


OSSClient içindeki asyncCall ve asyncCallback gibi asenkron işlemler için iş parçacığı havuzu uygulaması. Bu parametre ayarlanmazsa asyncCall çağrısı bir NoExecutor hatası döndürür.


asyncHttpTransport


OSSAsyncClient için asenkron HTTP aktarım katmanı. Varsayılan: CurlMultiTransport.


scheduledExecutor


OSSAsyncClient için dahili görev zamanlayıcı. SDK varsayılan olarak yerleşik uygulamasını kullanır.

Özel alan adı kullanma

Bir özel alan adı tarayıcı tabanlı dosya önizlemesi ve CDN hızlandırmalı teslimat sağlar.

Örnek kodu çalıştırmadan önce <region-id> ifadesini bölge ve uç nokta listesinden gerçek bir bölge kimliği ile değiştirin; örneğin 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;
}

Zaman aşımı denetimi

Bağlantı ve okuma/yazma zaman aşımlarını milisaniye cinsinden yapılandırmak için connectTimeout ve readWriteTimeout parametrelerini kullanın.

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);

Yeniden deneme ilkesi

Yerleşik StandardRetryer varsayılan olarak FullJitterBackoff stratejisini kullanır ve en fazla 3 yeniden deneme yapar. Ayarlamak için retryMaxAttempts parametresini kullanın.

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);

Özel yeniden deneme stratejisi örneği: CustomRetryStrategy.cpp.

HTTP/HTTPS protokolü

Varsayılan olarak HTTPS protokolü kullanılır. HTTP protokolünü kullanmak için disableSsl parametresini true olarak ayarlayın.

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);

Dahili uç noktası kullanma

ECS üzerinde dağıtıldığında genel ağ trafiği maliyetlerinden kaçınmak için dahili bir uç noktası kullanın.

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);

Aktarım hızlandırma uç noktası kullanma

Uzun mesafeli veri aktarımları için aktarım hızlandırma uç noktası kullanın.

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);

Özel alan adı (CNAME) kullanma

OSS'e özel bir alan adı (CNAME) kullanarak erişin.

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);

HTTP aktarımını özelleştirme

SDK varsayılan olarak cURL kullanır. httpTransport aracılığıyla değiştirebilirsiniz. Windows üzerinde WinHTTP de desteklenir.

Özel aktarım örnekleri: CurlCustomConfig.cpp ve WinHttpCustomConfig.cpp.

Erişim kimlik bilgilerini yapılandırma

SDK aşağıdaki kimlik doğrulama yöntemlerini destekler:

Kimlik doğrulama yöntemi seçimi


Kimlik doğrulama yöntemi


Kullanım durumları


Mevcut kimlik bilgisi gerekir


Kimlik bilgisi türü


Kimlik bilgisi geçerliliği


Döndürme veya yenileme


RAM kullanıcısının erişim anahtarını kullanma


Dış saldırılara maruz kalmayan güvenli ve kararlı bir ortamda çalışan, sık kimlik bilgisi döndürmesine ihtiyaç duymadan bulut hizmetlerine uzun süreli erişim gerektiren uygulamalar için.


Evet


Erişim anahtarı


Uzun vadeli


El ile döndürme


STS geçici kimlik bilgisi kullanma


Güvenilmeyen bir ortamda çalışan ve erişim geçerliliği ile izinler üzerinde kontrol gerektiren uygulamalar için.


Evet


STS belirteci


Geçici


El ile yenileme


RAMRoleARN kullanma


Farklı Alibaba Cloud hesapları arasında kaynaklara erişim gibi bulut hizmetlerine temsilci erişimi gerektiren uygulamalar için.


Evet


STS belirteci


Geçici


Otomatik yenileme


ECSRAMRole kullanma


Alibaba Cloud ECS örneklerinde, ECI örneklerinde veya Container Service for Kubernetes (ACK) çalışan düğümlerinde dağıtılan uygulamalar için.


Hayır


STS belirteci


Geçici


Otomatik yenileme


OIDCRoleARN kullanma


Container Service for Kubernetes (ACK) çalışan düğümlerinde dağıtılan güvenilmeyen uygulamalar için.


Hayır


STS belirteci


Geçici


Otomatik yenileme


Anonim erişim kullanma


Herkese açık okuma erişimli OSS kaynaklarına erişmek için.


Hayır


Yok


-


-


Özel kimlik bilgisi kullanma


Yukarıdaki yöntemlerden hiçbiri gereksinimlerinizi karşılamıyorsa özel bir kimlik bilgisi sağlayıcısı uygulayabilirsiniz.


Özel


Özel


Özel


Özel

RAM kullanıcısı erişim anahtarı

Güvenli, internete açık olmayan bir ortamdaki uygulamalar için RAM kullanıcısının erişim anahtarını kullanın.

Ortam değişkenleri (Önerilen)

Kimlik bilgilerini OSS_ACCESS_KEY_ID ve OSS_ACCESS_KEY_SECRET ortam değişkenlerinden alın.

  1. Bir RAM kullanıcısının erişim anahtarını kullanarak ortam değişkenlerini ayarlayın.

    Linux

    1. Komut satırından ortam değişkeni ayarlarını ~/.bashrc dosyasına eklemek için aşağıdaki komutları çalıştırın.

      echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc
      echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc
    2. Değişiklikleri uygulamak için aşağıdaki komutu çalıştırın.

      source ~/.bashrc
    3. Ortam değişkenlerinin ayarlandığını doğrulamak için aşağıdaki komutları çalıştırın.

      echo $OSS_ACCESS_KEY_ID
      echo $OSS_ACCESS_KEY_SECRET

    macOS

    1. Terminalde varsayılan kabuk türünüzü kontrol etmek için aşağıdaki komutu çalıştırın.

      echo $SHELL
    2. Varsayılan kabuk türünüze göre aşağıdaki adımları izleyin.

      Zsh

      1. Ortam değişkeni ayarlarını ~/.zshrc dosyasına eklemek için aşağıdaki komutları çalıştırın.

        echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc
        echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc
      2. Değişiklikleri uygulamak için aşağıdaki komutu çalıştırın.

        source ~/.zshrc
      3. Ortam değişkenlerinin ayarlandığını doğrulamak için aşağıdaki komutları çalıştırın.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

      Bash

      1. Ortam değişkeni ayarlarını ~/.bash_profile dosyasına eklemek için aşağıdaki komutları çalıştırın.

        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. Değişiklikleri uygulamak için aşağıdaki komutu çalıştırın.

        source ~/.bash_profile
      3. Ortam değişkenlerinin ayarlandığını doğrulamak için aşağıdaki komutları çalıştırın.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

    Windows

    CMD

    1. CMD'de aşağıdaki komutları çalıştırın.

      setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
      setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
    2. CMD'yi yeniden açın ve ortam değişkenlerinin ayarlandığını doğrulamak için aşağıdaki komutları çalıştırın.

      echo %OSS_ACCESS_KEY_ID%
      echo %OSS_ACCESS_KEY_SECRET%

    PowerShell

    1. PowerShell'de aşağıdaki komutları çalıştırın.

      [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. PowerShell'i yeniden açın ve ortam değişkenlerinin ayarlandığını doğrulamak için aşağıdaki komutları çalıştırın.

      [System.Environment]::GetEnvironmentVariable('OSS_ACCESS_KEY_ID', [System.EnvironmentVariableTarget]::User)
      [System.Environment]::GetEnvironmentVariable('OSS_ACCESS_KEY_SECRET', [System.EnvironmentVariableTarget]::User)
  2. Sistem ortam değişkenlerini değiştirdikten sonra değişikliklerin etkili olması için IDE'nizi ve terminalinizi yeniden başlatın.

  3. Kimlik bilgilerini iletmek için ortam değişkenlerini kullanın.

    Örnek kodu çalıştırmadan önce <region-id> ifadesini gerçek bir bölge kimliği ile değiştirin; örneğin 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;
    }

Kodda açıkça belirtme

Erişim anahtarı kimliğini ve erişim anahtarı gizli anahtarını StaticCredentialsProvider kullanarak açıkça sağlayabilirsiniz.

Uyarı

Bu yöntem erişim anahtarınızı kodda açığa çıkarır ve yalnızca test amaçlı kullanılması önerilir. Üretim ortamları için ortam değişkenleri gibi daha güvenli bir yöntem kullanın.

#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;
}

STS geçici kimlik bilgisi

STS geçici kimlik bilgileri bir erişim anahtarı kimliği, erişim anahtarı gizli anahtarı ve güvenlik belirtecinden oluşur. Belirteci el ile yönetmeli ve yenilemelisiniz.

Not
  • Bir SDK kullanarak STS geçici kimlik bilgisi elde etmek için bkz. OSS'e erişmek için STS geçici kimlik bilgilerini kullanma.

  • Bir STS belirteci oluştururken bir sona erme süresi belirtmeniz gerekir. Belirtecin süresi dolduğunda otomatik olarak geçersiz hale gelir.

  • STS'den alınan erişim anahtarı kimliklerinin STS ön ekiyle başladığını unutmayın; örneğin STS.L4aBSCSJVMuKg5U1****.

Ortam değişkenleri (Önerilen)

Geçici kimlik bilgilerini OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET ve OSS_SESSION_TOKEN ortam değişkenlerini kullanarak alın.

  1. Geçici kimlik bilgilerini kullanarak ortam değişkenlerini ayarlayın.

    macOS, Linux veya 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. Kimlik bilgilerini iletmek için ortam değişkenlerini kullanın. SDK'nın EnvironmentVariableCredentialsProvider sağlayıcısı bu üç ortam değişkenini otomatik olarak okur.

    Örnek kodu çalıştırmadan önce <region-id> ifadesini gerçek bir bölge kimliği ile değiştirin; örneğin 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;
    }

Kodda açıkça belirtme

Geçici erişim anahtarı kimliğini, erişim anahtarı gizli anahtarını ve güvenlik belirtecini StaticCredentialsProvider kullanarak açıkça sağlayabilirsiniz.

Uyarı

Yalnızca test amaçlıdır. Kimlik bilgilerini üretim koduna gömmeyin. Bunun yerine ortam değişkenlerini veya otomatik yenileme yapan bir SDK yöntemini kullanın.

#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 veya OIDCRoleARN

RAMRoleARN, ECSRAMRole ve OIDCRoleARN gibi kimlik doğrulama yöntemleri için CredentialsProviderFunc ile alibabacloud-credentials-cpp kitaplığının kullanılması önerilir.

  1. Bağımlılığı yükleyin.

    vcpkg install alibabacloud-credentials-cpp
  2. CMakeLists.txt dosyanıza bağımlılığı ekleyin.

    find_package(alibabacloud_credentials REQUIRED)
  3. Kitaplığı CredentialsProviderFunc kullanarak entegre edin.

    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;
    }

    Daha fazla kimlik doğrulama örneği: kimlik doğrulama örnekleri.

Anonim erişim

Herkese açık okuma erişimli paketlere ve nesnelere kimlik bilgisi olmadan erişin.

#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;
}

Özel kimlik bilgisi sağlayıcısı

CredentialsProviderFunc ile özel kimlik bilgisi alma mantığını uygulayın.

#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;
}

API işlemlerini çağırma

API işlemleri tutarlı bir adlandırma kuralı ve çağırma deseni izler.

API adlandırma kuralı

Yöntem adları camelCase stilini kullanır. Her işlem bir <OperationName>Request parametresi alır ve bir <OperationName>Outcome (Outcome<Result, Error>) döndürür.

OSSClient (senkron):

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

OSSAsyncClient (yerel asenkron):

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

Çağırma modları


Çağırma modu


OSSClient


OSSAsyncClient


senkron


operationName(request)


-


future tabanlı asenkron


asyncCall(request) (conf.executor yapılandırılmalıdır)


asyncCall(request)


geri arama tabanlı asenkron


asyncCallback(request, cb) (conf.executor yapılandırılmalıdır)


operationNameAsync(request, cb)

İsteği iptal etme

Uzun süren işlemleri bir CancellationToken ile iptal etmek için OperationOptions içinde bir cancellationToken iletin. OSS C++ SDK V2 iki iptal modu sağlar:

Anında iptal et

Devam eden bir isteği kesintiye uğratmak için başka bir iş parçacığından CancellationTokenSource::cancel() yöntemini çağırın.

// 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();

Son tarihle iptal et

Bir zaman aşımı ayarlamak için cancelAfter() yöntemini çağırın. SDK, zaman aşımı süresi dolduğunda isteği otomatik olarak iptal eder.

// 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);

Hata işleme

OSS C++ SDK V2, std::expected ile uyumlu olan Outcome<Result, Error> yapısını kullanır. Başarıyı kontrol etmek için has_value() yöntemini çağırın. Başarılıysa sonucu value() ile veya sonuç nesnesine başvurarak (*outcome) alın. Aksi takdirde hata nesnesini error() ile alın.

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;
}

-DUSE_STD_EXPECTED=ON bayrağıyla (C++23) derleme yaptığınızda Outcome türü std::expected için bir tür takma adı haline gelir; bu da .and_then(), .transform() ve .or_else() gibi monadik işlemleri destekler.

Örnek kodlar

Aşağıdaki tabloda kullanılabilir örnek kodlar listelenmiştir.

Kategori

Açıklama

Senkron sürüm

Asenkron sürüm

Paketler

Paket oluşturma

PutBucket.cpp

PutBucket.cpp

Paketleri listeleme

ListBuckets.cpp

ListBuckets.cpp

Paket silme

DeleteBucket.cpp

DeleteBucket.cpp

Paket bilgilerini alma

GetBucketInfo.cpp

GetBucketInfo.cpp

Paket konumunu alma

GetBucketLocation.cpp

GetBucketLocation.cpp

Nesne yükleme

Basit yükleme

PutObject.cpp

PutObject.cpp

Ekleme yoluyla yükleme

AppendObject.cpp

AppendObject.cpp

Parçalı yükleme

UploadPart.cpp

UploadPart.cpp

Parçalı kopyalama

UploadPartCopy.cpp

UploadPartCopy.cpp

Nesne indirme

Basit indirme

GetObject.cpp

GetObject.cpp

Nesne kopyalama

CopyObject.cpp

CopyObject.cpp

Nesne yönetimi

Nesneleri listeleme

ListObjects.cpp

ListObjects.cpp

Nesneleri listeleme V2

ListObjectsV2.cpp

ListObjectsV2.cpp

Nesne silme

DeleteObject.cpp

DeleteObject.cpp

Birden çok nesne silme

DeleteMultipleObjects.cpp

DeleteMultipleObjects.cpp

Nesne meta verilerini alma

HeadObject.cpp

HeadObject.cpp

Basitleştirilmiş nesne meta verilerini alma

GetObjectMeta.cpp

GetObjectMeta.cpp

Arşivlenmiş nesneler

Nesne geri yükleme

RestoreObject.cpp

RestoreObject.cpp

Geri yüklenmiş nesneyi silme

CleanRestoredObject.cpp

CleanRestoredObject.cpp

Sembolik bağlantılar

Sembolik bağlantı oluşturma

PutSymlink.cpp

PutSymlink.cpp

Sembolik bağlantı alma

GetSymlink.cpp

GetSymlink.cpp

Nesne etiketleme

Nesne etiketleme ayarlama

PutObjectTagging.cpp

PutObjectTagging.cpp

Nesne etiketleme alma

GetObjectTagging.cpp

GetObjectTagging.cpp

Nesne etiketleme silme

DeleteObjectTagging.cpp

DeleteObjectTagging.cpp

Erişim denetimi

Paket ACL ayarlama

PutBucketAcl.cpp

PutBucketAcl.cpp

Paket ACL alma

GetBucketAcl.cpp

GetBucketAcl.cpp

Nesne ACL ayarlama

PutObjectAcl.cpp

PutObjectAcl.cpp

Sürüm oluşturma

Paket sürüm oluşturma ayarlama

PutBucketVersioning.cpp

PutBucketVersioning.cpp

Paket sürüm oluşturma durumunu alma

GetBucketVersioning.cpp

GetBucketVersioning.cpp

Nesne sürümlerini listeleme

ListObjectVersions.cpp

ListObjectVersions.cpp

Hotlink koruması

Hotlink koruması ayarlama

PutBucketReferer.cpp

PutBucketReferer.cpp

Hotlink koruması yapılandırmasını alma

GetBucketReferer.cpp

GetBucketReferer.cpp

Sistem işlevleri

Uç nokta bilgilerini sorgulama

DescribeRegions.cpp

DescribeRegions.cpp

Ön imzalı URL

İndirme için ön imzalı URL oluşturma

PresignGetObject.cpp

-

Yükleme için ön imzalı URL oluşturma

PresignPutObject.cpp

-

HEAD isteği için ön imzalı URL oluşturma

PresignHeadObject.cpp

-

Parçalı yükleme için ön imzalı URL oluşturma

PresignUploadPart.cpp

-

Genel API

invokeOperation kullanma

InvokeOperation.cpp

-

Veri işleme

Nesne işleme ve sonucu kaydetme

ProcessObject.cpp

ProcessObject.cpp

Asenkron nesne işleme görevi gönderme

AsyncProcessObject.cpp

AsyncProcessObject.cpp

Sayfalayıcı

Tüm paketleri listeleme

ListBucketsPaginator.cpp

-

Tüm nesneleri listeleme (önerilen)

ListObjectsV2Paginator.cpp

-

Tüm nesne sürümlerini listeleme

ListObjectVersionsPaginator.cpp

-

Yüklenen tüm parçaları listeleme

ListPartsPaginator.cpp

-

Tüm parçalı yüklemeleri listeleme

ListMultipartUploadsPaginator.cpp

-

Tüm nesneleri listeleme (eski, önerilmez)

ListObjectsPaginator.cpp

-

Senaryo örnekleri

SinkFactory serisi (sıfır kopyalı indirme, kaldığı yerden yükleme ve CRC denetimi)

samples/scenario/sink-factory

-

future/callback ile asenkron işlemler

samples/scenario/sync-client-async

-

Diğer senaryo örnekleri

samples/scenario

-