ご利用ガイド オブジェクトストレージを使う(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   s3proxyDockerを使わない方法
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.confAWS CLIのインストール
使えるかどうかの確認にAWS CLIを使用しようと思います。
$ easy_install pip
$ pip install awscli使い方
$ curl localhost:8081
AccessDeniedForbidden 4442587FB7D0A2F9 $ 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
        }
    ]
}- 問題は解決できましたか?
- 
		
 
					 
					 
					