App 是阿里雲批次運算新推出的一個功能,支援第三方軟體封裝成 App,供其他使用者使用。App 是批次運算中資源配置的模板,包括使用什麼鏡像,什麼執行個體類型,VM 個數等描述資訊。
查看 App
擷取 App 列表
擷取 App 參數
bcs a :cromwell # 查看詳情
bcs a 1 # 或者使用序號也一樣
查看 App 詳情
說明,只能查看私人的(自己建立的)App 詳情。 詳情包括軟體使用的鏡像,啟動並執行命令列等資訊。
bcs a my-app 0 # 查看第0個修訂版本的詳情
建立私人 App
使用 create_app|ca 命令建立私人 App。
使用命令:
bcs create_app|ca <app_name> <cmd> [option]
您可以加個 -h 查看協助 bcs ca -h
。
最簡單建立 App 的方法
bcs ca my_app "echo 123" -i img-ubuntu
您也可以使用另一種方式: 直接使用 app 描述檔案提交:
先準備一個 app 描述檔案: ./myapp.json
{
"Name": "myapp",
"EnvVars": {},
"Description": "",
"CommandLine": "echo 123",
"OutputParameters": {},
"VM": {
"ECSImageId": "img-ubuntu"
},
"Daemonize": false,
"InputParameters": {},
"Config": {
"InstanceCount": {
"Default": 1,
"Description": "",
"Overwritable": true
},
"ResourceType": {
"Default": "OnDemand",
"Description": "",
"Overwritable": true
},
"DiskType": {
"Default": "cloud_efficiency ",
"Description": "",
"Overwritable": true
},
"MaxRetryCount": {
"Default": 0,
"Description": "",
"Overwritable": true
},
"Timeout": {
"Default": 86400,
"Description": "",
"Overwritable": true
},
"MinDiskSize": {
"Default": 40,
"Description": "",
"Overwritable": true
},
"MinDataDiskSize": {
"Default": 100,
"Description": "",
"Overwritable": true
},
"DataDiskType": {
"Default": "cloud_efficiency ",
"Description": "",
"Overwritable": true
},
"DataDiskMountPoint": {
"Default": "/home/mount/",
"Description": "",
"Overwritable": true
},
"InstanceType": {
"Default": "",
"Description": "",
"Overwritable": true
}
}
}
然後通過命令提交:
還可以指定 option 覆蓋 app.json 中的配置:
bcs ca --file myapp.json -t ecs.s3.large
修改和刪除
bcs ua -h # 修改自訂 App 的說明
bcs da -h # 刪除自訂 App 的說明
請使用-h 查看協助。
提交 App 作業
使用 asub 命令快速使用 App 提交作業。
bcs asub <app_name> -h # 查看指定 App 提交作業的參數等, 每個 App 提交參數是不一樣的。
如: bcs asub cromwell -h
--input_
開頭的 option,用來指定 app 的 input 參數, 您也可以換成 --input-from-file_
開頭, 參數值如果是正確的本地檔案路徑,該檔案將被自動上傳到預設的 OSS 路徑下面。
--output_
開頭的 option,是用來指定 output 參數的。
另外還可以使用 --config
來指定 App config 中的參數,比如:
bcs asub <app_name> --config MinDataDiskSize=800,DataDiskType='cloud_efficiency',DataDiskMountPoint='/home/mount/' --input_input1 oss:
關於 App 的 config 參數詳情,請參考 App 的 API文檔。
對 cromwell 工作流程引擎和 WDL 的支援
批次運算服務提供了公用的 App: cromwell, 用來支援 WDL 編寫的工作流程。
您可以使用 gen 命令,快速建立特定的模板代碼。 目前(編寫此文檔時)支援 WDL 和 GATK 兩種模板。
舉例:
這個命令在目前的目錄下建立一個 demo 目錄,並產生一個簡單的 WDL 流程代碼。
demo
|-- src
|-- hello.wdl
|-- inputs.json
|-- options.json
|-- main.sh # 提交 App 作業的命令
|-- Readme.md # 新手必讀
修改 hello.wdl 和 main.sh 中的 OSS 路徑,運行 main.sh 提交作業即可。
同理支援 GATK,運行以下命令建立一個 GATK 工程範例: