All Products
Search
Document Center

Object Storage Service:OSS C++ SDK V2

Last Updated:Aug 04, 2026

Gunakan OSS C++ SDK V2 untuk mengunggah, mengunduh, dan mengelola objek di Alibaba Cloud OSS dari aplikasi C++. SDK ini dirancang untuk skenario berkinerja tinggi, sistem tertanam, dan aplikasi desktop.

Catatan

OSS C++ SDK V2 masih dalam tahap pratinjau. Antarmukanya dapat berubah. Periksa catatan rilis di repositori GitHub untuk pembaruan terbaru.

GitHub | kode contoh | panduan migrasi | deepwiki

Mulai cepat

Lengkapi langkah-langkah berikut untuk menginstal SDK, mengonfigurasi kredensial, dan menginisialisasi klien.

Prasyarat

  • Kompilator C++17 atau yang lebih baru (GCC 7+, Clang 5+, atau MSVC 2017+).

  • CMake 3.15 atau yang lebih baru.

Jalankan perintah cmake --version untuk memeriksa versi CMake Anda. Jika CMake belum terinstal atau versinya lebih lama dari 3.15, unduh dan instal CMake.

Instal SDK

vcpkg adalah metode instalasi yang direkomendasikan.

vcpkg

Gunakan manajer paket vcpkg untuk menginstal SDK:

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

# Di Windows, Anda dapat menggunakan WinHTTP sebagai lapisan transport HTTP.
vcpkg install alibabacloud-oss-cpp-sdk-v2[winhttp]

Anda juga dapat menginstal dari kode sumber dengan menggunakan overlay port:

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
Catatan

Anda harus menentukan lapisan transport HTTP (curl atau winhttp), karena tidak ada yang diaktifkan secara default. Anda dapat mengaktifkan keduanya.

Jika openssl dan mbedtls keduanya diaktifkan, openssl akan diprioritaskan.

Fitur opsional:

Fitur

Deskripsi

curl

Lapisan transport HTTP berbasis libcurl. Anda harus secara eksplisit menentukan [curl] dalam perintah instalasi, karena fitur ini tidak diaktifkan secara default.

winhttp

Lapisan transport HTTP berbasis WinHTTP (hanya untuk Windows).

openssl

Menggunakan OpenSSL untuk perhitungan hash.

mbedtls

Menggunakan mbedTLS untuk perhitungan hash.

encryption

Mengaktifkan enkripsi sisi client. Di platform non-Windows, Anda juga harus mengaktifkan openssl atau mbedtls.

rtti

Mengaktifkan informasi tipe waktu proses (RTTI) saat kompilasi.

tinyxml2

Menggunakan tinyxml2 yang terinstal di sistem alih-alih versi yang disertakan dalam SDK.

Definisi lengkap: vcpkg/vcpkg.json.

Kode sumber

Unduh versi terbaru OSS C++ SDK V2 dari GitHub, lalu bangun dan instal dengan 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

Opsi CMake yang tersedia:

Opsi

Deskripsi

BUILD_SHARED_LIBS

Membangun SDK sebagai pustaka bersama. Secara default, pustaka statis dibangun (OFF).

USE_CURL_TRANSPORT

Menggunakan libcurl sebagai lapisan transport HTTP.

USE_WINHTTP_TRANSPORT

Menggunakan WinHTTP sebagai lapisan transport HTTP (hanya untuk Windows).

USE_SYSTEM_CURL

Menggunakan libcurl yang terinstal di sistem alih-alih versi yang disertakan dalam SDK.

USE_SYSTEM_OPENSSL

Menggunakan OpenSSL yang terinstal di sistem.

USE_SYSTEM_MBEDTLS

Menggunakan mbedTLS yang terinstal di sistem.

USE_SYSTEM_TINYXML2

Menggunakan tinyxml2 yang terinstal di sistem.

USE_STD_EXPECTED

Menggunakan std::expected dari standar C++23. Secara default, implementasi kompatibel yang disertakan dalam SDK digunakan.

ENABLE_ENCRYPTION

Mengaktifkan enkripsi sisi client.

ENABLE_RTTI

Mengaktifkan informasi tipe waktu proses (RTTI).

Tambahkan dependensi ke file CMakeLists.txt proyek Anda:

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)

Konfigurasi kredensial akses

Tetapkan variabel lingkungan dengan Pasangan Kunci Akses Pengguna RAM Anda.

Di Konsol RAM, buat Pengguna RAM dan hasilkan AccessKey permanen. Simpan AccessKey tersebut, lalu berikan izin AliyunOSSFullAccess kepada pengguna tersebut.

Linux

  1. Di antarmuka baris perintah, jalankan perintah berikut untuk menambahkan variabel lingkungan ke file ~/.bashrc Anda.

    echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc
    echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc
    1. Jalankan perintah berikut untuk menerapkan perubahan.

      source ~/.bashrc
    2. Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah ditetapkan.

      echo $OSS_ACCESS_KEY_ID
      echo $OSS_ACCESS_KEY_SECRET

macOS

  1. Di terminal, jalankan perintah berikut untuk memeriksa shell default Anda.

    echo $SHELL
    1. Langkah-langkah berikut bergantung pada shell default Anda.

      Zsh

      1. Jalankan perintah berikut untuk menambahkan variabel lingkungan ke file ~/.zshrc Anda.

        echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc
        echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc
      2. Jalankan perintah berikut untuk menerapkan perubahan.

        source ~/.zshrc
      3. Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah ditetapkan.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

      Bash

      1. Jalankan perintah berikut untuk menambahkan variabel lingkungan ke file ~/.bash_profile Anda.

        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. Jalankan perintah berikut untuk menerapkan perubahan.

        source ~/.bash_profile
      3. Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah ditetapkan.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

Windows

Command Prompt

  1. Di Command Prompt (CMD), jalankan perintah berikut:

    setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
    setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
  2. Buka kembali Command Prompt dan jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah ditetapkan.

    echo %OSS_ACCESS_KEY_ID%
    echo %OSS_ACCESS_KEY_SECRET%

PowerShell

  1. Di PowerShell, jalankan perintah berikut.

    [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. Buka kembali PowerShell dan jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah ditetapkan.

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

Inisialisasi client

SDK mendukung tiga mode permintaan: OSSClient (sinkron), OSSClient (asinkron) (berbasis kolam thread), dan OSSAsyncClient (asinkron) (asinkron native). Contoh berikut menggunakan ListBuckets untuk menunjukkan setiap mode.

OSSClient (sinkron)

Gunakan mode sinkron OSSClient ketika Anda perlu menunggu operasi selesai sebelum melanjutkan.

Sebelum menjalankan kode contoh, ganti <region-id> dengan wilayah dan titik akhir yang sebenarnya, seperti 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 (asinkron)

Mode asinkron berbasis kolam thread ini tetap menggunakan OSSClient. Setelah menyetel conf.executor (kolam thread), Anda memanggil asyncCall() untuk mengirimkan permintaan sinkron ke kolam thread guna eksekusi konkuren. Pemanggilan mengembalikan std::future, dan pemanggil menunggu hasilnya dengan get().

Jika conf.executor tidak disetel, asyncCall() mengembalikan error 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>();
    // Penting: Konfigurasikan kolam thread untuk mengaktifkan dukungan asyncCall() pada OSSClient.
    conf.executor = std::make_shared<oss::DefaultExecutor>();

    oss::OSSClient client(conf);

    // Pemanggilan asinkron yang mengembalikan std::future.
    auto future = client.asyncCall(oss::models::ListBucketsRequest());

    // Tunggu hasilnya dengan get() (pola future).
    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;
}

Contoh unggah dan unduh konkuren: AsyncCallOnSyncClient.cpp dan AsyncCallbackOnSyncClient.cpp.

OSSAsyncClient (asinkron)

Mode asinkron native ini menggunakan OSSAsyncClient. Setiap operasi memiliki metode operationNameAsync() yang sesuai yang menerima hasil melalui callback, sehingga tidak perlu mengonfigurasi kolam thread. Mode ini ideal untuk skenario yang memerlukan volume operasi konkuren tinggi.

Sebelum menjalankan kode contoh, ganti <region-id> dengan wilayah dan titik akhir yang sebenarnya, seperti 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;
            }
        }));

    // Tunggu hingga operasi asinkron selesai.
    std::this_thread::sleep_for(std::chrono::seconds(5));

    return 0;
}

Output tersebut mencantumkan semua bucket dalam akun Anda di seluruh wilayah.

Konfigurasi client

Parameter klien yang didukung

Parameter

Deskripsi

region

(Wajib) Wilayah tempat mengirim permintaan.

credentialsProvider

(Wajib) Penyedia kredensial akses.

endpoint

Titik akhir layanan.

httpTransport

Menentukan client HTTP. Default: cURL.

retryMaxAttempts

Jumlah maksimum percobaan ulang untuk permintaan HTTP. Default: 3.

retryer

Penanganan percobaan ulang untuk permintaan HTTP. Default: StandardRetryer dengan strategi backoff FullJitterBackoff.

connectTimeout

Waktu tunggu koneksi dalam milidetik. Default: 5000.

readWriteTimeout

Waktu tunggu transfer data dalam milidetik. Default: 20000.

insecureSkipVerify

Melewati verifikasi sertifikat SSL. Default: false (verifikasi diaktifkan).

enabledRedirect

Mengaktifkan pengalihan HTTP. Default: false.

signatureVersion

Versi signature. Default: v4. Ini memerlukan parameter region untuk disetel.

signer

Implementasi signer kustom. Ini menggantikan signatureVersion jika disetel.

disableSsl

Menonaktifkan HTTPS dan menggunakan HTTP. Default: false (HTTPS digunakan).

usePathStyle

Menggunakan permintaan gaya path. Default: false (gaya virtual-hosted digunakan).

useCName

Menggunakan domain kustom. Default: false.

useDualStackEndpoint

Menggunakan titik akhir dual-stack. Default: false.

useAccelerateEndpoint

Menggunakan titik akhir akselerasi transfer. Default: false.

useInternalEndpoint

Menggunakan titik akhir internal. Default: false.

additionalHeaders

Header tambahan untuk disertakan dalam signature v4.

userAgent

Informasi tambahan untuk ditambahkan ke header User-Agent.

disableClockSkewCorrection

Menonaktifkan koreksi clock skew otomatis. Default: false (koreksi diaktifkan).

disableAutoDetectMimeType

Menonaktifkan deteksi Content-Type otomatis berdasarkan kunci objek. Default: false (deteksi diaktifkan).

disableUploadCRC64Check

Menonaktifkan pemeriksaan CRC64 untuk permintaan unggah (PutObject, AppendObject, UploadPart, dan Uploader). Default: false (pemeriksaan diaktifkan).

disableDownloadCRC64Check

Menonaktifkan pemeriksaan CRC64 untuk permintaan unduh (GetObjectToFile dan Downloader.DownloadFile). Default: false (pemeriksaan diaktifkan).

executor

Implementasi kolam thread untuk operasi asinkron di OSSClient, seperti asyncCall dan asyncCallback. Jika parameter ini tidak disetel, pemanggilan asyncCall mengembalikan error NoExecutor.

asyncHttpTransport

Lapisan transport HTTP asinkron untuk OSSAsyncClient. Default: CurlMultiTransport.

scheduledExecutor

Penjadwal tugas internal untuk OSSAsyncClient. SDK menggunakan implementasi bawaannya secara default.

Gunakan domain kustom

Domain kustom memungkinkan pratinjau file berbasis browser dan pengiriman yang dipercepat CDN.

Sebelum menjalankan kode contoh, ganti <region-id> dengan ID wilayah yang sebenarnya dari daftar wilayah dan titik akhir, seperti 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);

    // Lakukan operasi menggunakan domain kustom.
    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 << "Unggah berhasil" << std::endl;
    return 0;
}

Kontrol waktu tunggu

Gunakan connectTimeout dan readWriteTimeout untuk mengonfigurasi waktu tunggu koneksi dan baca/tulis dalam milidetik.

auto conf = oss::ClientConfiguration::loadDefault();
conf.region = "<region-id>";
conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();
// Atur waktu tunggu koneksi menjadi 10 detik.
conf.connectTimeout = 10000;
// Atur waktu tunggu baca/tulis menjadi 30 detik.
conf.readWriteTimeout = 30000;

oss::OSSClient client(conf);

Kebijakan percobaan ulang

StandardRetryer bawaan menggunakan strategi FullJitterBackoff dengan maksimal 3 kali percobaan ulang secara default. Gunakan retryMaxAttempts untuk menyesuaikan.

auto conf = oss::ClientConfiguration::loadDefault();
conf.region = "<region-id>";
conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();
// Atur jumlah maksimum percobaan ulang menjadi 5.
conf.retryMaxAttempts = 5;

oss::OSSClient client(conf);

Contoh strategi percobaan ulang kustom: CustomRetryStrategy.cpp.

Protokol HTTP/HTTPS

Protokol HTTPS digunakan secara default. Untuk menggunakan protokol HTTP, atur disableSsl ke true.

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

oss::OSSClient client(conf);

Gunakan titik akhir internal

Saat diterapkan di ECS, gunakan titik akhir internal untuk menghindari biaya lalu lintas jaringan publik.

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

oss::OSSClient client(conf);

Gunakan titik akhir akselerasi transfer

Gunakan titik akhir akselerasi transfer untuk transfer data jarak jauh.

auto conf = oss::ClientConfiguration::loadDefault();
conf.region = "<region-id>";
conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();
// Gunakan titik akhir akselerasi transfer.
conf.useAccelerateEndpoint = true;

oss::OSSClient client(conf);

Gunakan domain kustom (CNAME)

Akses OSS menggunakan domain kustom (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);

Kustomisasi transport HTTP

SDK menggunakan cURL secara default. Ganti melalui httpTransport. WinHTTP juga didukung di Windows.

Contoh transport kustom: CurlCustomConfig.cpp dan WinHttpCustomConfig.cpp.

Konfigurasi kredensial akses

SDK mendukung metode kredensial berikut:

Cara memilih metode kredensial

Metode kredensial

Kasus penggunaan

Memerlukan kredensial yang sudah ada

Jenis kredensial

Masa berlaku kredensial

Rotasi atau penyegaran

Gunakan kunci akses Pengguna RAM

Untuk aplikasi yang berjalan di lingkungan aman dan stabil yang tidak terpapar serangan eksternal serta memerlukan akses jangka panjang ke layanan cloud tanpa rotasi kredensial yang sering.

Ya

Kunci akses

Jangka panjang

Rotasi manual

Gunakan kredensial sementara STS

Untuk aplikasi yang berjalan di lingkungan tidak tepercaya dan memerlukan kontrol atas masa berlaku akses dan izin.

Ya

Token STS

Sementara

Penyegaran manual

Gunakan RAMRoleARN

Untuk aplikasi yang memerlukan akses delegasi ke layanan cloud, seperti mengakses resource di berbagai akun Alibaba Cloud.

Ya

Token STS

Sementara

Penyegaran otomatis

Gunakan ECSRAMRole

Untuk aplikasi yang diterapkan di instans ECS Alibaba Cloud, instans ECI, atau node pekerja di Container Service for Kubernetes (ACK).

Tidak

Token STS

Sementara

Penyegaran otomatis

Gunakan OIDCRoleARN

Untuk aplikasi tidak tepercaya yang diterapkan di node pekerja di Container Service for Kubernetes (ACK).

Tidak

Token STS

Sementara

Penyegaran otomatis

Gunakan akses anonim

Untuk mengakses resource OSS baca-publik.

Tidak

Tidak ada

-

-

Gunakan kredensial kustom

Jika metode di atas tidak memenuhi kebutuhan Anda, Anda dapat mengimplementasikan penyedia kredensial kustom.

Kustom

Kustom

Kustom

Kustom

Kunci akses Pengguna RAM

Gunakan kunci akses Pengguna RAM untuk aplikasi di lingkungan aman yang tidak terpapar internet.

Variabel lingkungan (Direkomendasikan)

Dapatkan kredensial dari variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.

  1. Tetapkan variabel lingkungan menggunakan kunci akses Pengguna RAM.

    Linux

    1. Dari baris perintah, jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file ~/.bashrc.

      echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc
      echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc
    2. Jalankan perintah berikut untuk menerapkan perubahan.

      source ~/.bashrc
    3. Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah ditetapkan.

      echo $OSS_ACCESS_KEY_ID
      echo $OSS_ACCESS_KEY_SECRET

    macOS

    1. Di terminal, jalankan perintah berikut untuk memeriksa jenis shell default Anda.

      echo $SHELL
    2. Ikuti langkah-langkah berdasarkan jenis shell default Anda.

      Zsh

      1. Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file ~/.zshrc.

        echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc
        echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc
      2. Jalankan perintah berikut untuk menerapkan perubahan.

        source ~/.zshrc
      3. Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah ditetapkan.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

      Bash

      1. Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file ~/.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. Jalankan perintah berikut untuk menerapkan perubahan.

        source ~/.bash_profile
      3. Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah ditetapkan.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

    Windows

    CMD

    1. Di CMD, jalankan perintah berikut.

      setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
      setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
    2. Buka kembali CMD dan jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah ditetapkan.

      echo %OSS_ACCESS_KEY_ID%
      echo %OSS_ACCESS_KEY_SECRET%

    PowerShell

    1. Di PowerShell, jalankan perintah berikut.

      [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. Buka kembali PowerShell dan jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah ditetapkan.

      [System.Environment]::GetEnvironmentVariable('OSS_ACCESS_KEY_ID', [System.EnvironmentVariableTarget]::User)
      [System.Environment]::GetEnvironmentVariable('OSS_ACCESS_KEY_SECRET', [System.EnvironmentVariableTarget]::User)
  2. Setelah mengubah variabel lingkungan sistem, mulai ulang IDE dan terminal agar perubahan berlaku.

  3. Gunakan variabel lingkungan untuk meneruskan kredensial.

    Sebelum menjalankan kode contoh, ganti <region-id> dengan ID wilayah yang sebenarnya, seperti 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);
        // Gunakan client untuk melakukan operasi.
        return 0;
    }

Secara eksplisit dalam kode

Anda dapat memberikan secara eksplisit ID kunci akses dan rahasia kunci akses menggunakan StaticCredentialsProvider.

Peringatan

Metode ini mengekspos kunci akses Anda dalam kode dan hanya direkomendasikan untuk tujuan pengujian. Untuk lingkungan produksi, gunakan metode yang lebih aman, seperti variabel lingkungan.

#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);
    // Gunakan client untuk melakukan operasi.
    return 0;
}

Kredensial sementara STS

Kredensial sementara STS terdiri dari ID kunci akses, rahasia kunci akses, dan token keamanan. Anda harus mengelola dan menyegarkan token secara manual.

Catatan
  • Untuk mendapatkan kredensial sementara STS menggunakan SDK, lihat Gunakan kredensial sementara STS untuk mengakses OSS.

  • Saat menghasilkan token STS, Anda harus menentukan waktu kedaluwarsa. Token secara otomatis menjadi tidak valid setelah kedaluwarsa.

  • Perhatikan bahwa ID kunci akses yang diperoleh dari STS diawali dengan awalan STS, misalnya, STS.L4aBSCSJVMuKg5U1****.

Variabel lingkungan (Direkomendasikan)

Dapatkan kredensial sementara menggunakan variabel lingkungan OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET, dan OSS_SESSION_TOKEN.

  1. Tetapkan variabel lingkungan menggunakan kredensial sementara.

    macOS, Linux, atau 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. Gunakan variabel lingkungan untuk meneruskan kredensial. EnvironmentVariableCredentialsProvider SDK secara otomatis membaca ketiga variabel lingkungan ini.

    Sebelum menjalankan kode contoh, ganti <region-id> dengan ID wilayah yang sebenarnya, seperti 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>";
        // Secara otomatis membaca OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET, dan OSS_SESSION_TOKEN.
        conf.credentialsProvider = std::make_shared<oss::EnvironmentVariableCredentialsProvider>();
    
        oss::OSSClient client(conf);
        // Gunakan client untuk melakukan operasi.
        return 0;
    }

Secara eksplisit dalam kode

Anda dapat memberikan secara eksplisit ID kunci akses sementara, rahasia kunci akses, dan token keamanan menggunakan StaticCredentialsProvider.

Peringatan

Hanya untuk pengujian. Jangan menyematkan kredensial dalam kode produksi. Gunakan variabel lingkungan atau metode SDK yang menyegarkan otomatis.

#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);
    // Gunakan client untuk melakukan operasi.
    return 0;
}

RAMRoleARN, ECSRAMRole, atau OIDCRoleARN

Untuk metode kredensial seperti RAMRoleARN, ECSRAMRole, dan OIDCRoleARN, kami merekomendasikan menggunakan pustaka alibabacloud-credentials-cpp dengan CredentialsProviderFunc.

  1. Instal dependensi.

    vcpkg install alibabacloud-credentials-cpp
  2. Tambahkan dependensi dalam file CMakeLists.txt Anda.

    find_package(alibabacloud_credentials REQUIRED)
  3. Integrasikan pustaka menggunakan 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>();
        // Jenis kredensial harus ram_role_arn.
        credConfig->type = std::make_shared<std::string>("ram_role_arn");
        // ID kunci akses Pengguna RAM. Untuk menghindari hardcoding, kami merekomendasikan menyuntikkan nilai ini melalui variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID.
        credConfig->accessKeyId = std::make_shared<std::string>("YOUR_ACCESS_KEY_ID");
        // Rahasia kunci akses Pengguna RAM. Untuk menghindari hardcoding, kami merekomendasikan menyuntikkan nilai ini melalui variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
        credConfig->accessKeySecret = std::make_shared<std::string>("YOUR_ACCESS_KEY_SECRET");
        // ARN peran RAM yang akan diasumsikan. Contoh: acs:ram::123456789012****:role/adminrole
        // Anda juga dapat menyetel nilai ini menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_ARN.
        credConfig->roleArn = std::make_shared<std::string>("YOUR_ROLE_ARN");
        // Nama sesi peran, digunakan untuk tujuan audit. Anda juga dapat menyetel nilai ini menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_SESSION_NAME.
        credConfig->roleSessionName = std::make_shared<std::string>("your-session-name");
        // (Opsional) Batasi lebih lanjut izin dengan kebijakan. Parameter ini tidak wajib.
        // Contoh: {"Statement":[{"Action":["oss:GetObject"],"Effect":"Allow","Resource":["*"]}],"Version":"1"}
        // credConfig->policy = std::make_shared<std::string>("<Policy>");
        // (Opsional) Durasi sesi peran dalam detik. Default: 3600 (1 jam). Parameter ini tidak wajib.
        // 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);
        // Gunakan client untuk melakukan operasi.
        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>();
        // Jenis kredensial harus ecs_ram_role.
        credConfig->type = std::make_shared<std::string>("ecs_ram_role");
        // Nama peran RAM yang diberikan ke instans ECS. Parameter ini opsional.
        // Jika tidak disetel, SDK secara otomatis mengambilnya dari layanan metadata.
        // Kami sangat menyarankan menyetel parameter ini secara eksplisit untuk mengurangi permintaan ke layanan metadata.
        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);
        // Gunakan client untuk melakukan operasi.
        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>();
        // Jenis kredensial harus oidc_role_arn.
        credConfig->type = std::make_shared<std::string>("oidc_role_arn");
        // ARN peran RAM yang akan diasumsikan. Anda juga dapat menyetel nilai ini menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_ARN.
        credConfig->roleArn = std::make_shared<std::string>("YOUR_ROLE_ARN");
        // ARN penyedia identitas OIDC. Anda juga dapat menyetel nilai ini menggunakan variabel lingkungan ALIBABA_CLOUD_OIDC_PROVIDER_ARN.
        credConfig->oidcProviderArn = std::make_shared<std::string>("YOUR_OIDC_PROVIDER_ARN");
        // Jalur ke file token OIDC, yang secara otomatis dimount ke pod oleh RRSA. Anda juga dapat menyetel nilai ini menggunakan variabel lingkungan ALIBABA_CLOUD_OIDC_TOKEN_FILE.
        credConfig->oidcTokenFilePath = std::make_shared<std::string>("/var/run/secrets/tokens/oidc-token");
        // Nama sesi peran, digunakan untuk tujuan audit. Anda juga dapat menyetel nilai ini menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_SESSION_NAME.
        credConfig->roleSessionName = std::make_shared<std::string>("your-session-name");
        // (Opsional) Batasi lebih lanjut izin dengan kebijakan. Parameter ini tidak wajib.
        // 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);
        // Gunakan client untuk melakukan operasi.
        return 0;
    }

    Lebih banyak contoh kredensial: contoh kredensial.

Akses anonim

Akses bucket dan objek baca-publik tanpa kredensial.

#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);
    // Gunakan client untuk melakukan operasi.
    return 0;
}

Penyedia kredensial kustom

Implementasikan logika pengambilan kredensial kustom dengan CredentialsProviderFunc.

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

#include <cstdlib>

namespace oss = alibabacloud::oss2;

// Contoh: Muat kredensial dari variabel lingkungan kustom atau file konfigurasi.
static oss::Credentials loadCredentialsFromCustomSource() {
    // Dalam aplikasi dunia nyata, Anda dapat mengambil kredensial dari berbagai sumber:
    //   - File konfigurasi (seperti ~/.ossrc)
    //   - Layanan manajemen kunci (seperti HashiCorp Vault atau KMS)
    //   - Layanan metadata
    //   - 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) {
        // Pesan error ini akan diteruskan ke OperationError::getMessage().
        return oss::Credentials::withError(
            "MY_APP_ACCESS_KEY_ID dan MY_APP_ACCESS_KEY_SECRET harus disetel");
        // Untuk kegagalan sementara, seperti timeout jaringan, gunakan withRetryableError.
        // SDK secara otomatis mencoba ulang pengambilan kredensial.
        // return oss::Credentials::withRetryableError("...");
    }

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

int main() {
    // Fungsi penyedia kredensial kustom dipanggil setiap kali kredensial diperlukan,
    // memungkinkan Anda mengimplementasikan logika rotasi, penyegaran, atau caching.
    auto provider = std::make_shared<oss::CredentialsProviderFunc>(
        loadCredentialsFromCustomSource);

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

    oss::OSSClient client(conf);
    // Gunakan client untuk melakukan operasi.
    return 0;
}

Memanggil operasi API

Operasi API mengikuti konvensi penamaan dan pola pemanggilan yang konsisten.

Konvensi penamaan API

Nama metode menggunakan gaya camelCase. Setiap operasi menerima parameter <OperationName>Request dan mengembalikan <OperationName>Outcome (Outcome<Result, Error>).

OSSClient (sinkron):

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

OSSAsyncClient (asinkron native):

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

Mode pemanggilan

Mode pemanggilan

OSSClient

OSSAsyncClient

sinkron

operationName(request)

-

asinkron berbasis future

asyncCall(request) (memerlukan conf.executor dikonfigurasi)

asyncCall(request)

asinkron berbasis callback

asyncCallback(request, cb) (memerlukan conf.executor dikonfigurasi)

operationNameAsync(request, cb)

Membatalkan permintaan

Untuk membatalkan operasi berjalan lama dengan CancellationToken, teruskan cancellationToken dalam OperationOptions. OSS C++ SDK V2 menyediakan dua mode pembatalan:

Batalkan segera

Panggil CancellationTokenSource::cancel() dari thread lain untuk menginterupsi permintaan yang sedang berlangsung.

// Batalkan permintaan dari thread lain.
auto cts = oss::CancellationTokenSource::create();

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

// Mulai permintaan di thread lain.
auto future = std::async([&]() {
    return client.getObject(request, &opts);
});

// Batalkan dari thread saat ini.
cts->cancel();

Batalkan berdasarkan tenggat waktu

Panggil cancelAfter() untuk menetapkan waktu tunggu. SDK secara otomatis membatalkan permintaan ketika waktu tunggu habis.

// Tetapkan waktu tunggu 30 detik untuk pembatalan otomatis.
auto cts = oss::CancellationTokenSource::create();
cts->cancelAfter(std::chrono::seconds(30));

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

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

Penanganan error

OSS C++ SDK V2 menggunakan Outcome<Result, Error>, yang kompatibel dengan std::expected. Panggil has_value() untuk memeriksa keberhasilan. Jika berhasil, ambil hasilnya dengan value() atau dengan mendereferensiasi objek outcome (*outcome). Jika tidak, ambil objek error dengan error().

auto outcome = client.putObject(request);

if (!outcome.has_value()) {
    auto& err = outcome.error();
    std::cerr << "Kode error: " << err.getCode() << std::endl;
    std::cerr << "Pesan error: " << err.getMessage() << std::endl;
    std::cerr << "EC: " << err.getEC() << std::endl;
    std::cerr << "ID Permintaan: " << err.getRequestId() << std::endl;
    std::cerr << "Target permintaan: " << err.getRequestTarget() << std::endl;
}

Saat Anda membangun dengan flag -DUSE_STD_EXPECTED=ON (C++23), Outcome menjadi alias tipe untuk std::expected, yang mendukung operasi monadik seperti .and_then(), .transform(), dan .or_else().

Kode contoh

Tabel berikut mencantumkan kode contoh yang tersedia.

Kategori

Deskripsi

Versi sinkron

Versi asinkron

Bucket

Buat bucket

PutBucket.cpp

PutBucket.cpp

Daftar bucket

ListBuckets.cpp

ListBuckets.cpp

Hapus bucket

DeleteBucket.cpp

DeleteBucket.cpp

Dapatkan informasi bucket

GetBucketInfo.cpp

GetBucketInfo.cpp

Dapatkan lokasi bucket

GetBucketLocation.cpp

GetBucketLocation.cpp

Unggah objek

Unggah sederhana

PutObject.cpp

PutObject.cpp

Unggah Lampiran

AppendObject.cpp

AppendObject.cpp

Unggah multi-bagian

UploadPart.cpp

UploadPart.cpp

Salin multi-bagian

UploadPartCopy.cpp

UploadPartCopy.cpp

Unduh objek

Unduh sederhana

GetObject.cpp

GetObject.cpp

Salin objek

CopyObject.cpp

CopyObject.cpp

Manajemen objek

Daftar objek

ListObjects.cpp

ListObjects.cpp

Daftar objek V2

ListObjectsV2.cpp

ListObjectsV2.cpp

Hapus objek

DeleteObject.cpp

DeleteObject.cpp

Hapus beberapa objek

DeleteMultipleObjects.cpp

DeleteMultipleObjects.cpp

Dapatkan metadata objek

HeadObject.cpp

HeadObject.cpp

Dapatkan metadata objek sederhana

GetObjectMeta.cpp

GetObjectMeta.cpp

Objek arsip

Pulihkan objek

RestoreObject.cpp

RestoreObject.cpp

Hapus objek yang dipulihkan

CleanRestoredObject.cpp

CleanRestoredObject.cpp

Tautan simbolik

Buat tautan simbolik

PutSymlink.cpp

PutSymlink.cpp

Dapatkan tautan simbolik

GetSymlink.cpp

GetSymlink.cpp

Penandaan objek

Tetapkan penandaan objek

PutObjectTagging.cpp

PutObjectTagging.cpp

Dapatkan penandaan objek

GetObjectTagging.cpp

GetObjectTagging.cpp

Hapus penandaan objek

DeleteObjectTagging.cpp

DeleteObjectTagging.cpp

Kontrol akses

Tetapkan ACL bucket

PutBucketAcl.cpp

PutBucketAcl.cpp

Dapatkan ACL bucket

GetBucketAcl.cpp

GetBucketAcl.cpp

Tetapkan ACL objek

PutObjectAcl.cpp

PutObjectAcl.cpp

Pengendalian versi

Tetapkan pengendalian versi bucket

PutBucketVersioning.cpp

PutBucketVersioning.cpp

Dapatkan status pengendalian versi bucket

GetBucketVersioning.cpp

GetBucketVersioning.cpp

Daftar versi objek

ListObjectVersions.cpp

ListObjectVersions.cpp

Perlindungan hotlink

Tetapkan perlindungan hotlink

PutBucketReferer.cpp

PutBucketReferer.cpp

Dapatkan konfigurasi perlindungan hotlink

GetBucketReferer.cpp

GetBucketReferer.cpp

Fungsi sistem

Kueri informasi titik akhir

DescribeRegions.cpp

DescribeRegions.cpp

URL yang ditandatangani

Hasilkan URL yang ditandatangani untuk unduh

PresignGetObject.cpp

-

Hasilkan URL yang ditandatangani untuk unggah

PresignPutObject.cpp

-

Hasilkan URL yang ditandatangani untuk permintaan HEAD

PresignHeadObject.cpp

-

Hasilkan URL yang ditandatangani untuk unggah multi-bagian

PresignUploadPart.cpp

-

API generik

Menggunakan invokeOperation

InvokeOperation.cpp

-

Pemrosesan data

Proses objek dan simpan hasilnya

ProcessObject.cpp

ProcessObject.cpp

Kirimkan tugas pemrosesan objek asinkron

AsyncProcessObject.cpp

AsyncProcessObject.cpp

Paginator

Daftar semua bucket

ListBucketsPaginator.cpp

-

Daftar semua objek (direkomendasikan)

ListObjectsV2Paginator.cpp

-

Daftar semua versi objek

ListObjectVersionsPaginator.cpp

-

Daftar semua bagian yang diunggah

ListPartsPaginator.cpp

-

Daftar semua unggah multi-bagian

ListMultipartUploadsPaginator.cpp

-

Daftar semua objek (lawas, tidak direkomendasikan)

ListObjectsPaginator.cpp

-

Contoh skenario

Seri SinkFactory (unduh zero-copy, unggah yang dapat dilanjutkan, dan pemeriksaan CRC)

samples/scenario/sink-factory

-

Operasi asinkron dengan future/callback

samples/scenario/sync-client-async

-

Lebih banyak contoh skenario

samples/scenario

-