OracleCloudのObjectStorageへのアクセス方法(REST API)


システム技術グループ I.N

今、関わっているサービスにて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の確認が取れました
良かった良かった