さくらのクラウド オブジェクトストレージをAmazon S3互換APIで使う ~第1回:AWS CLIから利用してみよう~

「さくらのクラウド」では、オブジェクトストレージサービスを提供しています。

オブジェクトストレージでは、「オブジェクト」という単位でデータを保存し、各オブジェクトはデータ本体に加えてメタデータ・一意のIDを付与します。フォルダ構造を持たずに大量データを効率的に管理できるため、画像・動画・ログなどの大容量データの保存、バックアップやアーカイブ、Webコンテンツ配信、AI学習データの保管などに利用されます。

さくらのクラウドが提供するオブジェクトストレージは、Amazon S3互換APIを備えています。大容量かつ大量のデータをスケーラブルに保存でき、さくらのVPSやさくらの専用サーバのデータ保存にも利用できます。

オブジェクトストレージは定額従量制で提供されており、オブジェクトストレージ内でデータを保管する基本的な単位である「バケット」ごとに料金が発生します。

この記事では、オブジェクトストレージの具体的な操作方法をAWS CLIを例にして解説します。

AWS CLIとは

AWS CLIは、Amazon Web Serviceが提供するコマンドライン操作ツールです。AWS CLIのオプション引数でエンドポイントを指定することで、さくらのクラウドのオブジェクトストレージをそのまま操作できます。Amazon S3互換APIを採用しているメリットですね。

AWS CLIの入手と導入方法は、下記の公式サイトをご覧ください。

初期設定でオブジェクトストレージを指定する

では実際に、AWS CLIを使って、オブジェクトストレージを操作してみましょう。

オブジェクトストレージの基本操作は、以下のマニュアルで確認できます。あらかじめ、オブジェクトストレージを利用可能にして、バケットを作成しておきましょう。

最初に、configureオプションでAWSコマンドにアクセスキー/シークレットアクセスキーなどを設定します。

# aws configure
AWS Access Key ID [None]: <あなたのアクセスキー> 
AWS Secret Access Key [None]: <あなたのシークレットキー> 
Default region name [None]: jp-north-1 
Default output format [None]: json

環境変数によりエンドポイントを指定できます。S3互換APIのエンドポイントは環境変数AWS_ENDPOINT_URL_S3で指定します。

# export AWS_ENDPOINT_URL_S3="https://s3.isk01.sakurastorage.jp"

環境変数だけでなく共有設定ファイル(~/.aws/config)も利用できます。

[profile dev]
endpoint_url = https://s3.isk01.sakurastorage.jp

利用上の注意

一部バージョンのAWS CLIおよびAWS SDKにおいて、オブジェクトストレージが正常に利用できないことを確認しています。詳細は、以下のさくらのクラウドニュースをご確認ください。

例えばAWS CLI v2 2.23.0以降を利用する場合、HTTPステータスコード「422 Unprocessable Entity」が返されます。ただしAWS CLI v2 2.23.5以降であれば、次の環境変数を設定することで回避できます。

# export AWS_REQUEST_CHECKSUM_CALCULATION="WHEN_REQUIRED" 
# export AWS_RESPONSE_CHECKSUM_VALIDATION="WHEN_REQUIRED"

または、共有設定ファイル(~/.aws/config)でも設定できます。

[profile dev]
request_checksum_calculation = when_required
response_checksum_validation = when_required

サブコマンドの実行方法

実際にオブジェクトストレージを操作するには、--endpoint-url 引数にオブジェクトストレージのエンドポイントを指定して、次のようにサブコマンドを実行します。

$ aws --endpoint-url="https://s3.isk01.sakurastorage.jp" s3api [サブコマンド]

なお、サブコマンドのオプションとして指定するバケット名(--bucket)やオブジェクトのキー(--key)などは、利用者自身の環境に合わせて置き換えてください。

オブジェクトをアップロードする

ローカルのファイルをバケット内にアップロードするには、 put-objectサブコマンドを実行します。

# aws --endpoint-url https://s3.isk01.sakurastorage.jp \
>   s3api put-object \
>   --bucket sob-sdktest-bucket \
>   --key object.txt \
>   --body ./localfile.txt \
>   --content-type text/plain
{
    "ETag": "\"61ef751e838a741160f869aea4a3e76d\""
}

オブジェクト一覧を確認する

では、実際の操作を試してみましょう。

オブジェクトの一覧を確認するには、 list-objects-v2サブコマンドを実行します。

# aws --endpoint-url https://s3.isk01.sakurastorage.jp \
>   s3api list-objects-v2 \
>   --bucket sob-sdktest-bucket
{
    "Contents": [
        {
            "Key": "object.txt",
            "LastModified": "2025-11-05T08:03:35.827000+00:00",
            "ETag": "\"61ef751e838a741160f869aea4a3e76d\"",
            "Size": 20,
            "StorageClass": "STANDARD"
        }
    ],
    "RequestCharged": null,
    "Prefix": ""
}

オブジェクトをダウンロードする

バケットからオブジェクトをダウンロードするには、 get-objectサブコマンドを使います。

# aws --endpoint-url https://s3.isk01.sakurastorage.jp \
>   s3api get-object \
>   --bucket sob-sdktest-bucket \
>   --key object.txt \
>   object.txt
{
    "AcceptRanges": "bytes",
    "LastModified": "2025-11-05T08:03:35+00:00",
    "ContentLength": 20,
    "ETag": "\"61ef751e838a741160f869aea4a3e76d\"",
    "ContentType": "text/plain",
    "Metadata": {}
}

バケット内のオブジェクトを削除する

バケット内のオブジェクトを削除するには、 delete-objectサブコマンドを実行します。

# aws --endpoint-url https://s3.isk01.sakurastorage.jp \
>   s3api delete-object \
>   --bucket sob-sdktest-bucket \
>   --key object.txt

まとめ

簡単ですが、AWS CLIによりオブジェクトストレージを操作する方法を紹介しました。

コマンドラインツールを利用すれば、効率よくデータを操作でき、自動化も容易になります。

ただし、Amazon S3互換APIを利用するツールではバケットの作成/削除などの操作はできません。これらの操作をする場合はさくらのオブジェクトストレージAPIをご利用ください。

これを機会に、ぜひオブジェクトストレージを活用してください。

参考情報

関連記事

さくらのクラウド オブジェクトストレージをAmazon S3互換APIで使う

  • 第2回:S3互換APIをプログラムから呼び出そう
  • 第3回:AWS CLIでバケットバージョニング