はじめに
IDCフロンティア社提供の分散型クラウドストレージ、
オブジェクトストレージを利用する機会がありました。
Amazon S3との互換性が高いとの事で、
S3的な方法でオブジェクトのアップロード出来るか試してみたのでメモメモ
事前準備
- IDCF Cloudのコンソールからオブジェクトストレージで使うAPIユーザーを作成
- エンドポイント・API Key・Secret Keyが作られるのでメモメモ
- 作成したAPIユーザーに紐付くバケットを作成しておく
AWS CLI編
-
AWS CLI
本体はインストールされている前提 - ちなみに環境は
Mac
です
これは非常に簡単
まずは認証情報を作成
$ aws configure
AWS Access Key ID [*****]: # `API Key`を入力
AWS Secret Access Key [*****]: # `Secret Key`を入力
Default region name [*****]: # 適当なregionを指定
Default output format [*****]: # 適当なフォーマットを指定
早速アップロード
$ aws --endpoint-url [エンドポイント] s3 \
cp [アップロード対象ファイルのパス] \
s3://[バケット]/[アップロード先となる対象ディレクトリのパス]
これでOK
単純にAWS CLI
のcp
時にオプションで--endpoint-url
を指定するだけで、後は基本的に同じ
※オプションも同じ様に利用できます(--recursive
とか--acl
とかとか)
AWS SDK for JavaScript編
これは結論から言うと現時点では出来なかった...orz
ファイルアップロード時に
No 'Access-Control-Allow-Origin'
とインスペクターにエラーが表示
AWS S3ならCORS設定を追加・変更し、クロスドメイン制約を回避すれば良いのだが、
残念ながらCORSは未対応の様子でした
AWS SDK for PHP編
最新バージョン3
での署名バージョン4
には非対応のため、
AWS SDK for PHP 2
なら可能
まとめ
- AWS CLIでは問題なくアップロード可能
- JavaScriptでの直接アップロードは出来ないので、ajaxでサーバ経由して等、一手間必要
- 今回はAWS SDK for PHP 2でも特に問題は無かったので、そこまで手間ではなかった