はじめに

みなさん、こんにちは。
Oracle Cloud Infrastructure検証チームです。

今回は、Oracle Cloud Infrastructure(OCI)のオブジェクト・ストレージ・サービスについて、
ご紹介したいと思います。

オブジェクト・ストレージ・サービスとは

オブジェクト・ストレージ・サービスは、
高い信頼性と高い費用対効果を両立するスケーラブルなクラウドストレージです。

データ容量制限はなく、インターネットやクラウド・プラットフォーム内から直接データをアップロード/ダウンロードすることができます。
OCIのオブジェクト・ストレージ・サービスには、以下の3つのタイプがあり、用途に合わせて利用することができます。

標準

データへのアクセス頻度が高い場合に最適です。
データを瞬時にアップロード/ダウンロードすることができます。

頻度の低いアクセス

データへのアクセス頻度が低いが、必要な際には即座にアクセスする必要があるデータに最適です。
標準よりもストレージ単価が安く、後述するアーカイブのようにデータを「リストア」する必要がありません

アーカイブ

データへのアクセス頻度が低く、長期間データを保存する場合に最適です。
低コストで利用できますが、データをダウンロードする際は、データを「リストア」する必要がある為、
瞬時にデータをダウンロードすることができません

それでは、実際にオブジェクト・ストレージ・サービスを使用してみたいと思います。
今回は標準のオブジェクト・ストレージを使用して、オブジェクトのアップロード/ダウンロードを試してみます

バケットの作成

まずは、コンソールからバケットを作成していきます。
バケットは、オブジェクト・ストレージ・サービスにおいて、オブジェクト(データ)を格納する箱として機能します。

コンソールメニューから[ストレージ] – [オブジェクト・ストレージとアーカイブ・ストレージ]を選択し、[バケットの作成]ボタンを押します。

バケットの作成ウィンドウが立ち上がりますので、任意のバケット名を指定してバケットを作成します。
また、デフォルト・ストレージ層は「標準」として作成します。
入力や選択が完了したら、[作成]ボタンを押します。

「自動階層化を有効化」を選択すると、データ・アクセス・パターンに基づいて標準ストレージ層と低頻度アクセス・ストレージ層の間でオブジェクトが自動的に移動するようになります。また、後述のオブジェクトのアップロード時にデフォルト以外のストレージ層を選択する際に「頻度の低いアクセス」を選択して、オブジェクトをアップロードすることも出来ます。

バケットの作成が完了し、コンソールに作成したバケットが表示されていることを確認します。

これで、バケットの作成は完了です。
次に、作成したバケットに対して、オブジェクトのアップロードやダウンロードを試してみましょう。

オブジェクトのアップロード/ダウンロード (コンソール)

コンソール上から作成したバケットのリンクをクリックし、バケットの詳細を表示します。

[アップロード]ボタンを押し、オブジェクトのアップロードウィンドウを立ち上げます。

アップロードするファイルをドロップまたは選択し、[アップロード]ボタンを押します。
今回はテスト用のテキストファイルをアップロードしてみます。
必要に応じて、オブジェクト名の接頭辞を入力できます。

バケットの詳細画面からアップロードしたファイルが表示されていることを確認します。
これでアップロードは完了です。

続いて、アップロードしたファイルをダウンロードしてみます。
アップロードしたファイルの右側にある縦の「・・・」をクリックしてメニューを表示し、[ダウンロード]ボタンを押します。
ダウンロードする場所を選択し、ダウンロードしたファイルが保存されていれば完了です。

コンソール上でのオブジェクトのアップロード/ダウンロードは以上となります。

オブジェクトのアップロード/ダウンロード (OCI CLI)

最後に、OCI CLIを使用してComputeインスタンスからオブジェクト・ストレージに対して、オブジェクトのアップロード/ダウンロードを試してみます。
まずは現在のバケットの内容を確認してみます。

コマンド例)
$ oci os object list –namespace <ネームスペース> –bucket-name <バケット名>
※ネームスペースは、コンソールのバケット詳細から確認できます。

[opc@instance]$ oci os object list --namespace xxxx --bucket-name test-bucket
{
  "data": [
    {
      "archival-state": null,
      "etag": "xxxx",
      "md5": "xxxx",
      "name": "test-file1.txt",
      "size": 4,
      "storage-tier": "Standard",
      "time-created": "2022-06-09T06:40:26.826000+00:00",
      "time-modified": "2022-06-09T06:40:26.826000+00:00"
    }
  ],
  "prefixes": []
}

コマンドを実行してみると、コンソール上からアップロードしたテキストファイル(test-file1.txt)が確認できました。

続いて、コンソールの時と同様にテスト用のテキストファイルをアップロードしてみます。

コマンド例)
$ oci os object put –namespace <ネームスペース> –bucket-name <バケット名> –file <アップロードするファイル名>

[opc@instance]$ ls -l test-file2.txt
-rw-rw-r--. 1 opc opc 5 Jun  9 07:53 test-file2.txt
[opc@instance]$
[opc@instance]$ oci os object put --namespace xxxx --bucket-name test-bucket --file test-file2.txt
{
  "etag": "xxxx",
  "last-modified": "Thu, 09 Jun 2022 08:10:44 GMT",
  "opc-content-md5": "xxxx"
}

ここでもう一度、現在のバケットの内容を確認してみます。

[opc@instance]$ oci os object list –-namespace xxxx --bucket-name test-bucket
{
  "data": [
    {
      "archival-state": null,
      "etag": "xxxx",
      "md5": "xxxx",
      "name": "test-file1.txt",
      "size": 4,
      "storage-tier": "Standard",
      "time-created": "2022-06-09T06:40:26.826000+00:00",
      "time-modified": "2022-06-09T06:40:26.826000+00:00"
    },
    {
      "archival-state": null,
      "etag": "xxxx",
      "md5": "xxxx",
      "name": "test-file2.txt",
      "size": 5,
      "storage-tier": "Standard",
      "time-created": "2022-06-09T08:10:44.745000+00:00",
      "time-modified": "2022-06-09T08:10:44.745000+00:00"
    }
  ],
  "prefixes": []
}

アップロードしたテスト用のテキストファイル(test-file2.txt)が確認できました。

次に、コンソール上でアップロードしたテスト用のテキストファイル(test-file1.txt)をインスタンス上へダウンロードしてみます。

コマンド例)
oci os object get –namespace <ネームスペース> –bucket-name <バケット名> –name <バケット上のオブジェクト名> –file <ダウンロードするファイル名>

[opc@instance]$ ls -l test-file1.txt
ls: cannot access 'test-file1.txt': No such file or directory
[opc@instance]$
[opc@instance]$ oci os object get --namespace xxxx --bucket-name test-bucket --name test-file1.txt --file ./test-file1.txt
[opc@instance]$
[opc@instance]$ ls -l test-file1.txt
-rw-rw-r--. 1 opc opc 4 Jun  9 08:14 test-file1.txt

コンソール上でアップロードしたテスト用のテキストファイル(test-file1.txt)がダウンロードできました。

おわりに

今回はオブジェクト・ストレージ・サービスのバケットの作成からオブジェクトのアップロード/ダウンロードまで試してみましたが、いかがでしたでしょうか?

コンソール上からの操作は特に難しいことはなく、簡単にバケットの作成やオブジェクトのアップロード/ダウンロードができました。
OCI CLIによるオブジェクトのアップロード/ダウンロードはコマンドをスクリプト化すれば、スケジューリングして自動実行など応用した使い方もできますね。

最後までご覧いただきありがとうございました!

Oracle Cloudをご検討の際は当社までお問い合わせください。