さくらのクラウドのオブジェクトストレージを Vim プラグインから使う

  • 7
    Like
  • 0
    Comment

さくらのクラウドのオブジェクトストレージについて

さくらのクラウドではオブジェクトストレージを提供しています。

上記リンクに記載のとおり、さくらのクラウドのオブジェクトストレージは、Amazon S3 互換の API を備えています。
拙作で恐縮ですが、Vim から s3cmd を操作するプラグインを開発しましたので、

blp1526/storage.vim

この Vim プラグインを利用してさくらのクラウドのオブジェクトストレージを使ってみたいと思います。
以下、さくらのクラウドで作成したサーバから Vim で作業をするという想定で手順を記載します。
画像は2016年12月4日現在のものとなります。

さくらのクラウドのオブジェクトストレージの作成手順

最初に、さくらのクラウドのホーム画面から「オブジェクトストレージ」に移動します。

cloud_home.jpg

次に、オブジェクトストレージのバケットを作成します。

create_bucket.jpg

最後に、s3cmd の設定で利用するため、バケットのアクセスキー ID とシークレットアクセスキーを控えておきます。

manage_bucket.jpg

さくらのクラウドからサーバの作成

今回は CentOS 7.2 でサーバを作成することにします。

create_centos7.jpg

サーバの作成の完了後、 ターミナルからの ssh もしくはさくらのクラウドのコンソールのタブからログインします。

server_console.jpg

s3cmd のインストールと設定

s3cmd コマンドのインストール

CentOS 7.2 であれば、/etc/yum.repos.d/ に存在する下記ファイルの enabled を 1 に変更することで s3cmd がインストールできます。

epel.repo
[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 からでした。

This post is the No.5 article of さくらインターネット Advent Calendar 2016