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
が出力されます。
詳しくは ライブラリについて を参照してください。