今回のOCI機能アップデート情報は今月9日にリリースノートが公開されたオブジェクトストレージの仮想フォルダ機能について紹介いたします。
今まではオブジェクトストレージの各バケット内のオブジェクトはすべてフラットに見えていましたが、
このアップデートにより、階層的に確認・管理することが可能となりました。
仮想フォルダ機能の確認
まずはoci cliを使用しバケットを作成します。
OCIコンソール上からバケット内に仮想フォルダを作成することもできますが、今回はCLIを使用しています。
1 2 3 |
$ oci os bucket create --name test_bucket $ oci os bucket list | jq '.data[].name' "test_bucket" |
ちなみに横道に逸れますがオブジェクトにはOCID(OCIのリソースを一意にするID)はありませんが、バケットにはOCIDが存在します。
OCIDでユニークなリソースとしているのであれば、同じ名前のバケットも作成できるかと試してみましたが、これは以下のエラー(一部省略)が出力されてやはり無理でした。
1 2 3 4 5 6 7 8 |
$ oci os bucket create --name test_bucket ServiceError: { "code": "BucketAlreadyExists", "message": "Either the bucket 'test_bucket' in namespace '省略' already exists or you are not authorized to create it", "opc-request-id": "nrt-1:省略", "status": 409 } |
次にアップロードするオブジェクトファイルを作成し、アップロードしていきます。
1 2 3 4 |
$ touch test1.txt test2.txt $ oci os object put --bucket-name test_bucket --file test1.txt $ oci os object list --bucket-name test_bucket | jq '.data[].name' "test1.txt" |
今度は階層構造にしてアップロードしてみます。
nameオプションに/(スラッシュ)を使用して、ディレクトリ構造のようにしてアップロードします。
1 2 3 4 |
$ oci os object put --bucket-name test_bucket --file test2.txt --name 2nd_bucket/test2.txt $ oci os object list --bucket-name test_bucket | jq '.data[].name' "2nd_bucket/test2.txt" "test1.txt" |
コンソールから見るとディレクトリとして表示されています。
もちろんコンソールを使用して操作することも出来ます。
ライフサイクルポリシーの利用
さらに特定の仮想フォルダに対して、今年8月にリリースされた機能であるライフサイクルポリシーを適用すると管理もやりやすくなります。
ライフサイクルポリシーはバケットに対しルールを設定し、オブジェクトのアーカイブおよび削除を自動的に行うことが可能です。
ライフサイクルポリシーに関するリリースノートはこちらです。
詳細は公式ページを参照ください
まとめ
最近OCIの話題を聞く機会が増えてきたように思います。
様々なサービスのアップデートを経て、より深くユーザーニーズに対応出来るようになってきた感がありますね。
今後もOCIに注目していきます!