cleanroom コマンド

Cleanroomを管理するためのコマンド群です。

サブコマンド:

cleanroom deploy

Cleanroomをデプロイします。

使用方法

apc cleanroom deploy \
  --source <function-id> \
  --name <cleanroom名> \
  --runtime <ランタイム> \
  --handler <ハンドラー> \
  --encrypted-files <入出力定義ファイルのパス> \
  --memory <メモリ容量> \
  --profile <プロファイル名>

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

引数

なし

オプション

--source <function-id>

Cleanroomで実行する関数ディレクトリのfunction-idを指定します。 function-storageコマンドでアップロードした関数ディレクトリのfunction-idを指定します。

--name <cleanroom名>

デプロイするCleanroomの名前を指定します。 名前は任意で指定できますが、すでに存在する名前を指定すると上書きされます。

--runtime <ランタイム>

Cleanroomのランタイムを指定します。 現在サポートしているランタイムは python3.10 のみです。

--handler <ハンドラー>

Cleanroomのハンドラーを指定します。 例えば functions/handler.py の run 関数を実行する場合は handler.run と指定します。 詳細については ../../user-files/index を参照してください。

--encrypted-files <入出力定義ファイルのパス>

入出力定義ファイルのパスを指定します。 入出力定義ファイルの仕様については ../../user-files/index を参照してください。

--memory <メモリ容量>

Cleanroomのメモリ容量を指定します。

現在サポートしているメモリ容量は 1GB, 2GB, 4GB, 8GB, 16GB, 32GB です。

ただし、利用可能なメモリ容量を超える場合は、以下のようなエラーが出ます。

$ apc cleanroom deploy --source 0qSLHMR-O5zFEi0upILG9wKZLZlaztAnwlEFAGN9FKw --name join_app --runtime python3.10 --handler join.main --memory 32 --profile acompany
Not enough EPC memory available
--profile <プロファイル名>

認証情報のプロファイル名を指定します。

正常終了時の出力例
$ 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.
異常終了時の出力例
# メモリ不足の場合
$ 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の一覧を表示します。

使用方法

apc cleanroom list \
    --profile <プロファイル名>

apc cleanroom list --profile acompany

引数

なし

オプション

--profile <プロファイル名>

認証情報のプロファイル名を指定します。

正常終了時の出力例
$ 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
    }
]
異常終了時の出力例
# 認証エラーの場合
$ 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を削除します。

使用方法

apc cleanroom delete <cleanroom名> \
    --profile <プロファイル名>

apc cleanroom delete join_app --profile acompany

引数

<cleanroom名>

削除するCleanroomの名前を指定します。

オプション

--profile <プロファイル名>

認証情報のプロファイル名を指定します。

正常終了時の出力例
$ apc cleanroom delete join_app --profile acompany
Deleted cleanroom: OK. CleanRoomName: join_app
異常終了時の出力例
# 存在しない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を削除します。

使用方法

apc cleanroom delete-all \
  --profile <プロファイル名>

apc cleanroom delete-all --profile acompany

引数

なし

オプション

--profile <プロファイル名>

認証情報のプロファイル名を指定します。

正常終了時の出力例
$ 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
異常終了時の出力例
# 削除処理中にエラーが発生した場合
$ 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の内部で関数を実行します。 入出力定義ファイルで定義された入力データが全てアップロードされている必要があります。

使用方法

apc cleanroom run <cleanroom名> \
  --profile <プロファイル名> \

apc cleanroom run join_app --profile acompany

引数

<cleanroom名>

実行するCleanroomの名前を指定します。

オプション

--profile <プロファイル名>

認証情報のプロファイル名を指定します。

正常終了時の出力例
$ 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
異常終了時の出力例
# 存在しない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 が出力されます。 詳しくは ライブラリについて を参照してください。