今、関わっているサービスにてOracle Cloud Infrastructureの
Object Storageを扱うことになりました
実務での実装は私ではありませんが、技術調査ということで
REST APIでのアクセス方法の調査を行いました
RESTなのでとりあえずはcurlで投げて確認とるか…と
Oracle Cloudのドキュメントの読み込みを開始
とりあえず弾かれる前提でObejctStorageへいきなりアクセス
({}は変数的に記載しておきます 各種ご自身のnamespaceやbucket、objectで置き換えてください)
予想通り、アクセスできません
メッセージからすると認証が取れていないので
アクセスできないとのこと
さて、ではどうやって認証をとるか
これも公式ドキュメントに記載があったので読んでいきました
……Now Reading……
ダメです!!私の英語力が雑魚なのかよくわかりません!!
おとなしく公式のBashのFunctionを使いました
個人的なイメージでは認証REST APIを叩いて認証情報を取得
その認証情報を次のリクエストに設定して実行すればOKなのだと思っていました
がしかし、どうも公式のBashを見る限り認証用のAuthorizationは
特段Oracleへアクセスすることなく、内部で文字列から作成されているようです
なのでcurlでそのまま投げるのもできそうな感じですが
設定値が結構な長さになるなどからおとなしく公式のBashを使用しました
確認では公式のBashをローカルファイルに落とし込み
Functionを呼び出すラッピングシェルを用意して実行
ObjectのGETのなのでメソッドはGET
対象のオブジェクトは単なるテキストでナカにaccess OK!!と記載したモノです
({}は変数的に記載しておきます 各種ご自身のnamespaceやbucket、objectで置き換えてください)
無事ファイルの取得ができました
取得ができたなら送信もできるだろうと
同じくラッピングシェルを実行
今度は送信なのでメソッドはPUT
ファイルそのものはラッピングシェルと同じ階層に
「upload_sample.txt」として用意しています
無事ファイルは格納されました
ただ、BUCKETへの反映がちょっと時間かかるようですね
コマンドが完了してすぐさまというワケではなさそうです
10~30秒くらいかかるように感じます
(計ってないので体感です)
しかし、この認証はどういう認証なんでしょうね
接続ごとのワンタイムトークン的なものなのか
KeyID的にテナントとユーザーとそのAPIキーが紐づいているあたり
ユーザー単位でのログイン認証的なものなのか
後者っぽいですけど
特に確認はとれていません
とりあえず公式BashからRESTの確認が取れました
良かった良かった