APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

【OCI】コンピュート・インスタンス(Linux)からObject Storageの操作をするまで

目次

はじめに

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

概要

前提条件

以下が完了していること

手順

アクセス先のObject Storageとアクセスのための設定


  1. サービス・ゲートウェイが作成されていることを確認します。
    本記事の前提条件の参考にある通りVCNウィザードからVCNを作成した場合、デフォルトでサービス・ゲートウェイも作成されます。
    作成したVCNの[ゲートウェイ]タブから確認できます。

    ない場合は作成してください。

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

    ない場合は設定してください。

  3. Object Storageバケットを作成します。
    OCIコンソール左上のメニューから[ストレージ] - [バケット] をクリックして、バケットを作成してください。

  4. 動的グループを作成します。
    [アイデンティティとセキュリティ] - [ドメイン] - [<動的グループ作成対象のドメイン名>] - [動的グループ]タブをクリックし、動的グループを作成してください。
    ※Defaultドメインに作成する場合は、コンパートメントのフィルターでルートコンパートメントを指定してください。

    • 名前:任意の名前(ここでは「test-dg-saito-inst」とします)
    • 説明:(空欄) ※入力しても問題ありません
    • ルール:下で定義したいずれかのルールに一致
          All {instance.id = '<Object Storageにアクセスするためのコンピュート・インスタンスを作成したコンパートメントID>'}

  5. インスタンス・プリンシパルを作成します。
    [アイデンティティとセキュリティ] - [ポリシー]をクリックし、ポリシーを作成してください。
    ※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

  1. コンピュート・インスタンスに接続します。
    プライベートサブネットにあるコンピュート・インスタンスには要塞を利用して接続することが可能です。
    参考: 【OCI】Bastion(要塞)の使い方|プライベートインスタンスに踏み台なしでSSH接続する方法 - APC 技術ブログ

  2. 必要なパッケージの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!
    

    こちらはデフォルトでインストールされていたようなので次のコマンドを実行します。

  3. 必要なパッケージの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!
    


  4. CLIがインストールできたことを確認します。

    $ oci --version
    3.56.0
    


  5. 今回はコンピュート・インスタンスからCLIコマンドを実行するため、コンピュート・インスタンスに関連付けたインスタンス・プリンシパルを使用した認証が必要です。
    そのため、以下コマンドで環境変数を設定します。
    (CLIコマンドに認可オプション(--auth)を追加する方法もありますが、毎回指定するのは面倒なので・・・)

    $ export OCI_CLI_AUTH=instance_principal
    


Object Storageにファイルアップロード

  1. バケット内のファイルの存在を事前に確認します。
    ファイルが存在しないことがわかります。

    $ oci os object list -bn test-saito-bucket
    {
    "prefixes": []
    }
    


  2. テストファイルを作成します。

    $ touch test.txt
    $ ls -l
    total 0
    -rw-rw-r--. 1 opc opc 0 May 27 04:24 test.txt
    


  3. テストファイルを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=="
    }
    


  4. バケット内にテストファイルがアップロードされたことを確認します。

    $ 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": []
    }
    


  5. コンピュート・インスタンスからテストファイルを一度削除します。

    $ rm -i test.txt
    $ ls -l
    total 0
    


Object Storageからファイルダウンロード


  1. テストファイルをObject Storageからダウンロードします。
    ダウンロード時のファイル名を指定する必要があるので、「local.txt」としてみます。

    $ oci os object get -bn test-saito-bucket --name test.txt --file local.txt
    


  2. コンピュート・インスタンスにテストファイルをダウンロードできたことを確認します。

    $ ls -l
    total 0
    -rw-rw-r--. 1 opc opc 0 May 27 04:27 local.txt
    


おわりに

以上がOCIでコンピュート・インスタンスからObject Storageを操作するときの手順です。 やってみるとあれが足りないコマンド何指定すればいいのかわからないなど出てきたので、この記事を見てくださった方の参考になればうれしいです!

お知らせ

私達クラウド事業部はクラウド技術を活用したSI/SESのご支援をしております。

www.ap-com.co.jp

また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。

www.ap-com.co.jp