5
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-emulatorを試してみた

Posted at

結論(TL;DR)

oci-emulator を使うことで、OCI CLIからバケット作成・オブジェクトの put/list/get をローカル開発環境だけで実行できました

はじめに

ローカル開発環境だけでOCI Object Storageの検証を完結させたかったので色々探したところ、
oci-emulator を見つけたので実際に検証してみました。

結果として、OCI CLIからのバケット作成・オブジェクト操作(put/list/get)がローカルで完結できることを確認しました。本記事はその手順メモをもとにしたまとめです。

公式

構成と前提

  • 実行環境: Oracle Linux 8.9(Dockerが動く他Linux/Macでも可)
  • 主要ツール: Docker、OCI CLI
  • ポート: 公式デフォルトの 12000/tcp を使用

1. oci-emulatorを起動

# イメージ取得と起動(初回はpullが走る)
docker run -d -p 12000:12000 cameritelabs/oci-emulator:latest

# 起動確認(404応答になるがOK = サーバは生きている)
curl -v http://localhost:12000/

期待される応答例(抜粋):

HTTP/1.0 404 NOT FOUND
{"code": "NotAuthorizedOrNotFound", "message": "Authorization failed or requested resource not found."}

2. OCI CLIのプロファイル設定

エミュレータに合わせたダミーOCIDなどを ~/.oci/config に追加します。
秘密鍵はリポジトリに同梱されているものをダウンロードして利用します。

# プロファイル追記
cat >> ~/.oci/config << 'EOF'
[EMULATOR]
user=ocid1.user.oc1..testuser
fingerprint=50:a6:c1:a1:da:71:57:dc:87:ae:90:af:9c:38:99:67
tenancy=ocid1.tenancy.oc1..testtenancy
region=ap-tokyo-1
key_file=~/.oci/emulator_private_key.pem
EOF

# 秘密鍵の取得
cd ~/.oci
wget https://raw.githubusercontent.com/cameritelabs/oci-emulator/main/assets/keys/private_key.pem -O emulator_private_key.pem
chmod 600 emulator_private_key.pem

# 反映する環境変数
export OCI_CLI_PROFILE=EMULATOR
export OCI_CLI_ENDPOINT=http://localhost:12000
export COMPARTMENT_ID=ocid1.compartment.oc1..testcompartment

3. バケット作成〜オブジェクト操作

「emubacket」というバケットを作成し、操作してみます

# バケット作成
oci os bucket create --compartment-id $COMPARTMENT_ID --name emubacket

# 一覧
oci os bucket list --compartment-id $COMPARTMENT_ID

# テストファイル作成とアップロード
echo "test data from emulator" > test.txt
oci os object put --bucket-name emubacket --file test.txt --name test.txt

# 確認
oci os object list --bucket-name emubacket

# ダウンロード
oci os object get --bucket-name emubacket --name test.txt --file download.txt
cat download.txt

実行結果(抜粋)

バケット作成:

{
  "data": {
    "approximate-count": 0,
    "approximate-size": 0,
    "auto-tiering": null,
    "compartment-id": "ocid1.compartment.oc1..testcompartment",
    "created-by": "ocid1.user.oc1..testuser",
    "defined-tags": null,
    "etag": "deb90915-35dc-41f8-a8d3-7b86bd76ac2d",
    "freeform-tags": null,
    "id": "ocid1.bucket.oc1.sa-saopaulo-1.fwcazpoifpwjyppj8ujds103xxjn3pcc9u5de0ca4t384ucwief3nk45v02q",
    "is-read-only": null,
    "kms-key-id": null,
    "metadata": null,
    "name": "emubacket",
    "namespace": "namespace_name",
    "object-events-enabled": null,
    "object-lifecycle-policy-etag": null,
    "public-access-type": null,
    "replication-enabled": null,
    "storage-tier": null,
    "time-created": "2025-10-15T11:46:49.522690+00:00",
    "versioning": "Disabled"
  }
}

バケット一覧:

{
  "data": [
    {
      "compartment-id": "ocid1.compartment.oc1..testcompartment",
      "created-by": "ocid1.user.oc1..testuser",
      "defined-tags": null,
      "etag": "deb90915-35dc-41f8-a8d3-7b86bd76ac2d",
      "freeform-tags": null,
      "name": "emubacket",
      "namespace": "namespace_name",
      "time-created": "2025-10-15T11:46:49.522690+00:00"
    }
  ]
}

オブジェクトアップロード(ETag):

{
  "etag": "0888640a-fdff-4d04-855e-04bd82388d15"
}

オブジェクト一覧:

{
  "data": [
    {
      "archival-state": null,
      "etag": "0888640a-fdff-4d04-855e-04bd82388d15",
      "md5": null,
      "name": "test.txt",
      "size": 24,
      "storage-tier": null,
      "time-created": null,
      "time-modified": null
    }
  ],
  "prefixes": []
}

ダウンロード内容:

test data from emulator

4. ユースエースと制約

  • ユースケース

    • SDK/CLIを用いた機能検証をローカルで実行可能
    • クラウド接続が制限される環境での検証
  • 制約・注意

    • 実サービス完全互換ではない(リージョン/認可/IAM/イベント等は制限あり)
    • 公式からの秘密キーはあくまでも検証目的で利用しています。セキュリティ上あまり好ましくはない

6. まとめ

  • Dockerで oci-emulator を起動し、OCI CLIからObject Storage操作をローカル完結で検証できました
  • 本番等価ではない点に留意しつつ、初期開発・学習・デモ用途で有用です

参考リンク

5
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
5
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?