0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OCI Object Storage を利用して OCI Compute インスタンスとローカルマシンの間でファイルをやり取りする

Last updated at Posted at 2025-08-13

OCI Compute インスタンスと OCI Object Storage バケットは構築済みの前提となります。
(本記事ではそれぞれ handson-vm02/Oracle Linux 9, handsonvm02-bucket)

事前準備

設定や操作に必要な情報の収集

設定や操作の際に OCIDなどを聞かれるのであらかじめ控えておきます。

user OCID

プロファイル (OCIコンソールの右上) > xxxxx@xxxx.co.jp (ユーザ名) から確認できます。
スクリーンショット 2025-08-07 173933.png

tenancy OCID

プロファイル (OCIコンソールの右上) > テナンシ: xxx から確認できます。
スクリーンショット 2025-08-07 174357.png

compartment OCID

ナビゲーションメニュー (OCIコンソールの左上) > アイデンティティとセキュリティ > コンパートメント > 対象コンパートメント から確認できます。
スクリーンショット 2025-08-07 174724.png

namespace

ナビゲーションメニュー (OCIコンソールの左上) > ストレージ > バケット > 対象バケット から確認できます。
(スクリーンショット上は bucket OCID も協調してしまっていますが、本記事内では使用しません)
スクリーンショット 2025-08-08 092343.png

設定パッケージと OCI CLI のインストール

OCI Compute インスタンスに設定パッケージ (oraclelinux-developer-release-el9) と OCI CLI (python39-oci-cli) をインストールします。
最後にバージョン確認 (oci -v) を行い、インストールできていることを確認します。

[opc@handson-vm02 ~]$ sudo dnf -y install oraclelinux-developer-release-el9
Ksplice for Oracle Linux 9 (x86_64)              42 MB/s | 7.4 MB     00:00
Oracle Linux 9 OCI Included Packages (x86_64)    54 MB/s | 176 MB     00:03
Oracle Linux 9 BaseOS Latest (x86_64)            69 MB/s |  76 MB     00:01
Oracle Linux 9 Application Stream Packages (x86  56 MB/s |  66 MB     00:01
Oracle Linux 9 Addons (x86_64)                  5.5 MB/s | 731 kB     00:00
Oracle Linux 9 UEK Release 8 (x86_64)           4.9 MB/s | 9.4 MB     00:01
Package oraclelinux-developer-release-el9-1.0-2.el9.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[opc@handson-vm02 ~]$ sudo dnf install python39-oci-cli
Last metadata expiration check: 0:00:50 ago on Thu 07 Aug 2025 08:32:54 AM GMT.
Dependencies resolved.
================================================================================
 Package                     Arch    Version            Repository         Size
================================================================================
Installing:
 python39-oci-cli            noarch  3.63.3-1.el9       ol9_oci_included   45 M
Upgrading:
 python39-oci-sdk            x86_64  2.157.1-1.el9      ol9_oci_included   89 M
Installing dependencies:
 python3-arrow               noarch  1.1.0-2.el9        ol9_oci_included  153 k
 python3-importlib-metadata  noarch  4.12.0-2.el9       ol9_oci_included   75 k
 python3-jmespath            noarch  0.10.0-4.el9       ol9_oci_included   78 k
 python3-prompt-toolkit      noarch  3.0.38-4.el9       ol9_oci_included  1.0 M
 python3-terminaltables      noarch  3.1.10-8.0.1.el9   ol9_oci_included   60 k
 python3-wcwidth             noarch  0.2.5-8.el9        ol9_appstream      65 k
 python3-zipp                noarch  0.5.1-1.el9        ol9_oci_included   24 k

Transaction Summary
================================================================================
Install  8 Packages
Upgrade  1 Package

Total download size: 136 M
Is this ok [y/N]: y
Downloading Packages:
(1/9): python3-jmespath-0.10.0-4.el9.noarch.rpm 2.5 MB/s |  78 kB     00:00
(2/9): python3-importlib-metadata-4.12.0-2.el9. 2.0 MB/s |  75 kB     00:00
(3/9): python3-terminaltables-3.1.10-8.0.1.el9. 6.5 MB/s |  60 kB     00:00
(4/9): python3-arrow-1.1.0-2.el9.noarch.rpm     3.1 MB/s | 153 kB     00:00
(5/9): python3-zipp-0.5.1-1.el9.noarch.rpm      3.1 MB/s |  24 kB     00:00
(6/9): python3-wcwidth-0.2.5-8.el9.noarch.rpm    10 MB/s |  65 kB     00:00
(7/9): python3-prompt-toolkit-3.0.38-4.el9.noar  26 MB/s | 1.0 MB     00:00
(8/9): python39-oci-cli-3.63.3-1.el9.noarch.rpm  47 MB/s |  45 MB     00:00
(9/9): python39-oci-sdk-2.157.1-1.el9.x86_64.rp  44 MB/s |  89 MB     00:02
--------------------------------------------------------------------------------
Total                                            65 MB/s | 136 MB     00:02
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Upgrading        : python39-oci-sdk-2.157.1-1.el9.x86_64                 1/10
  Installing       : python3-wcwidth-0.2.5-8.el9.noarch                    2/10
  Installing       : python3-prompt-toolkit-3.0.38-4.el9.noarch            3/10
  Installing       : python3-zipp-0.5.1-1.el9.noarch                       4/10
  Installing       : python3-importlib-metadata-4.12.0-2.el9.noarch        5/10
  Installing       : python3-terminaltables-3.1.10-8.0.1.el9.noarch        6/10
  Installing       : python3-jmespath-0.10.0-4.el9.noarch                  7/10
  Installing       : python3-arrow-1.1.0-2.el9.noarch                      8/10
  Installing       : python39-oci-cli-3.63.3-1.el9.noarch                  9/10
  Cleanup          : python39-oci-sdk-2.155.1-1.el9.x86_64                10/10
  Running scriptlet: python39-oci-sdk-2.155.1-1.el9.x86_64                10/10
  Verifying        : python3-arrow-1.1.0-2.el9.noarch                      1/10
  Verifying        : python3-importlib-metadata-4.12.0-2.el9.noarch        2/10
  Verifying        : python3-jmespath-0.10.0-4.el9.noarch                  3/10
  Verifying        : python3-prompt-toolkit-3.0.38-4.el9.noarch            4/10
  Verifying        : python3-terminaltables-3.1.10-8.0.1.el9.noarch        5/10
  Verifying        : python3-zipp-0.5.1-1.el9.noarch                       6/10
  Verifying        : python39-oci-cli-3.63.3-1.el9.noarch                  7/10
  Verifying        : python3-wcwidth-0.2.5-8.el9.noarch                    8/10
  Verifying        : python39-oci-sdk-2.157.1-1.el9.x86_64                 9/10
  Verifying        : python39-oci-sdk-2.155.1-1.el9.x86_64                10/10

Upgraded:
  python39-oci-sdk-2.157.1-1.el9.x86_64
Installed:
  python3-arrow-1.1.0-2.el9.noarch
  python3-importlib-metadata-4.12.0-2.el9.noarch
  python3-jmespath-0.10.0-4.el9.noarch
  python3-prompt-toolkit-3.0.38-4.el9.noarch
  python3-terminaltables-3.1.10-8.0.1.el9.noarch
  python3-wcwidth-0.2.5-8.el9.noarch
  python3-zipp-0.5.1-1.el9.noarch
  python39-oci-cli-3.63.3-1.el9.noarch

Complete!
[opc@handson-vm02 ~]$ oci -v
3.63.3
[opc@handson-vm02 ~]$

OCI CLI の設定

oci setup configを実行して OCI CLI の設定を行います。
対話形式で進むので、事前に控えた情報などを参考にながら設定します。

[opc@handson-vm02 ~]$ oci setup config
    This command provides a walkthrough of creating a valid CLI config file.

    The following links explain where to find the information required by this
    script:

    User API Signing Key, OCID and Tenancy OCID:

        https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#Other

    Region:

        https://docs.cloud.oracle.com/Content/General/Concepts/regions.htm

    General config documentation:

        https://docs.cloud.oracle.com/Content/API/Concepts/sdkconfig.htm


Enter a location for your config [/home/opc/.oci/config]:  ★必要に応じて指定 (ここではデフォルト)
Enter a user OCID: ocid1.user.xxxxxxxxxxxxxxxxxxx          ★事前に調べた user OCID
Enter a tenancy OCID: ocid1.tenancy.xxxxxxxxxxxxxxxxxxx    ★事前に調べた tenancy OCID
Enter a region by index or name(e.g.
1: af-johannesburg-1, (snip) 20: ap-tokyo-1, (snip) 76: us-thames-1): 20            ★OCI CLI を実行するリージョンを指定
Do you want to generate a new API Signing RSA key pair?
(If you decline you will be asked to supply the path to an existing key.) [Y/n]: Y  ★Yを指定
Enter a directory for your keys to be created [/home/opc/.oci]:     ★必要に応じて指定 (ここではデフォルト)
Enter a name for your key [oci_api_key]: piyopiyo                   ★必要に応じて指定
Public key written to: /home/opc/.oci/piyopiyo_public.pem
Enter a passphrase for your private key ("N/A" for no passphrase):  ★必要に応じて指定 (ここでは N/A を指定)
Repeat for confirmation:
Private key written to: /home/opc/.oci/piyopiyo.pem
Fingerprint: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Config written to /home/opc/.oci/config


    If you haven't already uploaded your API Signing public key through the
    console, follow the instructions on the page linked below in the section
    'How to upload the public key':

        https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#How2


[opc@handson-vm02 ~]$ ls -la .oci/
total 12
drwx------. 2 opc opc   67 Aug  7 08:58 .
drwx------. 4 opc opc  107 Aug  7 08:56 ..
-rw-------. 1 opc opc  295 Aug  7 08:58 config
-rw-------. 1 opc opc 1715 Aug  7 08:58 piyopiyo.pem
-rw-------. 1 opc opc  451 Aug  7 08:58 piyopiyo_public.pem

生成された公開鍵を確認して OCIユーザに登録します。

[opc@handson-vm02 ~]$ cat .oci/piyopiyo_public.pem
-----BEGIN PUBLIC KEY-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END PUBLIC KEY-----
[opc@handson-vm02 ~]$

プロファイル (OCIコンソールの右上) > ユーザ名 (自身のメールアドレス) > トークンおよびキー > APIキーの追加 > 公開キーの貼付け から登録できます。
スクリーンショット 2025-08-07 182424.png

oci setup oci-cli-rcを実行して oci-cli-rcファイルを作成します。
oci-cli-rcファイルを利用することで、OCI CLIコマンドのエイリアスや出力書式などをカスタマイズすることができます。
事前に控えた compartment OCID を oci-cli-rcファイルに記載します。

[opc@handson-vm02 ~]$ oci setup oci-cli-rc
Predefined queries written under section OCI_CLI_CANNED_QUERIES
Command aliases written under section OCI_CLI_COMMAND_ALIASES
Parameter aliases written under section OCI_CLI_PARAM_ALIASES
[opc@handson-vm02 ~]$
[opc@handson-vm02 ~]$ tail .oci/oci_cli_rc
rm = os.object.delete



[OCI_CLI_PARAM_ALIASES]
# Parameter aliases either need to start with a double dash (--) or be a single dash (-) followed by a single letter. For example: --foo, -f
--ad = --availability-domain
--dn = --display-name
--egress-rules = --egress-security-rules
--ingress-rules = --ingress-security-rules
[opc@handson-vm02 ~]$ vi .oci/oci_cli_rc
[opc@handson-vm02 ~]$ tail .oci/oci_cli_rc

[OCI_CLI_PARAM_ALIASES]
# Parameter aliases either need to start with a double dash (--) or be a single dash (-) followed by a single letter. For example: --foo, -f
--ad = --availability-domain
--dn = --display-name
--egress-rules = --egress-security-rules
--ingress-rules = --ingress-security-rules

[DEFAULT]   ★
compartment-id = ocid1.compartment.xxxxxxxxxxxxxxxxxxx   ★事前に調べた compartment OCID
[opc@handson-vm02 ~]$

oci iam region listを実行して OCI CLI の動作確認をします。

[opc@handson-vm02 ~]$ oci iam region list
{
  "data": [
    {
      "key": "AMS",
      "name": "eu-amsterdam-1"
    },
(snip)
    {
      "key": "ZRH",
      "name": "eu-zurich-1"
    }
  ]
}
[opc@handson-vm02 ~]$

OCI Compute インスタンスから OCI Object Storage にUL

適当に作成した fooファイル を OCI Object Storage にアップロードします。

[opc@handson-vm02 ~]$ touch foo
[opc@handson-vm02 ~]$ ls -la
total 20
drwx------. 4 opc  opc  134 Aug  8 00:41 .
drwxr-xr-x. 3 root root  17 Aug  7 08:19 ..
-rw-------. 1 opc  opc  339 Aug  7 09:39 .bash_history
-rw-r--r--. 1 opc  opc   18 May  1  2024 .bash_logout
-rw-r--r--. 1 opc  opc  141 May  1  2024 .bash_profile
-rw-r--r--. 1 opc  opc  492 May  1  2024 .bashrc
-rw-r--r--. 1 opc  opc    0 Aug  8 00:41 foo
drwx------. 2 opc  opc   85 Aug  7 09:30 .oci
drwx------. 2 opc  opc   29 Aug  7 08:19 .ssh
-rw-------. 1 opc  opc  847 Aug  7 09:30 .viminfo
[opc@handson-vm02 ~]$ oci os object put --namespace xxxxxxxx --bucket-name handsonvm02-bucket --file foo
{
  "etag": "xxxxxxxx",
  "last-modified": "Fri, 08 Aug 2025 00:44:11 GMT",
  "opc-content-md5": "xxxxxxxx"
}
[opc@handson-vm02 ~]$
[opc@handson-vm02 ~]$ oci os object list --namespace xxxxxxxx --bucket-name handsonvm02-bucket
{
  "data": [
    {
      "archival-state": null,
      "etag": "xxxxxxxx",
      "md5": "xxxxxxxx",
      "name": "foo",
      "size": 0,
      "storage-tier": "Standard",
      "time-created": "2025-08-08T00:44:11.678000+00:00",
      "time-modified": "2025-08-08T00:44:11.678000+00:00"
    }
  ],
  "prefixes": []
}
[opc@handson-vm02 ~]$

OCI Object Storage からローカルマシンにDL

ブラウザから対象バケットにアクセスしダウンロードします。
image.png

image.png

ローカルマシンから OCI Object Storage にUL

ブラウザから対象バケットにアクセスし zoo.bmp をアップロードします。
image.png

OCI Object Storage から OCI Compute インスタンスにDL

OCI CLI を使用して OCI Object Storage からダウンロードします

[opc@handson-vm02 ~]$ oci os object get --namespace xxxxxxxx --bucket-name handsonvm02-bucket --name zoo.bmp --file ./zoo.bmp

[opc@handson-vm02 ~]$ ls -la
total 20
drwx------. 4 opc  opc  149 Aug  8 00:54 .
drwxr-xr-x. 3 root root  17 Aug  7 08:19 ..
-rw-------. 1 opc  opc  339 Aug  7 09:39 .bash_history
-rw-r--r--. 1 opc  opc   18 May  1  2024 .bash_logout
-rw-r--r--. 1 opc  opc  141 May  1  2024 .bash_profile
-rw-r--r--. 1 opc  opc  492 May  1  2024 .bashrc
-rw-r--r--. 1 opc  opc    0 Aug  8 00:41 foo
drwx------. 2 opc  opc   85 Aug  7 09:30 .oci
drwx------. 2 opc  opc   29 Aug  7 08:19 .ssh
-rw-------. 1 opc  opc  847 Aug  7 09:30 .viminfo
-rw-r--r--. 1 opc  opc    0 Aug  8 00:54 zoo.bmp
[opc@handson-vm02 ~]$
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?