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

Code Engine上のアプリケーションへCloud Object Storageをマウントする方法

Last updated at Posted at 2025-08-05

はじめに

IBM Cloud上のサーバーレスソリューションであるCode Engineで新しくICOS(IBM Cloud Object Storage)のマウント機能が追加されました。
これにより、ICOSをCode Engineの永続データストアとして利用できるようになります。

本稿ではマウント機能の検証と実装方法の確認のため、Code Engine上のアプリからマウントしたICOSへファイルを書き込み、その後アプリを停止(ゼロスケール)もストレージが残っていることを確認します。

なお、本手順はdocsのdoces:永続データストアを扱うを元に作成しています。

ICOSを永続データストアとして利用する際の注意点

ICOSには以下のような制限や考慮事項があります。

  • 書き込み・読み込みの一貫性
  • 高頻度アクセス時のパフォーマンス
  • 同時アクセス時の競合リスク

これらの点を踏まえて、ICOSが自身のワークロードに適しているかを事前に検討してください。
詳細はdocs:永続データストアを扱う/制限を確認ください。

実装手順

Code Engine上に簡単なWebアプリケーションを構築し、ICOSへのファイル保存と永続性を確認します。

以下の図は構成概要です

image.png

実施する手順は以下の通りです

  1. HMACシークレットの登録
  2. 永続データストアの作成
  3. データストアをマウントしたアプリケーションの作成
  4. アプリの動作確認とファイル保存テスト

事前準備

以下は事前に準備してあるものとします。

  • Code Engineプロジェクト:ce-project-tok
  • 実装するアプリ:https://github.com/r1ku2/icostest
  • ICOSインスタンス:cos-instance
    • バケット:mount-bucket
    • HMAC クレデンシャル(writer以上の権限を付与)

現時点ではICOSの権限認証はHMACクレデンシャルのみ対応しています
ICOSのインスタンス画面から作成してください

1. HMACシークレットの登録

まずは事前に作成したHMACシークレットをCode Engine上に``my-hac-secret```として登録します。

secret作成
$ ibmcloud ce secret create --name my-hmac-secret --format hmac --secret-access-key-prompt --access-key-id-prompt
アクセス・キーID: ()> 
秘密アクセス・キー: ()>

アクセス・キーID・秘密アクセス・キーは事前に作成したHMACクレデンシャルの中にあるaccess_key_idsecret_access_keyを入力してください。
(こちらのdocsにHMACについての記載があります。)

secretのformatにhmacが存在しない場合はceプラグインのバージョンが古い場合があります
以下のコマンドでプラグインをバージョンアップしてください

プラグイン更新
$ ibmcloud plugin update ce

2. 永続データストアの作成

作成したシークレットを元にCode Engine上の永続データストアmy-cos-bucket-pdsを作成します。

永続データストアの作成
$ ibmcloud ce persistentdatastore create --name my-cos-bucket-pds --cos-bucket-name cos-bucket --cos-access-secret my-hmac-secret

作成したシークレットはCode Engine上のシークレットとして保存され、アプリにHMACクレデンシャルの情報を載せずに利用することが可能です。

3. データストアをマウントしたアプリケーションの作成

続いて永続データストアをマウントしたアプリケーションmyappを作成します

永続データストアをマウントしたアプリケーションの作成
$ ibmcloud ce application create --name myapp --build-source https://github.com/r1ku2/icostest --mount-data-store /mnt/storage=my-cos-bucket-pds:

--mount-data-storeにはマウントするディレクトリとして/mnt/storageを指定し、マウント先として永続データストアのmy-cos-bucket-pdsを指定します。

補足

マウントするディレクトリはapp.pyにて指定しています。作成するアプリに合わせてマウントするディレクトリは変更してください。

app.py
STORAGE_PATH = "/mnt/storage"
TEXT_FILE_PATH = os.path.join(STORAGE_PATH, "user_input.txt")

4. アプリケーションへの接続テスト・ファイルの保存

IBM CloudポータルのCode Engine画面からアプリのURLにアクセスします

  1. IBM CloudポータルからCode Engineの作成したアプリケーションのページに移動
  2. 画面右上のアプリケーションのテストアプリケーションのURLを選択

作成したアプリを開くとWebサーバー上に表示されたWebアプリにアクセスすると、テキストボックスと「保存」ボタンの画面が表示されます。

image.png

実施にテキストを入力し、保存ボタンを押すとICOSに新しくuser_input.txtファイルが追加されていることが確認できます。

スクリーンショット_2025-08-04_15_28_28.png

このバケットは永続データストアとしてマウントされているため、Code Engineのアプリを閉じてゼロスケールした後もテキストファイルは削除されずに残っていることが確認できます。

まとめ

本稿ではCode EngineのICOSマウント機能を検証しました。

  • ICOSを永続ストレージとして利用可能
  • アプリがゼロスケール後もファイルが保持されることを確認
  • 容易にWebアプリからファイル操作が可能

新しい機能でCode Engineの構成の幅が広がったかと思いますのでぜひお試しください。

1
0
2

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