【OCI_19】プライベート・サブネット上の Oracle Linux からOCI バケット(Object Storage)へファイルをアップロードする

 
この記事を書いている人 - WRITER -
ブログ運営者のtkjzblogです。 仕事柄新しいシステムに触れることが多いです。 Windows、Linux(RHEL)がメインです。その他、VMwareやOffice365など仮想環境やクラウド環境も少しですが触れることがあります。 いろいろ忘れがちのため、このサイトへ情報を書き溜めていきたいと思います。 どうぞ、よろしくお願い致します。

以前、OCI バケット(Object Storage)を作成してブラウザからアップロード、ダウンロードを検証しました。
今回は、プライベート・サブネット上の Oracle Linux からOCI バケット(Object Storage)へファイルをアップロードなど検証してみたいと思います。
chatgpt に聞くと「OCI CLIインストール」「動的グループ作成」「ポリシー作成」が必要とのことですので、そのとおり進めていきたいと思います。

   

事前準備

●OCI バケット(Object Storage)が作成済みである。

●サービス・ゲートウェイを作成してプライベート・サブネットのOracle Linux からcurl で自身のリージョンのオブジェクトストレージのエンドポイントにアクセス可能である。

リージョンが Japan Central (Osaka) の場合:
curl -v https://objectstorage.ap-osaka-1.oraclecloud.com
 
[opc@instance-10-1-2-100 ~]$ sudo curl -v https://objectstorage.ap-osaka-1.oraclecloud.com
* Trying 134.***.***.***:443…
* Connected to objectstorage.ap-osaka-1.oraclecloud.com (134.***.***.***) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
* TLSv1.0 (OUT), TLS header, Certificate Status (22):
~ 以下省略 ~

●OCI CLIのインストールが完了している

   

動的グループを作成(OCIコンソール)

動的グループを設定するのでルート・アカウントでサインインし直します。Defaultドメインへアクセスできるユーザーであればルート・アカウント以外でも問題ありません。

   

インスタンスID(OCID)の確認

動的グループのルール作成時に必要となるのでOCI バケット(Object Storage)へ接続したいインスタンスのインスタンスIDを確認します。
左ペインのコンピュート > インスタンス をクリックします。
適用済フィルタでコンパートメントを指定し、該当インスタンスをクリックします。

OCIDのコピーをクリックしてOCIDを控えます。

   

動的グループを作成

今回は、Defaultドメインへ動的グループを作成します。(※カスタムドメインでも問題ありません)
左ペインのアイデンティティとセキュリティ > ドメイン > Default をクリックします。

「動的グループ」タブ > 「動的グループの作成」をクリックします。

動的グループの作成で以下を選択、入力し、右下の「作成」をクリックします。

名前:任意名
説明:任意(プライベート・サブネットのインスタンスからObject Storage利用)
一致ルール:下で定義したいずれかのルールに一致
ルール・ビルダー:ANY {instance.id = ‘該当インスタンスのOCID’}
※もし2台のインスタンスを個別に記載したい場合は、ANY {instance.id = ‘該当インスタンスのOCID’ , instance.id = ‘該当インスタンスのOCID’} と記述する

ANY {instance.id = ‘ocid1.instance.oc1.ap-osaka-1.anvwsljr5ekurxycfmowvkvx6vhplw6djefca6xqqpm3e5xpwiyzm34ewaha’}

動的グループ「dg-private-instance」が作成されました。

   

ポリシーを作成(OCIコンソール)

作成した動的グループのリソース(今回はインスタンス)がバケット(Object Storage)へアクセスできるようポリシーを作成します。

左ペインのアイデンティティとセキュリティ > ポリシー をクリックします。
適用済みフィルタは、ルート・テナンシを選択します。(※ポリシーは、ルート・テナンシである必要はありません)
「ポリシーの作成」をクリックします。

ポリシーの作成で以下を選択、入力し、右下の「作成」をクリックします。

名前:任意名
説明:任意(プライベートインスタンスからObject Storage利用)
コンパートメント:ここではルート・テナンシを選択
ポリシー・ビルダー:手動エディタの表示をクリック

Allow dynamic-group 動的グループ名 to manage objects in compartment 適用したいコンパートメント名
※カスタムドメインの動的グループを参照する場合は、カスタムドメイン名/動的グループ名にする

Allow dynamic-group dg-private-instance to manage objects in compartment test_compartment

ポリシーが作成されました。

   

OCI CLI の認証をインスタンス認証(Instance Principal)に切り替えて確認

Oracle LinuxへSSHで接続し、以下コマンドを実行します。
コマンドは、Object Storage(バケット/オブジェクトを扱うサービス)において、「ネームスペース(namespace)」を取得する操作です。
ネームスペースとは、テナンシ(クラウド契約単位)で一意に割り当てられた “オブジェクト収納用の識別空間名” のことです。
jsonで以下のように表示されれば、認証OKでこのインスタンスがIAMで認証されたことになります。

参考:
–auth instance_principal オプションについて:
このコマンドを、今回実行中のコンピュート・インスタンス自身の“アイデンティティ”(インスタンス・プリンシパル)を使って実行することを指定しています。
つまり ユーザーのAPIキーを使ってではなく、インスタンスが自身で認証・実行する方法となり、この仕組みによって、インスタンスからOCIのサービスを呼び出すためにユーザー鍵を用意しなくてもよいようになります。

oci os ns get –auth instance_principal

   

OCI バケット(Object Storage)へファイルをアップロード

テストファイル(testfile.txt)を作成します。

echo “Hello from private instance!” > testfile.txt

ls

バケット名を確認(OCIコンソール)します。
左ペインのストレージ > バケット をクリックします。
自分で作成したバケット名を確認します。(例:bucket-20251015)

   

ファイルアップロードを実行

Oracle LinuxへSSHで接続します。
以下コマンドへバケット名、アップロードするファイル名入力し、実行します。

コマンド例:oci os object put -bn バケット名 –file アップロードするファイル名 –auth instance_principal

oci os object put -bn bucket-20251015 –file testfile.txt –auth instance_principal

参考:
アップロードに失敗する一例(動的グループ、またはポリシーの内容が不適切)

   

アップロードを確認

コマンドで確認してみます。バケットには3つのファイルが存在し、アップロードされたファイルも確認できます。

コマンド例:oci os object list -bn バケット名 –auth instance_principal

oci os object list -bn bucket-20251015 –auth instance_principal

OCIコンソールでも確認してみます。

   

ダウンロードを検証

コマンドで事前にサーバにあるファイルを削除してからダウンロードしてみます。

rm -f testfile.txt

ls

次に以下コマンドを実行し、OCIバケットにある「testfile.txt」を別名「downloaded.txt」としてダウンロードします。

コマンド例:oci os object get -bn バケット名 –name testfile.txt –file ./downloaded.txt –auth instance_principal

oci os object get -bn bucket-20251015 –name testfile.txt –file ./downloaded.txt –auth instance_principal

   

まとめ

プライベート・サブネット上の Oracle Linux からOCI バケット(Object Storage)へファイルをアップロードすることができました。
途中、動的グループを理解するうえで chatgpt に惑わされて時間がかかりましたが、その分、理解も深まりました。

   

以下、他の記事をまとめた一覧です。OCI以外にAWSもまとめています。

  

この記事を書いている人 - WRITER -
ブログ運営者のtkjzblogです。 仕事柄新しいシステムに触れることが多いです。 Windows、Linux(RHEL)がメインです。その他、VMwareやOffice365など仮想環境やクラウド環境も少しですが触れることがあります。 いろいろ忘れがちのため、このサイトへ情報を書き溜めていきたいと思います。 どうぞ、よろしくお願い致します。

Copyright© しっぱいはせいこうのもと , 2025 All Rights Reserved.