cleanroom コマンド ################ Cleanroomを管理するためのコマンド群です。 .. toctree:: :caption: サブコマンド: :maxdepth: 1 cleanroom-data .. _command-cleanroom-deploy: cleanroom deploy **************** Cleanroomをデプロイします。 使用方法 ======== .. code-block:: console apc cleanroom deploy \ --source \ --name \ --runtime <ランタイム> \ --handler <ハンドラー> \ --encrypted-files <入出力定義ファイルのパス> \ --memory <メモリ容量> \ --profile <プロファイル名> .. admonition:: 例 .. code-block:: console apc cleanroom deploy \ --source 0qSLHMR-O5zFEi0upILG9wKZLZlaztAnwlEFAGN9FKw \ --name join_app \ --runtime python3.10 \ --handler join.main \ --encrypted-files /path/to/encrypted_files.yaml \ --memory 2 \ --profile acompany 引数 ---------- なし オプション ---------- .. option:: --source Cleanroomで実行する関数ディレクトリのfunction-idを指定します。 function-storageコマンドでアップロードした関数ディレクトリのfunction-idを指定します。 .. option:: --name デプロイするCleanroomの名前を指定します。 名前は任意で指定できますが、すでに存在する名前を指定すると上書きされます。 .. option:: --runtime <ランタイム> Cleanroomのランタイムを指定します。 現在サポートしているランタイムは python3.10 のみです。 .. option:: --handler <ハンドラー> Cleanroomのハンドラーを指定します。 例えば functions/handler.py の run 関数を実行する場合は handler.run と指定します。 詳細については :doc:`../../user-files/index` を参照してください。 .. option:: --encrypted-files <入出力定義ファイルのパス> 入出力定義ファイルのパスを指定します。 入出力定義ファイルの仕様については :doc:`../../user-files/index` を参照してください。 .. option:: --memory <メモリ容量> Cleanroomのメモリ容量を指定します。 現在サポートしているメモリ容量は 1GB, 2GB, 4GB, 8GB, 16GB, 32GB です。 ただし、利用可能なメモリ容量を超える場合は、以下のようなエラーが出ます。 .. code-block:: console $ apc cleanroom deploy --source 0qSLHMR-O5zFEi0upILG9wKZLZlaztAnwlEFAGN9FKw --name join_app --runtime python3.10 --handler join.main --memory 32 --profile acompany Not enough EPC memory available .. option:: --profile <プロファイル名> 認証情報のプロファイル名を指定します。 .. dropdown:: 正常終了時の出力例 .. code-block:: console $ apc cleanroom deploy --source 0qSLHMR-O5zFEi0upILG9wKZLZlaztAnwlEFAGN9FKw --name join_app --runtime python3.10 --handler join.main --memory 2 --profile acompany Deploying cleanroom with the following parameters: Source: 0qSLHMR-O5zFEi0upILG9wKZLZlaztAnwlEFAGN9FKw Name: join_app Runtime: python3.10 Handler: join.main EncryptedFiles: /path/to/encrypted_files.yaml Memory(GB): 2 EPC Data: Total = 16 GB, Available = 14 GB FunctionStoragePath: fs://0qSLHMR-O5zFEi0upILG9wKZLZlaztAnwlEFAGN9FKw Creating worker with enclave size 2 GB... Worker created: worker_abc123 Waiting for worker to be ready... EPC Data: Total = 16 GB, Available = 12 GB CleanRoom deployed successfully. .. dropdown:: 異常終了時の出力例 .. code-block:: console # メモリ不足の場合 $ apc cleanroom deploy --source 0qSLHMR-O5zFEi0upILG9wKZLZlaztAnwlEFAGN9FKw --name join_app --runtime python3.10 --handler join.main --memory 20 --profile acompany Deploying cleanroom with the following parameters: Source: 0qSLHMR-O5zFEi0upILG9wKZLZlaztAnwlEFAGN9FKw Name: join_app Runtime: python3.10 Handler: join.main EncryptedFiles: /path/to/encrypted_files.yaml Memory(GB): 20 EPC Data: Total = 16 GB, Available = 14 GB Exception: Not enough EPC available. Requested: 20 GB, Available: 14 GB # 入出力定義ファイル読み込みエラーの場合 $ apc cleanroom deploy --source 0qSLHMR-O5zFEi0upILG9wKZLZlaztAnwlEFAGN9FKw --name join_app --runtime python3.10 --handler join.main --encrypted-files invalid.yaml --memory 2 --profile acompany Error during load work_def: [Errno 2] No such file or directory: 'invalid.yaml' cleanroom list ************** デプロイされたCleanroomの一覧を表示します。 使用方法 ======== .. code-block:: console apc cleanroom list \ --profile <プロファイル名> .. admonition:: 例 .. code-block:: console apc cleanroom list --profile acompany 引数 ---------- なし オプション ---------- .. option:: --profile <プロファイル名> 認証情報のプロファイル名を指定します。 .. dropdown:: 正常終了時の出力例 .. code-block:: console $ apc cleanroom list --profile acompany [ { "worker_id": "worker_abc123", "work_name": "join_app", "status": "ready", "created_at": "2024-01-15T10:30:00Z", "runtime_id": "python3.10", "handler": "join.main", "enclave_size": 2 }, { "worker_id": "worker_def456", "work_name": "analysis_app", "status": "running", "created_at": "2024-01-15T09:15:00Z", "runtime_id": "python3.10", "handler": "analysis.run", "enclave_size": 4 } ] .. dropdown:: 異常終了時の出力例 .. code-block:: console # 認証エラーの場合 $ apc cleanroom list --profile invalid_profile Exception: Authentication failed. Please check your credentials. # サーバー接続エラーの場合 $ apc cleanroom list --profile acompany Exception: Connection failed. Please check your server configuration. cleanroom delete **************** Cleanroomを削除します。 使用方法 ======== .. code-block:: console apc cleanroom delete \ --profile <プロファイル名> .. admonition:: 例 .. code-block:: console apc cleanroom delete join_app --profile acompany 引数 ---------- .. option:: 削除するCleanroomの名前を指定します。 オプション ---------- .. option:: --profile <プロファイル名> 認証情報のプロファイル名を指定します。 .. dropdown:: 正常終了時の出力例 .. code-block:: console $ apc cleanroom delete join_app --profile acompany Deleted cleanroom: OK. CleanRoomName: join_app .. dropdown:: 異常終了時の出力例 .. code-block:: console # 存在しないcleanroom名を指定した場合 $ apc cleanroom delete nonexistent_app --profile acompany Error during deleting cleanroom: CleanRoomName: nonexistent_app, Error: CleanRoom 'nonexistent_app' not found. # 認証エラーの場合 $ apc cleanroom delete join_app --profile invalid_profile Exception: Authentication failed. Please check your credentials. cleanroom delete-all ******************** すべてのCleanroomを削除します。 使用方法 ======== .. code-block:: console apc cleanroom delete-all \ --profile <プロファイル名> .. admonition:: 例 .. code-block:: console apc cleanroom delete-all --profile acompany 引数 ---------- なし オプション ---------- .. option:: --profile <プロファイル名> 認証情報のプロファイル名を指定します。 .. dropdown:: 正常終了時の出力例 .. code-block:: console $ apc cleanroom delete-all --profile acompany Deleted cleanroom: OK. CleanRoomName: join_app Deleted cleanroom: OK. CleanRoomName: analysis_app Deleted cleanroom: OK. Unknown cleanroom: Worker ID: worker_xyz789 .. dropdown:: 異常終了時の出力例 .. code-block:: console # 削除処理中にエラーが発生した場合 $ apc cleanroom delete-all --profile acompany Error during deleting all cleanroom: Error: Connection failed during deletion process. # 認証エラーの場合 $ apc cleanroom delete-all --profile invalid_profile Exception: Authentication failed. Please check your credentials. cleanroom run ************* Cleanroomの内部で関数を実行します。 入出力定義ファイルで定義された入力データが全てアップロードされている必要があります。 使用方法 ======== .. code-block:: console apc cleanroom run \ --profile <プロファイル名> \ .. admonition:: 例 .. code-block:: console apc cleanroom run join_app --profile acompany 引数 ---------- .. option:: 実行するCleanroomの名前を指定します。 オプション ---------- .. option:: --profile <プロファイル名> 認証情報のプロファイル名を指定します。 .. dropdown:: 正常終了時の出力例 .. code-block:: console $ apc cleanroom run join_app --profile acompany Start run cleanroom...: 'join_app' End run cleanroom...: 'join_app' Work status: running. Work status: running. Work status: completed. Message: Execution completed successfully .. dropdown:: 異常終了時の出力例 .. code-block:: console # 存在しないcleanroom名を指定した場合 $ apc cleanroom run nonexistent_app --profile acompany NotFoundError: CleanRoom 'nonexistent_app' not found. # 実行中にエラーが発生した場合 $ apc cleanroom run join_app --profile acompany Start run cleanroom...: 'join_app' End run cleanroom...: 'join_app' Work status: running. Work status: failed. Message: Execution failed due to runtime error # 認証エラーの場合 $ apc cleanroom run join_app --profile invalid_profile Exception: Authentication failed. Please check your credentials. また、ライブラリの import に失敗した場合は ``Failed to import module`` が出力されます。 詳しくは :ref:`ライブラリについて ` を参照してください。