注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
ボリュームは、Compute Module のレプリカ内のコンテナ間でデータを共有する方法を提供します。ボリュームのサイズをコンテナのルートファイルシステムから独立させることで、ストレージをより効率的に利用できます。
ボリュームは一時的なものであり、レプリカの再起動をまたいでデータを保存しません。ボリュームのすべてのデータは、レプリカのライフサイクルに紐づいています。状態の永続化をボリュームに依存しないでください。
ボリュームは、異なるレプリカ間でデータを共有できません。各レプリカには、それぞれ独立したボリュームがあります。
すべてのボリュームは一時的なものであり、永続的なストレージとしての利用を意図していません。対応するボリュームの種類は、空のディレクトリとコンテンツディレクトリの2つです。
空のディレクトリボリュームは、レプリカの起動時に作成され、レプリカが存続する間存在します。初期状態では空です。このボリュームをマウントしたすべてのコンテナは、同じファイルを読み書きできます。レプリカが終了すると、コンテンツは削除されます。
同じレプリカ内のコンテナ間で実行時にデータを交換する必要がある場合は、空のディレクトリボリュームを使用します。
コンテンツディレクトリボリュームには、レプリカの起動時に、事前に定義されたファイルがあらかじめ読み込まれます。これは、環境固有の設定をアプリケーションコードから分離する場合に役立ちます。コンテンツディレクトリボリュームは読み取り専用です。
Compute Module を起動する前に、コンテンツを定義する必要があります。
コンテンツディレクトリボリュームのコンテンツの合計サイズは、100KB を超えることはできません。

ボリュームを空のディレクトリからコンテンツディレクトリに変更するには、次の手順を実行します。


ボリュームを作成した後、コンテナがそのボリュームにアクセスできるようにするには、コンテナにマウントする必要があります。

/mnt/data を指定します。
次の例では、オントロジーのオブジェクトを空のディレクトリボリュームにマウントし、同じレプリカ内での関数の実行をまたいでデータを保持する方法を示します。レプリカの起動時にボリュームに書き込みが行われ、それ以降の関数呼び出しでは、データを再読み込みする代わりにボリュームから読み取ります。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28from compute_modules.annotations import function import os import json # 次のコードはレプリカの起動時に実行されます # /mount/osdk は空のボリュームへのパスとして設定されました osdk_object = load_ontology_object() write_to_empty_volume("/mount/osdk", osdk_object) def load_ontology_object(): # オントロジーオブジェクトを読み込むコード # 実際の読み込みロジックに置き換えます return {"example_key": "example_value"} def write_to_empty_volume(path, obj): os.makedirs(os.path.dirname(path), exist_ok=True) with open(path, 'w') as f: json.dump(obj, f) def read_from_volume(path): with open(path, 'r') as f: return json.load(f) # 再読み込みする代わりにボリュームから読み込む関数 @function def use_object_set(ctx, event): osdk_object = read_from_volume("/mount/osdk") # 必要に応じて osdk_object を使用します
ボリュームを使用する際は、次の制限事項を確認してください。