はじめに
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へのファイル保存と永続性を確認します。
以下の図は構成概要です
実施する手順は以下の通りです
- HMACシークレットの登録
- 永続データストアの作成
- データストアをマウントしたアプリケーションの作成
- アプリの動作確認とファイル保存テスト
事前準備
以下は事前に準備してあるものとします。
- 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```として登録します。
$ ibmcloud ce secret create --name my-hmac-secret --format hmac --secret-access-key-prompt --access-key-id-prompt
アクセス・キーID: ()>
秘密アクセス・キー: ()>
アクセス・キーID・秘密アクセス・キーは事前に作成したHMACクレデンシャルの中にあるaccess_key_id
とsecret_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にて指定しています。作成するアプリに合わせてマウントするディレクトリは変更してください。
STORAGE_PATH = "/mnt/storage"
TEXT_FILE_PATH = os.path.join(STORAGE_PATH, "user_input.txt")
4. アプリケーションへの接続テスト・ファイルの保存
IBM CloudポータルのCode Engine画面からアプリのURLにアクセスします
- IBM CloudポータルからCode Engineの作成したアプリケーションのページに移動
- 画面右上のアプリケーションのテスト → アプリケーションのURLを選択
作成したアプリを開くとWebサーバー上に表示されたWebアプリにアクセスすると、テキストボックスと「保存」ボタンの画面が表示されます。
実施にテキストを入力し、保存ボタンを押すとICOSに新しくuser_input.txtファイルが追加されていることが確認できます。
このバケットは永続データストアとしてマウントされているため、Code Engineのアプリを閉じてゼロスケールした後もテキストファイルは削除されずに残っていることが確認できます。
まとめ
本稿ではCode EngineのICOSマウント機能を検証しました。
- ICOSを永続ストレージとして利用可能
- アプリがゼロスケール後もファイルが保持されることを確認
- 容易にWebアプリからファイル操作が可能
新しい機能でCode Engineの構成の幅が広がったかと思いますのでぜひお試しください。