本文へジャンプします。

オブジェクトストレージをS3ツールで利用する【設定編】

はじめまして。ニフティクラウド オブジェクトストレージ担当の北條です。

2016年6月29日にリリースしたニフティクラウド オブジェクトストレージは、おかげさまで着々とユーザー数を伸ばし、多くの方々にご利用いただいています。
今回は、Amazon S3互換のREST APIを提供するニフティクラウド オブジェクトストレージをLinux OS上でS3ツールを使って、手軽に利用する方法をご紹介します。
※本記事に掲載されている情報は、2016年11月25日時点でニフティクラウドで提供されているCentOS7.1およびUbuntu 16.04にて動作確認を行っています。

なお、今回取り上げるツールのうち、ニフティクラウド ストレージ SDK for Java以外のツールにつきましては、ニフティから提供されているツールではないため、サポート範囲外となりますのでご了承ください。

obj_storage_img02

取り扱うツール

今回は、下記の3つのツールをニフティクラウド オブジェクトストレージで利用するための導入・設定方法を中心に説明いたします。

  • s3cmd – v1.6.1
  • aws cli – v1.11.21
  • NIFTY Cloud Storage SDK for Java 付属のCLI – v1.2(SDKのライブラリバージョン)

s3cmd,aws cliは利用方法を解説した資料が数多く公開されていますので、そちらもあわせてご参照ください。

各ツールを導入する前にリポジトリを最新の情報に更新します。
ubuntuの場合は、

$ sudo apt update -y

CentOSは

$ sudo yum update -y

でリポジトリ情報を更新します。

s3cmd

s3cmdは、LinuxおよびMac OSで利用できるコマンドラインツールです。
s3cmd

s3cmdのインストール

Ubuntu 16.04編

s3cmdをインストールします。
ubuntuは標準で登録されているリポジトリの中にパッケージが存在したため、

$ sudo apt install -y s3cmd

上記のコマンドでインストールすることができます。
下記のコマンドを実行し、バージョンが表示されればインストールは成功です。

$ s3cmd --version
s3cmd version 1.6.1

CentOS 7.1編

CentOSでは、標準で登録されているリポジトリの中にはs3cmdのパッケージがなく、最新のバージョンを利用したいため、ソースコードからビルドします。
まずはソースコードを取得するために、gitをインストール。

$ sudo yum install -y git

そして、ソースコードをgitレポジトリから取得。

$ git clone https://github.com/s3tools/s3cmd.git

ソースコードからs3cmd をインストール。

$ cd s3cmd
$ python setup.py install

依存ライブラリをインストール。

$ yum install -y python-dateutil

バージョンを確認。

$ s3cmd --version
s3cmd version 1.6.1

これで最新版のs3cmdを利用する準備が整いました!
※バージョンの異なるs3cmdでは、本稿とは異なる設定や操作が必要な場合があります。

以降の利用方法は、CentOS,Ubuntuともに共通となります。

s3cmdの初期設定

下記のコマンドを実行し、s3cmd コマンドの初期設定を行います。

$ s3cmd --configure

Enter new values or accept defaults in brackets with Enter.
Refer to user manual for detailed description of all options.

Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.
Access Key: 
Secret Key: 
Default Region [US]:  ← そのままEnter

Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3
Encryption password:  ← そのままEnter
Path to GPG program [/usr/bin/gpg]:  ← そのままEnter

When using secure HTTPS protocol all communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP, and can only be proxied with Python 2.7 or newer
Use HTTPS protocol [Yes]: ← そのままEnter

On some networks all internet access must go through a HTTP proxy.
Try setting it here if you can't connect to S3 directly
HTTP Proxy server name: ← 必要に応じて入力

New settings:
  Access Key: 
  Secret Key: 
  Default Region: US
  Encryption password: 
  Path to GPG program: /usr/bin/gpg
  Use HTTPS protocol: True
  HTTP Proxy server name: 
  HTTP Proxy server port: 0

Test access with supplied credentials? [Y/n]  ← "n" を入力してEnter(この段階でアクセス試行しても失敗する)

Save settings? [y/N] y ← "y" を入力して設定を保存
Configuration saved to '/.s3cfg'

上記の手順を実行することで、~/.s3cfgに設定ファイルが作成されます。
この設定ファイルを編集することで、オブジェクトストレージの情報を設定します。任意のエディタで編集してください。
変更が必要な項目は下記の通りです。

項目名 初期値 設定値
host_base s3.amazonaws.com jp-east-2.os.cloud.nifty.com
host_bucket %(bucket)s.s3.amazonaws.com %(bucket)s.jp-east-2.os.cloud.nifty.com
signature_v2 False True

上記を編集して保存すると、s3cmd コマンドでオブジェクトストレージを利用することができます。

s3cmdでニフティクラウド オブジェクトストレージを操作する

下記に簡単な利用例を示します。
詳細な利用方法は、上記の公式サイトを始め、多くの情報が公開されておりますのでここでは割愛いたします。

$ s3cmd mb s3://hoge # hoge バケット作製
$ s3cmd ls # バケット一覧
$ s3cmd ls s3://foo # foo バケットの仮想ディレクトリとファイルの一覧
$ s3cmd get s3://foo/bar/baz.txt # foo バケットの bar/baz.txt ファイルの取得
$ s3cmd put bazbaz.txt s3://foo/bar/baz/ #foo バケットに bar/baz/bazbaz.txt ファイルアップロード
$ s3cmd du # 仕様容量表示(byte) .s3cfg に human_readable_sizes = True を設定すると単位をMBやGBで表示する。

aws cli

aws cli は、AWSサービスを管理するための統合ツールです。
Amazon S3をはじめ、AWSのさまざまなサービスをコマンドラインから操作することが可能です。
aws cliはソースコードが公開されているApache Licenseのソフトウェアで、Python実行環境で動作します。
aws cli

aws cliのインストール

aws cliのインストールに必要な環境は下記となっています。
– Python 2 version 2.6.5+ or Python 3 version 3.3+
– pip
(出展:AWS ドキュメントページ)

ニフティクラウドが提供するCentOS 7.1およびUbuntu 16.04には、すでにPython2.7系が導入されています。Pythonのパッケージ管理ツールであるpipは追加で導入する必要があります。

下記の手順はCentOS 7.1、Ubuntu 16.04共通です。

$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py
$ pip --version

pipが導入できたら、awscliをインストールします。

$ sudo pip install awscli

awscliの初期設定

aws cliでニフティクラウド オブジェクトストレージを利用するための初期設定を行います。

$ aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]: ← 空白でEnter
Default output format [None]: ← 空白でEnter

.aws/credentialsファイルに設定した内容が記載されていれば成功です。

awscli でオブジェクトストレージを操作する

awscliでオブジェクトストレージを操作するには、s3サブコマンドを利用します。
aws s3コマンドは標準ではAmazon S3に接続するため、エンドポイントを指定する必要があります。
バケット一覧を表示するには、

$ aws --endpoint-url https://jp-east-2.os.cloud.nifty.com s3 ls

として実行します。
下記にほかの簡単な利用例を示します。詳細な利用方法は、上記の公式サイトを始め、多くの情報が公開されておりますのでここでは割愛いたします。

$ aws --endpoint-url https://jp-east-2.os.cloud.nifty.com s3 cp s3://foo/bar/baz.txt ./ # fooバケットのbar/baz.txtファイルをカレントディレクトリにコピー
$ aws --endpoint-url https://jp-east-2.os.cloud.nifty.com s3 cp ./baz.txt s3://foo/bar/baz.txt # fooバケットのbarにカレントディレクトリのbaz.txtをアップロード
$ aws --endpoint-url https://jp-east-2.os.cloud.nifty.com s3 rb s3://foo --force # fooバケット配下のオブジェクトを全て削除して、fooバケットも削除
$ aws --endpoint-url https://jp-east-2.os.cloud.nifty.com s3 rm s3://foo/bar --recursive # fooバケットのbarプレフィックスが付いたオブジェクトを全て削除

毎回エンドポイントを指定するのは大変なので、alias などを設定すると便利です。

rb + --foceコマンドでは、バケット内のオブジェクトを削除した上でバケットを削除することができて便利ですが、間違って実行した場合は削除されたオブジェクトは復元できませんので注意が必要です。
詳しくは、AWS CLIコマンドリファレンスをご参照ください。
AWS CLIコマンドリファレンス

ニフティクラウド ストレージ SDK for Java付属のCLI

ニフティクラウド ストレージ SDK for Javaは、ニフティ株式会社が提供しているニフティクラウドストレージ(旧)/ニフティクラウド オブジェクトストレージのJava SDKツールです。
サンプルプログラムとして、コマンドラインで利用できるCLIのスクリプトが同梱されています。
ニフティクラウド ストレージ SDK for Javaは下記のページで配布されています。
ニフティクラウド ストレージ SDK for Java
※本記事では、2016年8月22日時点での最新版を利用しております。バージョンの違いによって、ディレクトリの名称などが多少異なる場合があります。

ニフティクラウド ストレージ SDK for Javaのインストール

今回はwgetでダウンロードします。

$ wget http://cloud.nifty.com/api/storage/NiftyCloudStorage-SDK-CLI.zip

動作環境は、JDK6以上が推奨されています。
今回はOpenJDK v1.8を利用してみたいと思います。

CentOSでは、

$ sudo yum install java-1.8.0-openjdk-devel.x86_64

Ubuntuでは、

$ sudo apt install openjdk-8-jdk

ダウンロードしたニフティクラウド ストレージ SDK for Javaのzipファイルを展開します。

$ unzip NiftyCloudStorage-SDK-CLI.zip

(Ubuntu 16.04ではunzipコマンドが入っていなかったので、apt-get install unzipでインストールしました)

ニフティクラウド ストレージ SDK for Javaの初期設定

ダウンロードしたzipファイルを展開すると、NiftyCloudStorage-SDK-CLI というフォルダが作成されます。
CLIを利用するためには次の2つのファイルを編集する必要があります。

・credentials.properties
  -アクセスキー/シークレットアクセスキーを記述します。

accessKey =12345678901234567890
secretKey =1234567890abcdefghijklmnopqrstuvwxyzABCD

・ncs_cli.sh
 -エンドポイント(jp-east-2.os.cloud.nifty.com)を設定します。

# endpoint settings
ENDPOINT="-Dendpoint=https://jp-east-2.os.cloud.nifty.com/"

任意のエディタで上記のファイルを編集してください。
ncs_cli.shについては、エンドポイントのほかにも設定できる項目があります。
詳細な利用方法については、NiftyCloudStorage-SDK-CLI/cli/READMEを参考にしてください。

上記2箇所を設定すると、ncs_cli.shツールでオブジェクトストレージにアクセスが可能です。

ニフティクラウド ストレージ SDK for Javaでオブジェクトストレージを操作する

簡単なコマンドの例を下記に示します。

$ sh ncs_cli.sh # コマンドのヘルプや利用可能なコマンド一覧が表示されます。
$ sh ncs_cli.sh mb ncss:// #バケットを作成します。
$ sh ncs_cli.sh ls [ncss://] #バケットの一覧、またはバケット内のオブジェクトの一覧を表示します。
$ sh ncs_cli.sh put  ncss://[/] #指定ファイルをオブジェクトとしてバケット内に作成します。オブジェクト名の指定が可能です。
$ sh ncs_cli.sh get ncss:///  #バケット内のオブジェクトを取得します。

ほかのコマンドなどの詳細につきましては、上述のREADME、コマンドのヘルプを参考にしてください。

また、NiftyCloudStorage-SDK-CLI/cliディレクトリには、CLI ツールのソースコードも含まれています。オブジェクトストレージを利用するJavaアプリケーション開発の参考資料としてもご活用いただけます。

まとめ

今回は、Amazon S3のツールやニフティクラウド ストレージサービスのツールを使って、オブジェクトストレージを利用する手法を簡単に紹介いたしました。
オブジェクトストレージは、Amazon S3と互換性を持つREST APIを提供しており、上記のツールにとどまらず、さまざまな利用シーンでご活用いただけます。
ぜひ、ニフティクラウド オブジェクトストレージを利用してみてください。

ニフティクラウド 導入相談窓口
ニフティクラウド 無料セミナー

閉じる

閉じる

クラウドブログ編集部

クラウドブログ編集部

ニフティクラウド ユーザーブログ編集部のアカウントです。 編集部からのお知らせや、レギュラーライター以外のゲストによる寄稿記事を掲載していきます。

浜中 慶

浜中 慶

1980年、神奈川県生まれ。2003年ニフティ入社。 ポータルサイト開発を中心に、音楽配信サービス、CGMサービスなど様々なプロジェクトに企画/デザイン/システム担当として参加。現在は@niftyのポータルサービス向けコンテンツ管理システムの企画/開発/運用を担当。

吉田 雄哉

吉田 雄哉

株式会社co-meetingの創業メンバー。「取締役&External- facing Technologist」と名乗り新しいIT技術を広く伝える活動とWebアプリケーション開発を行う毎日。パッケージベンダーでのSaaS立上げ・製造業の情報システム部門で企画やPM・受託開発と従事してきたため、ベンダーサイドとユーザサイド の両方の視点を持ち合わせる。

石田 健亮

石田 健亮

株式会社ドリーム・アーツで小売事業者向けSaaS「Shopらん」を企画、開発。メインの仕事はプログラマーだがサーバー管理や営業もこなすユーティリティプレイヤー。最近好きな事はパフォーマンスチューニング。特に並列化プログラミングがマイブーム。キライなことはデータセンターでの作業。騒音と乾燥が弱点。ニフティクラウドでデータセンターに行く必要が無くなったことが本当の利点だ と思っている。

五月女 雄一

五月女 雄一

ニフティでは「インフラを守る簡単な様で奥が深いお仕事」をしています。 夢はインフラの気持ちが読めるエンジニアになること。

わたなべ かずひろ

わたなべ かずひろ

専門学校卒業後、ソフトウェア開発会社で電力系統制御システムの開発に従事。その後、CD-ROM等マルチメディア系PCソフトの開発を経て、1998年フリーランスに。 2000年8月に株式会社イーツーの設立に参画。携帯を含む様々なWeb系のシステム開発に携わる。現在はiPhone/Androidアプリなどの開発も手がけている。

市角

市角

ニフティクラウドのコントロールパネル設計・開発をメインに、たまにインフラの運用やお手伝いもやっていたりします。コントロールパネルや新機能の活用方法、アイデアなどを中心に書いていく予定です。

仲山 昌宏

仲山 昌宏

歌って踊れるインフラエンジニア兼、PHPもRubyもJavaも書くPerl使い。 物理サーバの運用に飽きて、フルラックに格安サーバ詰めて自宅プライベートクラウドを構築中。 今年は個人的には分散処理を攻めていきます。

猪飼 賢広

猪飼 賢広

1984年、愛知県名古屋市生まれ。大学は福島県にある某大学。2008年ニフティに入社。 開発系部署に配属後、主に各種テーマサイト開発のシステム面調整、開発進行管理役などとして参加。 現在もPC・ガラケーサイトの開発まわりを担当。インフラまわりを触る案件にも携わっており、日々修行中。 好きな芸人はなかやまきんに君とレイザーラモンRG。

久江 裕之

久江 裕之

ニフティクラウドのインフラ運用、OS提供の仕事をしています。 新しいOSやイメージが出る時にこのブログでご紹介いたします。入社5年目。一流のインフラエンジニアを目指して日々勉強中。

竹内 豪

竹内 豪

ニフティクラウド エンジニア

山口

山口

ニフティクラウドの基盤設計、新サービス/アライアンス/インフラ企画、その他雑用全般を担当しています。 クラウドに欲しい機能や、こんなふうに使ってほしいという想いが共有できれば良いですね。

芳中 隆幸

芳中 隆幸

ニフティクラウドの開発、運用を担当しています。

酒井 浩平

酒井 浩平

ニフティクラウドの中にいます。 ネットワークまわりの運用・開発や自動化などに取り組んでいます。 すべてのエンジニアを幸せにすることを目指しています。

higebu

higebu

ニフティクラウド IaaSのエンジニアです。 ネットワーク、DRサービス with VMware vCloud® Air™ Technology辺りの担当をしています。

武田

武田

ニフティクラウドの開発・運用を担当しています。 各種機能の内容についてなどで執筆させていただく予定です。

森藤 大地

森藤 大地

データに関する仕事が好きです。

宮原徹

宮原徹

日本仮想化技術株式会社 代表取締役社長兼CEO。仮想化技術に関するコンサルタントとして長年活動しており、特にベンチマークテストによる性能評価を得意としている。

荒谷翔

荒谷翔

株式会社はてなでMackerelのセールスデベロッパーとして勤務しています

東條 望

東條 望

2014年にニフティへ中途入社。 入社後から現在まで、ニフティクラウドのサービス企画・開発を担当しています。 各サービスの紹介を執筆させていただく予定です。