ConoHa VPS(Ver.3.0)のオブジェクトストレージを、S3のAPIを介して操作する方法を記載します。

S3のAPIと互換性を持たせる事によりバックエンドを気にせずに周辺ツールを使用する事ができます。

本ドキュメントではDockerを利用したS3Proxyの使い方となります。

Step 1: S3Proxy準備

ConoHa VPS(Ver.3.0)のDockerテンプレートからS3Proxy 2.6.0のDockerイメージのダウンロードおよび起動させる手順例です。

S3Proxyの使用法は、提供元情報を参照してください。

Dockerイメージを使用して、コンテナを起動する

ConoHa VPS(Ver.3.0)の各種API情報はコントロールパネルにログインし、APIメニューを参照してください。

$ docker run -itd --rm -p 8081:80 \
    -e S3PROXY_AUTHORIZATION=aws-v2-or-v4 \
    -e S3PROXY_IDENTITY=access_key \
    -e S3PROXY_CREDENTIAL=secret_access_key \
    -e S3PROXY_IGNORE_UNKNOWN_HEADERS="true" \
    -e JCLOUDS_PROVIDER=openstack-swift \
    -e JCLOUDS_ENDPOINT={Identity Serviceのエンドポイント} \
    -e JCLOUDS_IDENTITY="{テナント名}:{APIユーザー名}" \
    -e JCLOUDS_CREDENTIAL="{APIパスワード}" \
    -e JCLOUDS_REGIONS=c3j1 \
    -e JCLOUDS_REGION=c3j1 \
    -e JCLOUDS_KEYSTONE_VERSION=3 \
    -e JCLOUDS_KEYSTONE_SCOPE=project:{テナント名} \
    --name s3proxy \
    andrewgaul/s3proxy:2.6.0

各環境変数の設定

項目 説明
S3PROXY_AUTHORIZATION aws-v2-or-v4
none
S3Proxyで認証するかしないか
S3PROXY_IDENTITY access_key 任意のaccess_keyを設定可能
S3PROXY_CREDENTIAL secret_access_key 任意のsecret_access_keyを設定可能
S3PROXY_IGNORE_UNKNOWN_HEADERS true
false
不明なヘッダーを無視するかしないか
JCLOUDS_PROVIDER openstack-swift バックエンドに何を使うか
JCLOUDS_ENDPOINT Identity Serviceのエンドポイント
JCLOUDS_IDENTITY テナント名:APIユーザー名
JCLOUDS_CREDENTIAL APIパスワード
JCLOUDS_REGIONS c3j1 リージョン
JCLOUDS_REGION c3j1 上と同じ値を設定
JCLOUDS_KEYSTONE_VERSION 3
JCLOUDS_KEYSTONE_SCOPE project:テナント名

Dockerコンテナの一覧確認

docker ps -a
CONTAINER ID   IMAGE                      COMMAND                  CREATED          STATUS          PORTS                                              NAMES
5fcd2e4d595f   andrewgaul/s3proxy:2.6.0   "/opt/s3proxy/run-do…"   10 minutes ago   Up 10 minutes   443/tcp, 0.0.0.0:8081->80/tcp, [::]:8081->80/tcp   s3proxy

Step 2: AWS CLIのインストール

apt-get update

apt install python3-pip

pip install awscli

Step 3: 各種操作

AWS CLIの認証設定

Step 1で設定したaccess_keyとsecret_access_keyを設定する。

$ aws configure
AWS Access Key ID [None]: access_key
AWS Secret Access Key [None]: secret_access_key
Default region name [None]: 
Default output format [None]:

バケット(オブジェクトストレージのコンテナ)一覧

$ aws s3 ls --endpoint-url http://localhost:8081
1970-01-01 09:00:00 conoha_container

バケット(オブジェクトストレージのコンテナ)作成

ここでは「conoha_container_2」というバケット(オブジェクトストレージのコンテナ)を作成。

$ aws s3 mb s3://conoha_container_2 --endpoint-url http://localhost:8081
make_bucket: conoha_container_2

$ aws s3 ls --endpoint-url http://localhost:8081
1970-01-01 09:00:00 conoha_container
1970-01-01 09:00:00 conoha_container_2

オブジェクト一覧

ここでは「conoha_container」というバケット(オブジェクトストレージのコンテナ)内のオブジェクト一覧。

$ aws s3 ls s3://conoha_container --endpoint-url http://localhost:8081
2025-02-13 13:50:26       2073 testfile

ローカルファイルをバケットにコピー

ここではカレントディレクトリにあるファイル「test」を「conoha_container_2」というバケット(オブジェクトストレージのコンテナ)にコピーします。

aws s3 cp test s3://conoha_container_2 --endpoint-url http://localhost:8081
upload: ./test to s3://conoha_container_2/test