互換性向上!署名バージョン4へ対応したIIJのオブジェクトストレージをs3fsから使ってみた

2021年03月01日 月曜日


【この記事を書いた人】
寺田 充毅

2013年からオブジェクトストレージの開発を担当。最近はコードよりも資料を書いてる時間が増えている。趣味はギターと農業。

「互換性向上!署名バージョン4へ対応したIIJのオブジェクトストレージをs3fsから使ってみた」のイメージ

前回は「日本の東西でデータ同期 – 東西分断しても動き続けるオブジェクトストレージを作る」で内部データベースの東西同期というIIJオブジェクトストレージのアーキテクチャの話をしました。
今回はお客様が触れることが多いAPIの話をします。先日リリースした署名バージョン4対応による、AWS s3との互換性の向上についてご紹介します。

改めてIIJオブジェクトストレージとは

IIJオブジェクトストレージは名前の通りオブジェクトストレージのサービスです。

オブジェクトストレージはREST APIを経由して利用するストレージです。REST APIはHTTPもしくはHTTPSのプロトコルで呼び出します。

REST APIを通じてオブジェクト(ファイル)のアップロード、ダウンロード、削除ができます。

APIで呼び出せるためアプリケーションから呼び出すのが簡単です。つまりアプリケーションとの親和性が高いストレージという特徴を持っています。

オブジェクトストレージは様々な用途で使われています。例えばHTTP(S)でオブジェクト(ファイル)を取り出すことができるので、コンテンツの置き場として利用されることもあります。また比較的安価ですのでバックアップストレージとしての利用や、容量が増大しがちなカメラからの動画データの置き場など、広く利用されています。

署名バージョン4対応によりs3との互換性が向上しました

2021/2/18のリリースでIIJオブジェクトストレージは署名バージョン4に対応しました。

IIJオブジェクトストレージはAWS s3と互換性を有しています。認証時に使うヘッダ情報はIIJ固有の形式のみならず、AWS s3の形式でも認証できます。

AWS s3の署名形式は数年前より署名バージョン4という新形式での認証に移行しており、旧来の認証方式である署名バージョン2は廃止に向かっています。

IIJオブジェクトストレージは長らく旧来の認証方式を提供していましたが、2021/2/18のリリースでついに署名バージョン4に対応しました。

これにより互換性が向上しました。なお、IIJオブジェクトストレージでは署名バージョン2の廃止予定は現時点(2021年2月)ではありません。

s3fsでIIJオブジェクトストレージに接続してみる

互換性の向上を確認するため、署名バージョン4でOSSからIIJオブジェクトストレージに接続してみましょう。

今回はクライアントの例として、s3fsを取り上ます。s3fsはオブジェクトストレージをファイルストレージのように扱えるソフトウェアです。

この手のソフトウェアですとgoofysなど新興のツールもありますが、s3fsが定番だと思います。s3fsは署名バージョン2で接続するオプションがありますが今回は指定しません。

注意: 本稿ではs3fsを検証していますが、s3fsはIIJオブジェクトストレージのサポートの対象ではありません。技術的なサポートは対応できません。ご利用は自己責任でお願いいたします。ご了承ください。

インストール

OSはUbuntu 16.04を利用しました。aptコマンドで簡単にインストールできました。

aptでインストールされたs3fsは以下のバージョンでした。

設定

認証情報を設定します。通常のログインになぞらえるとアクセスキーIDはID、シークレットアクセスキーはパスワードにあたります。

バケットを準備する

バケットの作成をあらかじめ実施しておきます。IIJオブジェクトストレージでバケットを作成する場合REST APIを使えばもちろん作成できますが、より簡単な方法として管理コンソール、CLIツールを提供しています。

CLIツールはdagtoolsというもので、これは非常に簡単に使えるのですが今回は管理コンソールを使います。

管理コンソールでの作業イメージはこのような感じです。青枠のバケット作成ボタンを押して、バケット名を入力することでバケットが作成できます。

今回はs3fs-testというバケットを作成しました。

マウントしてみる

まずはマウントポイントのディレクトリを作成します。今回はオーナーもグループもrootで作成しています。

いよいよマウントです。今回はシンプルにコマンドラインからマウントしてみます。自動マウントをしたい場合はfstabの編集をするなど対応をしますが今回は割愛します。

sudoは必須ではないのですが、今回は後の検証の都合で付けています。

オプションの”-o url”は、IIJオブジェクトストレージのエンドポイントを指定します。”-o endpoint”は名前からはわかり難いのですがリージョン名を指定します。

IIJオブジェクトストレージのリージョンは”ap1”(西日本リージョン)を指定しました。

これでマウントができました。容量を確認してみましょう。

一番下の行がs3fsでマウントしたファイルシステムの情報です。256TBと表示されています。この上限を突破した場合にどのような挙動となるのか興味はありますが今回は検証してません。

簡単に動作確認をしてみます(sudoは省略)。

ファイルの書き込み、読み込み、削除ができました。

署名バージョン4でほんとにリクエストがきているのか?

マウント時のURLをhttpに変更し、リクエストをtcpdumpでのぞいてみました。赤線を引いている箇所をみると、AWS4-HMAC-SHA256でAuthorization(認証)ヘッダが送られてきています。

AWSの署名バージョン4の形式でリクエストを受け、処理が実行できていることが分かります。

バックアップしてみる

バックアップといえばrsyncということで、/var/log/をバックアップしてみようと思います。

/var/log/ 直下はこんな状況です。

バックアップ用のディレクトリをs3fsのマウントポイントに作ります。そのディレクトリにrsyncでデータをバックアップしてみます。

ちゃんとバックアップできました。ユーザもグループも正しくコピーされています。

まとめ

IIJオブジェクトストレージは署名バージョン4に対応しました。互換性が向上したことを確かめるため今回はs3fsとの接続を試してみました。無事に接続することができました。繰り返しとなりますがIIJオブジェクトストレージとしてs3fsは正式にサポートしません。ですがIIJオブジェクトストレージがAWS s3に対し今回の検証範囲においては互換性があることがご理解いただけたと思います。

本サービスに興味を持たれた方は弊社までお問い合わせください。

関連リンク

寺田 充毅

2021年03月01日 月曜日

2013年からオブジェクトストレージの開発を担当。最近はコードよりも資料を書いてる時間が増えている。趣味はギターと農業。

Related
関連記事