さくらのクラウドのオブジェクトストレージについて
さくらのクラウドではオブジェクトストレージを提供しています。
上記リンクに記載のとおり、さくらのクラウドのオブジェクトストレージは、Amazon S3 互換の API を備えています。
拙作で恐縮ですが、Vim から s3cmd を操作するプラグインを開発しましたので、
この Vim プラグインを利用してさくらのクラウドのオブジェクトストレージを使ってみたいと思います。
以下、さくらのクラウドで作成したサーバから Vim で作業をするという想定で手順を記載します。
画像は2016年12月4日現在のものとなります。
さくらのクラウドのオブジェクトストレージの作成手順
最初に、さくらのクラウドのホーム画面から「オブジェクトストレージ」に移動します。
次に、オブジェクトストレージのバケットを作成します。
最後に、s3cmd の設定で利用するため、バケットのアクセスキー ID とシークレットアクセスキーを控えておきます。
さくらのクラウドからサーバの作成
今回は CentOS 7.2 でサーバを作成することにします。
サーバの作成の完了後、 ターミナルからの ssh もしくはさくらのクラウドのコンソールのタブからログインします。
s3cmd のインストールと設定
s3cmd コマンドのインストール
CentOS 7.2 であれば、/etc/yum.repos.d/
に存在する下記ファイルの enabled を 1 に変更することで s3cmd がインストールできます。
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
s3cmd と一緒に Vim もインストールしてしまいましょう。
# yum install s3cmd
# yum install vim
s3cmd の設定ファイルの作成
下記コマンドを実行してください。
# s3cmd --configure
様々な項目を対話的に入力しますが、最初に、先ほど控えておいたバケットのアクセスキー ID とシークレットアクセスキーを入力します。
-
Access Key
にはアクセスキー ID を入力 -
Secret Key
にはシークレットアクセスキーを入力
その他の項目はデフォルトで構いません。
また、Test access with supplied credentials? [Y/n]
と、テストをするか確認されますが、n
で問題ありません。
最後に確認される Save settings? [y/N]
で y
を選択し、設定を保存します。
この時点で ~/.s3cfg
というファイルが作成されます。
作成された .s3cfg
ファイルの編集
さくらのクラウドのオブジェクトストレージ用に、設定ファイルの下記の箇所を、コメントなしの箇所のように編集します。
# host_base = s3.amazonaws.com
host_base = b.sakurastorage.jp
# host_bucket = %(bucket)s.s3.amazonaws.com
host_bucket = %(bucket)s.b.sakurastorage.jp
# signature_v2 = False
signature_v2 = True
Vim プラグインのインストール
ここでは、blp1526/storage.vim の README.md の Installation に記載の、Vim プラグインマネージャを利用しない手順でプラグインをインストールしてみます。
# git clone https://github.com/blp1526/storage.vim.git ~/.vim/bundle/storage.vim
でリポジトリのクローン後、~/.vimrc
ファイルを作成し、下記を記載します。
set runtimepath^=~/.vim/bundle/storage.vim
また、こちらは任意ですが、下記を Vim 起動時に入力することによってヘルプタグファイルの作成も可能です。
:helptags ~/.vim/bundle/storage.vim/doc
Vim からの s3cmd の操作
それでは、実際に storage.vim を利用してみます。
仮に、今回作成したバケットに foo.md
というファイルを作成するとしましょう。
ターミナルから
# vim s3://bucket_name/foo.md
を入力します。
すると、
download: 's3://bucket_name/foo.md' -> '/tmp/xxxxxxx/0.md' [1 of 1]
ERROR: S3 error: 404 (Object Not Found)
のように 404 が返ってくると思います。
先ほどバケットを作成したばかりでまだオブジェクトが作られていないので当然です。
ここで、適当な文章を入力し、:w
で保存しますと、
"s3://bucket_name/foo.md" uploaded
と、uploaded
という結果が返ってくると思います。
ここでいったん Vim を閉じまして、再度
# vim s3://bucket_name/foo.md
を実行しますと、先ほど保存した文章が表示されます。
また、
# vim s3://bucket_name/
と入力しますと、そのディレクトリに存在するディレクトリやファイルが Quickfix List として表示されます。
まとめ
Vim にはもともと Netrw という、scp などネットワークを通してファイルを扱うことができる機能が標準で備わっています。
Netrw を利用して
vim scp://hostname/path/to/file
と Vim を使う感覚で s3cmd を利用できますので、s3cmd を活用されている方には便利なのではないでしょうか。
以上、さくらインターネット Advent Calendar 2016、5日目の @blp1526 からでした。