ご利用ガイド オブジェクトストレージを使う(S3 API編)
目次
ConoHaのオブジェクトストレージをS3のAPIを使って操作する方法をご紹介します。
オブジェクトストレージについての説明は以下のページにございます。
S3のAPIと互換性を持たせる事によりバックエンドを気にせずに周辺ツールを使用する事ができます。
今回はS3Proxyを使います。
インストール方法は、Dockerを使う方法と使わない方法の2つを紹介します。
インストール方法
Dockerを使う方法
まずはDockerを使う方法を紹介します。
$ docker run -itd -p 8081:80
-e S3PROXY_AUTHORIZATION=aws-v2-or-v4
-e S3PROXY_IDENTITY=access_key
-e S3PROXY_CREDENTIAL=secret_access_key
-e JCLOUDS_PROVIDER=openstack-swift
-e JCLOUDS_ENDPOINT=https://identity.tyo1.conoha.io/v2.0
-e JCLOUDS_IDENTITY="tenant_name:api_user_name"
-e JCLOUDS_CREDENTIAL="api_user_password"
-e JCLOUDS_REGIONS=tyo1
-e JCLOUDS_REGION=tyo1
--name s3proxy
andrewgaul/s3proxy:e7070762
環境変数でどのような設定ができるかは以下の通りです。
ENV | 設定する値 | 説明 |
---|---|---|
S3PROXY_AUTHORIZATION | aws-v2-or-v4 or none | S3Proxyで認証するかしないか |
S3PROXY_IDENTITY | access_key | 好きなaccess_keyを設定可能 |
S3PROXY_CREDENTIAL | secret_access_key | 好きなsecret_access_keyを設定可能 |
JCLOUDS_PROVIDER | openstack-swift | バックエンドに何を使うか |
JCLOUDS_ENDPOINT | identityのURL | |
JCLOUDS_IDENTITY | テナント名:APIユーザー名 | |
JCLOUDS_CREDENTIAL | APIパスワード | |
JCLOUDS_REGIONS | tyo1 or tyo2 | リージョン |
JCLOUDS_REGION | tyo1 or tyo2 | 上と同じ値を設定 |
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d5721e4d26b1 andrewgaul/s3proxy "/opt/s3proxy/run-do…" 27 seconds ago Up 26 seconds 0.0.0.0:8081->80/tcp s3proxy
Dockerを使わない方法
Dockerを使わない場合はJavaのインストールが必要になります。
yumでもrpmで入れても可能です。
$ rpm -ivh http://javadl.oracle.com/webapps/download/AutoDL?BundleId=235716_2787e4a523244c269598db4e85c51e0c
※値はダブルクォーテーションで囲いません。
$ wget https://github.com/gaul/s3proxy/releases/download/s3proxy-1.6.0/s3proxy
$ mv s3proxy /usr/bin/s3proxy
$ chmod +x /usr/bin/s3proxy
$ cat << EOF > /etc/s3proxy.conf
s3proxy.endpoint=http://localhost:8081
s3proxy.authorization=aws-v2-or-v4
s3proxy.identity=access_key
s3proxy.credential=secret_access_key
jclouds.provider=openstack-swift
jclouds.endpoint=https://identity.tyo1.conoha.io/v2.0
jclouds.identity=tenant_name:api_user_name
jclouds.credential=api_user_password
jclouds.regions=tyo1
jclouds.region=tyo1
EOF
$ s3proxy --properties /etc/s3proxy.conf
AWS CLIのインストール
使えるかどうかの確認にAWS CLIを使用しようと思います。
$ easy_install pip
$ pip install awscli
使い方
$ curl localhost:8081
AccessDenied
Forbidden 4442587FB7D0A2F9
$ aws s3 ls --endpoint-url http://localhost:8081
Unable to locate credentials. You can configure credentials by running "aws configure".
$ 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
1970-01-01 09:00:00 conoha_container_segments
$ 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
1970-01-01 09:00:00 conoha_container_segments
下記のようにListObjectsV2を使ってコンテナ内を見る事はまだサポートされておりません。
$ aws s3 ls s3://conoha_container --endpoint-url http://localhost:8081
An error occurred (NotImplemented) when calling the ListObjectsV2 operation: A header you provided implies functionality that is not implemented.
S3APIを使う事でコンテナ内のオブジェクトを見る事が可能です。
$ aws s3api list-objects --bucket conoha_container --endpoint-url http://localhost:8081
{
"Contents": [
{
"LastModified": "2018-10-19T11:56:13Z",
"ETag": ""380fe17da6a09827da0e722f0dbc3e6b"",
"StorageClass": "STANDARD",
"Key": "seisokawaii",
"Owner": {
"DisplayName": "[email protected]",
"ID": "75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a"
},
"Size": 7
}
]
}
- 問題は解決できましたか?
-