すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:クイックスタート (C++ SDK)

最終更新日:Aug 22, 2026

このトピックでは、OSS C++ SDK を使用して、バケットの作成、オブジェクトのアップロード、オブジェクトのダウンロードなどの一般的な操作を実行する方法について説明します。

説明

サンプルコードの conf は、OssClient の設定クラスである ClientConfiguration のインスタンスです。このクラスを使用して、プロキシ、接続タイムアウト、最大接続数などのパラメーターを設定できます。詳細については、「初期化 (C++ SDK) 」をご参照ください。

バケットの作成

バケットは、オブジェクトを格納するコンテナーであり、OSS のグローバル名前空間です。

説明

バケットの命名規則の詳細については、「Basic Concepts 」をご参照ください。エンドポイントの取得方法の詳細については、「リージョンとエンドポイント」をご参照ください。

次のコードは、examplebucket という名前のバケットを作成する方法を示しています。

#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* OSS アカウント情報を初期化します。*/
            
   /* yourEndpoint を、バケットが存在するリージョンのエンドポイントに設定します。たとえば、バケットが China (Hangzhou) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。*/
    std::string Endpoint = "yourEndpoint";
    /* yourRegion を、バケットが存在するリージョンの ID に設定します。たとえば、バケットが China (Hangzhou) リージョンにある場合、リージョンを cn-hangzhou に設定します。*/
    std::string Region = "yourRegion";
    /* バケット名を指定します (例: examplebucket)。*/
    std::string BucketName = "examplebucket";
    /* ネットワークリソースを初期化します。*/
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。*/
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /* 新しいバケットの名前、ストレージクラス、およびアクセス制御リスト (ACL) を指定します。*/
    CreateBucketRequest request(BucketName, StorageClass::IA, CannedAccessControlList::PublicReadWrite);

    /* バケットを作成します。*/
    auto outcome = client.CreateBucket(request);

    if (!outcome.isSuccess()) {
        /* 例外を処理します。*/
        std::cout << "CreateBucket fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

    /* ネットワークリソースを解放します。*/
    ShutdownSdk();
    return 0;
}

オブジェクトのアップロード

次のコードは、OSS にオブジェクトをアップロードする方法を示しています。

#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* OSS アカウント情報を初期化します。*/
            
   /* yourEndpoint を、バケットが存在するリージョンのエンドポイントに設定します。たとえば、バケットが China (Hangzhou) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。*/
    std::string Endpoint = "yourEndpoint";
    /* yourRegion を、バケットが存在するリージョンの ID に設定します。たとえば、バケットが China (Hangzhou) リージョンにある場合、リージョンを cn-hangzhou に設定します。*/
    std::string Region = "yourRegion";
    /* バケット名を指定します (例: examplebucket)。*/
    std::string BucketName = "examplebucket";
    /* オブジェクトのフルパス (例: exampledir/exampleobject.txt) を指定します。フルパスにはバケット名を含めないでください。*/
    std::string ObjectName = "exampledir/exampleobject.txt";
    /* ネットワークリソースを初期化します。*/
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。*/
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /* オブジェクトをアップロードします。*/
    /* ローカルファイルのフルパスを指定します (例: D:\\localpath\\examplefile.txt)。このパスでは、localpath は examplefile.txt ファイルが格納されているローカルディレクトリです。*/
    auto outcome = client.PutObject(BucketName, ObjectName,"D:\\localpath\\examplefile.txt");

    if (!outcome.isSuccess()) {
        /* 例外を処理します。*/
        std::cout << "PutObject fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

    /* ネットワークリソースを解放します。*/
    ShutdownSdk();
    return 0;
}

オブジェクトのダウンロード

次のコードは、OSS からオブジェクトをローカルファイルとしてダウンロードする方法を示しています。

#include <alibabacloud/oss/OssClient.h>
#include <memory>
#include <fstream>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* OSS アカウント情報を初期化します。 */
            
    /* バケットが所在するリージョンのエンドポイントに yourEndpoint を設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
    std::string Endpoint = "yourEndpoint";
    /* バケットが所在するリージョンに yourRegion を設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。 */
    std::string Region = "yourRegion";
    /* バケット名を設定します。 例:examplebucket */
    std::string BucketName = "examplebucket";
    /* オブジェクトの完全なパスを設定します。 完全なパスにバケット名を含めることはできません。 例:exampledir/exampleobject.txt */
    std::string ObjectName = "exampledir/exampleobject.txt";
    /* オブジェクトを examplefile.txt という名前のローカルファイルにダウンロードし、指定されたローカルパス (D:\\localpath) に保存します。 ローカルファイルが存在する場合、上書きされます。 ローカルファイルが存在しない場合は、作成されます。 */
    /* ローカルパスを指定しない場合、ダウンロードされたファイルは、デフォルトでサンプルプログラムが属するプロジェクトのローカルパスに保存されます。 */
    std::string FileNametoSave = "D:\\localpath\\examplefile.txt";

    /* ネットワークリソースを初期化します。 */
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* 環境変数からアクセス認証情報を取得します。 このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。 */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /* オブジェクトをローカルファイルにダウンロードします。 */
    GetObjectRequest request(BucketName, ObjectName);
    request.setResponseStreamFactory([=]() {return std::make_shared<std::fstream>(FileNametoSave, std::ios_base::out | std::ios_base::in | std::ios_base::trunc| std::ios_base::binary); });

    auto outcome = client.GetObject(request);

    if (outcome.isSuccess()) {    
        std::cout << "GetObjectToFile success" << outcome.result().Metadata().ContentLength() << std::endl;
    }
    else {
        /* 例外を処理します。 */
        std::cout << "GetObjectToFile fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

    /* ネットワークリソースを解放します。 */
    ShutdownSdk();
    return 0;
}

ファイルの一覧

次のコードは、バケット内のオブジェクトを一覧表示する方法を示しています。デフォルトでは、最大 100 件のオブジェクトが一覧表示されます。

#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* OSS アカウント情報を初期化します。*/
            
   /* yourEndpoint を、バケットが存在するリージョンのエンドポイントに設定します。たとえば、バケットが China (Hangzhou) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。*/
    std::string Endpoint = "yourEndpoint";
    /* yourRegion を、バケットが存在するリージョンの ID に設定します。たとえば、バケットが China (Hangzhou) リージョンにある場合、リージョンを cn-hangzhou に設定します。*/
    std::string Region = "yourRegion";
    /* バケット名を指定します (例: examplebucket)。*/
    std::string BucketName = "examplebucket";
    /* ネットワークリソースを初期化します。*/
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。*/
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /* オブジェクトを一覧表示します。*/
    ListObjectsRequest request(BucketName);
    auto outcome = client.ListObjects(request);

    if (!outcome.isSuccess()) {    
        /* 例外を処理します。*/
        std::cout << "ListObjects fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;  
    }
    else {
        for (const auto& object : outcome.result().ObjectSummarys()) {
            std::cout << "object"<<
            ",name:" << object.Key() <<
            ",size:" << object.Size() <<
            ",last modified time:" << object.LastModified() << std::endl;
        }      
    }

    /* ネットワークリソースを解放します。*/
    ShutdownSdk();
    return 0;
}

ファイルの削除

次のコードは、指定されたオブジェクトを削除する方法を示しています。

#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* OSS アカウント情報を初期化します。*/
            
   /* yourEndpoint を、バケットが存在するリージョンのエンドポイントに設定します。たとえば、バケットが China (Hangzhou) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。*/
    std::string Endpoint = "yourEndpoint";
    /* yourRegion を、バケットが存在するリージョンの ID に設定します。たとえば、バケットが China (Hangzhou) リージョンにある場合、リージョンを cn-hangzhou に設定します。*/
    std::string Region = "yourRegion";
    /* バケット名を指定します (例: examplebucket)。*/
    std::string BucketName = "examplebucket";
    /* オブジェクトのフルパス (例: exampledir/exampleobject.txt) を指定します。フルパスにはバケット名を含めないでください。*/
    std::string ObjectName = "exampledir/exampleobject.txt";
    /* ネットワークリソースを初期化します。*/
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。*/
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    DeleteObjectRequest request(BucketName, ObjectName);

    /* オブジェクトを削除します。*/
    auto outcome = client.DeleteObject(request);

    if (!outcome.isSuccess()) {
        /* 例外を処理します。*/
        std::cout << "DeleteObject fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

    /* ネットワークリソースを解放します。*/
    ShutdownSdk();
    return 0;
}

関連ドキュメント

  • 完全なサンプルコードについては、GitHub サンプルをご参照ください。

  • PutBucket API の詳細については、「PutBucket」をご参照ください。

  • PutObject API の詳細については、「PutObject」をご参照ください。

  • GetObject API の詳細については、「GetObject」をご参照ください。

  • GetBucket (ListObjects) API の詳細については、「GetBucket (ListObjects)」をご参照ください。

  • DeleteObject API の詳細については、「DeleteObject」をご参照ください。