
目次
はじめに
こんにちは、クラウド事業部の齋藤です!
コンピュート・インスタンスからObject Storageにファイルのアップロードやダウンロードするのってどうやってやればいいの?を調べる機会があり、実際にやってみました!
いろいろと設定箇所があり迷ったところがあったので、一連の流れを書いていきます。
概要

前提条件
以下が完了していること
- OCIアカウントの作成
- コンパートメントの作成
- VCNの作成
- 接続先となるコンピュート・インスタンスの作成
- 参考:【OCI】OCIのVMインスタンスを作ってみた - APC 技術ブログ
- インスタンスはプライベートサブネットに作成
- 今回OSはOracle Linux 8を選択
- 参考:【OCI】OCIのVMインスタンスを作ってみた - APC 技術ブログ
手順
アクセス先のObject Storageとアクセスのための設定
サービス・ゲートウェイが作成されていることを確認します。
本記事の前提条件の参考にある通りVCNウィザードからVCNを作成した場合、デフォルトでサービス・ゲートウェイも作成されます。
作成したVCNの[ゲートウェイ]タブから確認できます。

ない場合は作成してください。
プライベートサブネットからサービス・ゲートウェイへのルーティングが設定されていることを確認します。
本記事の前提条件の参考にある通りVCNウィザードからVCNを作成した場合、デフォルトでサービス・ゲートウェイ向けのルート・ルールも設定されます。
作成したVCNのプライベートサブネットのルートテーブルの[ルート・ルール]タブから確認できます。

ない場合は設定してください。
Object Storageバケットを作成します。
OCIコンソール左上のメニューから[ストレージ] - [バケット] をクリックして、バケットを作成してください。
動的グループを作成します。
[アイデンティティとセキュリティ] - [ドメイン] - [<動的グループ作成対象のドメイン名>] - [動的グループ]タブをクリックし、動的グループを作成してください。
※Defaultドメインに作成する場合は、コンパートメントのフィルターでルートコンパートメントを指定してください。- 名前:任意の名前(ここでは「test-dg-saito-inst」とします)
- 説明:(空欄) ※入力しても問題ありません
- ルール:下で定義したいずれかのルールに一致
All {instance.id = '<Object Storageにアクセスするためのコンピュート・インスタンスを作成したコンパートメントID>'}
インスタンス・プリンシパルを作成します。
[アイデンティティとセキュリティ] - [ポリシー]をクリックし、ポリシーを作成してください。
※Defaultドメインに作成する場合は、コンパートメントのフィルターでルートコンパートメントを指定してください。- 名前:任意の名前(ここでは「policy-saito-osaccess-allow」とします)
- 説明:任意のポリシー説明文(ここでは「policy to access object storage」とします)
- コンパートメント:ポリシー作成先のコンパートメント( ここではコンピュート・インスタンスと同一コンパートメントとします)
- ポリシー・ビルダー:手動エディターの非表示
Allow dynamic-group 'Default'/'test-dg-saito-inst' to read buckets in compartment test_saito
Allow dynamic-group 'Default'/'test-dg-saito-inst' to read objects in compartment test_saito
Allow dynamic-group 'Default'/'test-dg-saito-inst' to manage objects in compartment test_saito where any {request.permission='OBJECT_CREATE', request.permission='OBJECT_INSPECT'}
※ここでは参照や書き込み権限のみとし、バケットやオブジェクトの削除権限は付与していません
OCI CLIインストールと事前設定
OCI公式ドキュメントを参考にLinuxにCLIをインストールしていきます。
docs.oracle.com
コンピュート・インスタンスに接続します。
プライベートサブネットにあるコンピュート・インスタンスには要塞を利用して接続することが可能です。
参考: 【OCI】Bastion(要塞)の使い方|プライベートインスタンスに踏み台なしでSSH接続する方法 - APC 技術ブログ必要なパッケージの1個目をインストールします。
今回はデフォルトのログインユーザである「opc」を使用するため、sudo権限を行使します。$ sudo dnf -y install oraclelinux-developer-release-el8 Package oraclelinux-developer-release-el8-1.0-7.el8.aarch64 is already installed. Dependencies resolved. Nothing to do. Complete!こちらはデフォルトでインストールされていたようなので次のコマンドを実行します。
必要なパッケージの2個目をインストールします。
$ sudo dnf install python36-oci-cli Last metadata expiration check: 2:44:57 ago on Mon 26 May 2025 11:10:09 PM GMT. Dependencies resolved ・・・(省略)・・・ Complete!CLIがインストールできたことを確認します。
$ oci --version 3.56.0今回はコンピュート・インスタンスからCLIコマンドを実行するため、コンピュート・インスタンスに関連付けたインスタンス・プリンシパルを使用した認証が必要です。
そのため、以下コマンドで環境変数を設定します。
(CLIコマンドに認可オプション(--auth)を追加する方法もありますが、毎回指定するのは面倒なので・・・)$ export OCI_CLI_AUTH=instance_principal
Object Storageにファイルアップロード
バケット内のファイルの存在を事前に確認します。
ファイルが存在しないことがわかります。$ oci os object list -bn test-saito-bucket { "prefixes": [] }テストファイルを作成します。
$ touch test.txt $ ls -l total 0 -rw-rw-r--. 1 opc opc 0 May 27 04:24 test.txtテストファイルをObject Storageにアップロードします。
$ oci os object put -bn test-saito-bucket --file test.txt { "etag": "85fa1395-c592-4a1e-9351-18182a649b08", "last-modified": "Tue, 27 May 2025 04:25:29 GMT", "opc-content-md5": "1B2M2Y8AsgTpgAmY7PhCfg==" }バケット内にテストファイルがアップロードされたことを確認します。
$ oci os object list -bn test-saito-bucket { "data": [ { "archival-state": null, "etag": "85fa1395-c592-4a1e-9351-18182a649b08", "md5": "1B2M2Y8AsgTpgAmY7PhCfg==", "name": "test.txt", "size": 0, "storage-tier": "Standard", "time-created": "2025-05-27T04:25:29.603000+00:00", "time-modified": "2025-05-27T04:25:29.603000+00:00" } ], "prefixes": [] }コンピュート・インスタンスからテストファイルを一度削除します。
$ rm -i test.txt $ ls -l total 0
Object Storageからファイルダウンロード
テストファイルをObject Storageからダウンロードします。
ダウンロード時のファイル名を指定する必要があるので、「local.txt」としてみます。$ oci os object get -bn test-saito-bucket --name test.txt --file local.txtコンピュート・インスタンスにテストファイルをダウンロードできたことを確認します。
$ ls -l total 0 -rw-rw-r--. 1 opc opc 0 May 27 04:27 local.txt
おわりに
以上がOCIでコンピュート・インスタンスからObject Storageを操作するときの手順です。 やってみるとあれが足りないコマンド何指定すればいいのかわからないなど出てきたので、この記事を見てくださった方の参考になればうれしいです!
お知らせ
私達クラウド事業部はクラウド技術を活用したSI/SESのご支援をしております。
また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。