All Products
Search
Document Center

Object Storage Service:OSS C++ SDK V2

Last Updated:Jun 05, 2026

OSS C++ SDK V2 menghubungkan aplikasi C++ Anda ke Alibaba Cloud Object Storage Service (OSS), memungkinkan Anda mengunggah, mengunduh, dan mengelola file. SDK ini ideal untuk skenario berkinerja tinggi, sistem embedded, serta aplikasi desktop yang memerlukan penyimpanan file di cloud.

Catatan

OSS C++ SDK V2 masih dalam tahap pratinjau, dan antarmukanya dapat berubah. Untuk pembaruan terbaru, lihat catatan rilis di repositori GitHub.

GitHub | kode contoh | panduan migrasi | deepwiki

Mulai cepat

Ikuti langkah-langkah berikut untuk mulai menggunakan OSS C++ SDK V2.

Prasyarat

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

  • CMake 3.15 atau versi 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

Kami menyarankan menggunakan vcpkg untuk menginstal OSS C++ SDK V2.

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.

vcpkg menyediakan fitur opsional berikut yang dapat Anda aktifkan sesuai kebutuhan.

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 (khusus Windows).

openssl

Menggunakan OpenSSL untuk perhitungan hash.

mbedtls

Menggunakan mbedTLS untuk perhitungan hash.

encryption

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

rtti

Mengaktifkan informasi tipe waktu proses (RTTI) saat kompilasi.

Untuk definisi lengkap, lihat 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

Saat Anda mengompilasi dari kode sumber, opsi CMake berikut 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 (khusus Windows).

USE_SYSTEM_CURL

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

USE_SYSTEM_OPENSSL

Menggunakan OpenSSL yang terinstal di sistem.

USE_SYSTEM_MBEDTLS

Menggunakan mbedTLS yang terinstal di sistem.

USE_STD_EXPECTED

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

ENABLE_ENCRYPTION

Mengaktifkan enkripsi sisi klien.

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)

Konfigurasikan kredensial akses

Konfigurasikan kredensial akses dengan menyetel variabel lingkungan menggunakan AccessKey Pengguna RAM Anda.

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

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 disetel.

      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 disetel.

        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 disetel.

        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 disetel.

    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 disetel.

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

Inisialisasi klien

SDK menyediakan tiga mode permintaan: OSSClient (sinkron), OSSClient (asinkron) (permintaan asinkron berbasis kolam thread), dan OSSAsyncClient (asinkron) (permintaan asinkron native). Pilih mode berdasarkan kasus penggunaan Anda. Contoh berikut menunjukkan setiap mode dengan menggunakan operasi ListBuckets untuk mencantumkan bucket dalam akun Anda.

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 mengirim permintaan sinkron ke kolam thread guna eksekusi konkuren. Pemanggilan ini 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 menggunakan 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;
}

Untuk contoh lengkap yang mencakup unggah dan unduh konkuren, lihat AsyncCallOnSyncClient.cpp dan AsyncCallbackOnSyncClient.cpp.

OSSAsyncClient (asinkron)

Mode asinkron native ini menggunakan OSSAsyncClient. Setiap operasi memiliki metode operationNameAsync() 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;
}

Setelah menjalankan kode, output akan mencantumkan semua bucket dalam akun Anda di seluruh wilayah.

Konfigurasi klien

Parameter klien yang didukung

Parameter

Deskripsi

region

(Wajib) Wilayah tempat mengirim permintaan.

credentialsProvider

(Wajib) Penyedia kredensial akses.

endpoint

Titik akhir layanan.

httpTransport

Menentukan klien 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 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 yang disertakan dalam signature v4.

userAgent

Informasi tambahan yang ditambahkan ke header User-Agent.

disableClockSkewCorrection

Menonaktifkan koreksi skew jam 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

Titik akhir OSS default mungkin mencegah akses langsung browser untuk pratinjau file. Dengan menggunakan domain kustom untuk mengakses OSS, Anda dapat mengaktifkan pratinjau dan menggunakan CDN untuk pengiriman yang dipercepat.

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

C++ SDK V2 memiliki StandardRetryer bawaan. Secara default, ini menggunakan strategi backoff FullJitterBackoff dengan maksimal 3 kali percobaan ulang. Anda dapat menggunakan retryMaxAttempts untuk mengatur jumlah maksimum percobaan ulang.

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

Untuk contoh lain tentang strategi percobaan ulang kustom, lihat CustomRetryStrategy.cpp.

Protokol HTTP/HTTPS

Protokol HTTPS digunakan secara default. Untuk menggunakan protokol HTTP, setel 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 aplikasi Anda dideploy di ECS, Anda dapat menggunakan titik akhir internal untuk mengakses OSS dan mengurangi 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

Akses OSS melalui titik akhir akselerasi transfer untuk meningkatkan kinerja 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 dengan 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

C++ SDK V2 menggunakan cURL sebagai lapisan transport HTTP secara default. Anda dapat menggantinya dengan implementasi lain menggunakan parameter httpTransport. WinHTTP juga didukung di Windows.

Untuk contoh lapisan transport kustom, lihat CurlCustomConfig.cpp dan WinHttpCustomConfig.cpp.

Konfigurasikan kredensial akses

Sebelum menggunakan OSS C++ SDK V2, Anda harus mengonfigurasi kredensial akses. C++ SDK V2 mendukung metode berikut untuk mengonfigurasi kredensial:

Cara memilih metode kredensial

Metode kredensial

Kasus penggunaan

Memerlukan kredensial yang sudah ada

Jenis kredensial

Masa berlaku kredensial

Rotasi atau penyegaran

Gunakan access key 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

Access key

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 terdelegasi ke layanan cloud, seperti mengakses sumber daya di akun Alibaba Cloud yang berbeda.

Ya

Token STS

Sementara

Penyegaran otomatis

Gunakan ECSRAMRole

Untuk aplikasi yang dideploy 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 dideploy di node pekerja di Container Service for Kubernetes (ACK).

Tidak

Token STS

Sementara

Penyegaran otomatis

Gunakan akses anonim

Untuk mengakses sumber daya 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

Access key Pengguna RAM

Jika aplikasi Anda berjalan di lingkungan aman dan stabil yang tidak terpapar internet, gunakan access key Pengguna RAM.

Variabel lingkungan (Direkomendasikan)

Dapatkan kredensial dari variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.

  1. Setel variabel lingkungan menggunakan access key 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 disetel.

      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 disetel.

        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 disetel.

        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 disetel.

      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 disetel.

      [System.Environment]::GetEnvironmentVariable('OSS_ACCESS_KEY_ID', [System.EnvironmentVariableTarget]::User)
      [System.Environment]::GetEnvironmentVariable('OSS_ACCESS_KEY_SECRET', [System.EnvironmentVariableTarget]::User)
  2. Setelah memodifikasi variabel lingkungan sistem, mulai ulang lingkungan build dan runtime Anda, seperti IDE dan antarmuka baris perintah, agar perubahan diterapkan.

  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 klien untuk melakukan operasi.
        return 0;
    }

Secara eksplisit dalam kode

Anda dapat memberikan secara eksplisit ID access key dan secret access key menggunakan StaticCredentialsProvider.

Peringatan

Metode ini mengekspos access key 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 klien untuk melakukan operasi.
    return 0;
}

Kredensial sementara STS

Jika aplikasi Anda memerlukan akses sementara ke OSS, Anda dapat menggunakan kredensial sementara STS, yang mencakup ID access key, secret access key, dan token keamanan. Anda harus mengelola dan menyegarkan token STS ini secara manual, yang dapat menambah kompleksitas dan risiko keamanan.

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 access key yang diperoleh dari STS diawali dengan prefiks 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. Setel 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 klien untuk melakukan operasi.
        return 0;
    }

Secara eksplisit dalam kode

Anda dapat memberikan secara eksplisit ID access key sementara, secret access key, dan token keamanan menggunakan StaticCredentialsProvider.

Peringatan

Jangan menyematkan kredensial sementara dalam aplikasi produksi Anda. Metode ini hanya untuk tujuan pengujian. Di lingkungan produksi, kami menyarankan menggunakan variabel lingkungan atau metode SDK yang secara otomatis menyegarkan token STS.

#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 klien untuk melakukan operasi.
    return 0;
}

RAMRoleARN, ECSRAMRole, atau OIDCRoleARN

Untuk metode kredensial seperti RAMRoleARN, ECSRAMRole, dan OIDCRoleARN, kami menyarankan 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 access key Pengguna RAM. Untuk menghindari hardcoding, kami menyarankan menyuntikkan nilai ini melalui variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID.
        credConfig->accessKeyId = std::make_shared<std::string>("YOUR_ACCESS_KEY_ID");
        // Secret access key Pengguna RAM. Untuk menghindari hardcoding, kami menyarankan 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 klien 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 klien 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");
        // Path ke file token OIDC, yang secara otomatis dimount ke dalam 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 klien untuk melakukan operasi.
        return 0;
    }

    Untuk contoh kredensial lainnya, lihat contoh kredensial.

Akses anonim

Jika bucket dan objek yang ingin Anda akses memiliki izin baca-publik, Anda dapat menggunakan akses anonim.

#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 klien untuk melakukan operasi.
    return 0;
}

Penyedia kredensial kustom

Jika metode kredensial di atas tidak memenuhi kebutuhan Anda, Anda dapat menyesuaikan logika pengambilan kredensial menggunakan 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 klien untuk melakukan operasi.
    return 0;
}

Memanggil operasi API

Operasi API di OSS C++ SDK V2 mengikuti konvensi penamaan dan pola pemanggilan yang konsisten. Bagian ini menjelaskan penamaan API, mode pemanggilan, pembatalan permintaan, dan penanganan error.

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 berdurasi panjang 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 menyetel timeout. SDK secara otomatis membatalkan permintaan saat timeout habis.

// Atur timeout 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 gagal, ambil objek error dengan 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;
}

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

OSS C++ SDK V2 menyediakan banyak kode contoh untuk membantu Anda memulai dengan cepat.

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 append

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

Atur penandaan objek

PutObjectTagging.cpp

PutObjectTagging.cpp

Dapatkan penandaan objek

GetObjectTagging.cpp

GetObjectTagging.cpp

Hapus penandaan objek

DeleteObjectTagging.cpp

DeleteObjectTagging.cpp

Kontrol akses

Atur ACL bucket

PutBucketAcl.cpp

PutBucketAcl.cpp

Dapatkan ACL bucket

GetBucketAcl.cpp

GetBucketAcl.cpp

Atur ACL objek

PutObjectAcl.cpp

PutObjectAcl.cpp

Pengendalian versi

Atur 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

Atur 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

-

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

-

Contoh skenario lainnya

samples/scenario

-