OpenStackで使えるAmazonS3互換ストレージ第1回Swift3がサポートするAmazonS3互換API
Amazon S3用に開発したアプリケーションを改造することなくOpenStackへ移行するために有用な技術として、Amazon S3互換ストレージを実現するSwift3について紹介いたします。第1回はSwift3がサポートするAmazon S3 APIについて紹介します。
テクノロジーコラム
- 2016年07月08日公開
はじめに
ここ最近、Amazon Web Service(以下、AWS)などのパブリッククラウドからOpenStackなどを基盤としたプライベートクラウドへの移行を考えている方が増えてきています。
しかし、特定のパブリッククラウド(例えばAWS)固有のサービスに依存したアプリケーションを作成している場合、アプリケーションのポーティングにおける技術的問題でプライベートクラウドへの移行は困難な方も多いと考えています。
オブジェクトストレージ機能を例に取ると、データをストレージとやりとりするコードはアプリケーションの本体に埋め込まれていることが多く、認証を含むユーザ管理方法やAPIの違いを把握しつつ、移植するには大変困難が伴います。
そこで、本連載では、Amazon S3用に開発したアプリケーションを改造することなくOpenStackへ移行するために有用な技術として、Amazon S3互換ストレージを実現するSwift3について紹介いたします。連載は全4回で以下の内容を予定しています。
- ・第1回 Swift3がサポートするAmazon S3 API
- ・第2回 Swift3のインストールと実際の動作
- ・第3回 Swift3の性能
- ・第4回 Swift3の今後とまとめ
S3がサポートするAmazon S3 API
Swift3 は、OpenStack Swift(※1)と組み合わせることで、Amazon S3の代替となるファイル保存用ストレージを実現するオープンソースのアプリケーションです。このSwift3を活用することにより、Amazon S3用に作成したアプリケーションを改造することなくOpenStackで動かすことが可能になります。
Amazon S3が有する約60種類のAPIのうち、主な用途であるファイル保存利用に必要かつ、2016年6月17日時点で実装済みである22種類のAPIと認証方 式について、次表に示します。Swift3は単にS3のAPI名や引数をSwiftのものに置き換えているわけではありません。例えばS3とSwiftで はユーザに関する考え方や、ACL(アクセスコントロールリスト)の対象範囲が違います。Swift3はその差分を認証処理やオブジェクトストレージ特有 のメタデータをうまく利用することで吸収し、S3の機能を実現しています。詳細は第2回で紹介する予定です。
(※1)OpenStack標準コンポーネント。オブジェクトストレージ機能を有する。
表1. Swift3がサポートするAmazon S3 APIと認証方式
(※2)GitHubのドキュメントにはサポートされた旨が記載されていないが、
2016年6月17日時点で対応する機能がソースコードに取り込まれている。
なお、これらAPIと認証方式については、Swift3の機能試験をAWSの公式クライアントライブラリ(※3)を用いて実施するようコミュニティに提案し、取り入れられる中で、S3と同じ動作をすることを確認しています。
(※3)AWS SDK for Python (Boto)
Swift3のコミュテニティ状況
Swift3コミュニティには日々新しいソースコードが投稿されており、機能改善が進められています。
特にこの1年ほどの間に重要な機能であるACLが取り込まれました。ACLの実装前は、同じ契約に紐づくユーザ内(同じアカウントに属するユーザ)ならば、どのユーザが所持するリソースでもアクセス可能でした。このACLが実装されることで、リソース毎にアクセス権限を設定できるようになり、権限のないユーザによるファイルへの不正なアクセスを防ぐことが可能になりました。
ACLの開発ではSwiftには存在しないリソースのオーナという概念や、オブジェクトに対するACLの実現に苦心しました。
次回予告
次回はSwift3とAmazon S3用アプリケーションを用いて、主要APIの実際の動作について紹介する予定です。
今回の記事に関してご質問のある方や、OpenStackにご興味のある方は、こちらからぜひお問い合わせください。
OpenStack®はOpenStack, LLCの登録商標又は商標です。
参考文献
Swift3 GitHub
https://github.com/openstack/swift3
Boto GitHub
https://github.com/boto/boto
AmazonS3 公式APIドキュメント
[著者プロフィール]
NTTソフトウェア株式会社
クラウド&セキュリティ事業部
第一事業ユニット
2013年ごろからNTTの研究所と共同でOpenStackクラウドの設計や検証に携わる。メインで携わってきたOpenStackコンポーネントはSwift。