除了模板中的每個任務可以有輸出,模板也是可以有輸出的,其可用來呈現模板執行成功後得到的重要資料。另外,如果該模板作為子模板被嵌套時,父模板中嵌套該子模板的任務可以通過定義其任務輸出參數來對子模板的輸出進行引用,具體是通過ValueSelector篩選子模板的輸出參數名,以此獲得子模板的輸出值,而此值則會作為任務輸出參數的值,這樣父模板的其他任務就可以通過引用嵌套任務的輸出參數來達到對子模板輸出的引用。
模板輸出(Outputs)用於擷取模板執行後的關鍵資料,例如成功建立的資源ID。在嵌套情境中,它更充當著父模板與子模板之間資料傳遞的橋樑。父模板可以直接引用子模板的輸出,實現任務間的資料聯動。例如,父模板的一個任務可以擷取由子模板建立的ECS執行個體ID,然後將這個ID傳遞給後續任務,用以重啟該執行個體。
直接引用
您現在可以直接在模板輸出中引用任務的輸出,無需預先在任務中定義輸出參數。
單工作範本樣本:
FormatVersion: OOS-2019-06-01 Description: 執行單個API Tasks: - Name: ExecuteApi Action: ACS::ExecuteApi Description: 執行API Properties: Service: ecs API: DescribeRegions Parameters: RegionId: cn-hangzhou Outputs: LocalName: Type: String Value: '{{ ExecuteApi.Regions.Region[]?.LocalName }}'FormatVersion: OOS-2019-06-01 Description: 執行單個API Tasks: - Name: ExecuteApi Action: ACS::ExecuteApi Description: 執行API Properties: Service: ecs API: DescribeRegions Parameters: RegionId: cn-hangzhou Outputs: LocalName: Type: String Value: '{{ ExecuteApi.Regions.Region[]?.LocalName }}'在流程配置介面,系統會自動列出每個任務可供引用的輸出項。

可以看到任務輸出會展示出該任務能夠提供的任務輸出。
任務輸出預設為List

您可以在模板輸出這裡直接選擇對應的輸出。

如果有多個任務的話則可以分別選擇。

多工作範本樣本:
FormatVersion: OOS-2019-06-01 Description: 執行單個API Tasks: - Name: ExecuteApi Action: ACS::ExecuteApi Description: 執行API Properties: Service: ecs API: DescribeRegions Parameters: RegionId: cn-hangzhou Outputs: {} - Action: ACS::ECS::RunCommand Name: RunCommand Description: '' Properties: regionId: '{{ ACS::RegionId }}' commandType: RunPowerShellScript commandContent: |- ##### 可在指令碼開始運行時調用,列印當時的時間戳記及PID。 function job_start { $now = Get-Date -Format "yyyy-MM-dd HH:mm:ss" "[{0}][{1}] job_start" -f $now,$pid } ##### 如果傳回值為0,則認為此執行成功,如果非0,則認為執行失敗 job_start contentEncoding: PlainText workingDir: C:\\Windows\\System32 timeout: 600 enableParameter: false parameters: {} username: '' windowsPasswordName: '' maxRetryInterval: 300 Outputs: CommandOutput: Type: String Value: '{{ RunCommand.invocationOutput }}'{ "FormatVersion": "OOS-2019-06-01", "Description": "執行單個API", "Tasks": [ { "Name": "ExecuteApi", "Action": "ACS::ExecuteApi", "Description": "執行API", "Properties": { "Service": "ecs", "API": "DescribeRegions", "Parameters": { "RegionId": "cn-hangzhou" } }, "Outputs": {} }, { "Action": "ACS::ECS::RunCommand", "Name": "RunCommand", "Description": "", "Properties": { "regionId": "{{ ACS::RegionId }}", "commandType": "RunPowerShellScript", "commandContent": "##### 可在指令碼開始運行時調用,列印當時的時間戳記及PID。\nfunction job_start\n{\n $now = Get-Date -Format \"yyyy-MM-dd HH:mm:ss\"\n \"[{0}][{1}] job_start\" -f $now,$pid\n}\n\n##### 如果傳回值為0,則認為此執行成功,如果非0,則認為執行失敗\njob_start", "contentEncoding": "PlainText", "workingDir": "C:\\\\Windows\\\\System32", "timeout": 600, "enableParameter": false, "parameters": {}, "username": "", "windowsPasswordName": "", "maxRetryInterval": 300 } } ], "Outputs": { "CommandOutput": { "Type": "String", "Value": "{{ RunCommand.invocationOutput }}" } } }
定義引用
如果需要自訂的參數的話,參考如下內容
文法
模板輸出的值可以是模板內所有可被引用的參數的值。任務的輸出參數、偽參數以及模板Parameters部分定義的參數,它們的值均可被模板輸出參數引用並作為模板的輸出值。
單個輸出:
Outputs:
OutputParameterName: # 必填,參數名,有效字元為[a-zA-Z0-9_-],即英文半形字母數字底線中劃線,長度限制200個字元。
Type: String # 可選,YAML, JSON格式支援的基本類型String, Number, Boolean, List(Array),Object,預設String。
Value: "{{ TaskName.OutputParameterName }}" # 必填,參數值,通常為某個任務的輸出。{
"Outputs": {
"OutputParameterName": {
"Type": "String",
"Value": "{{ TaskName.OutputParameterName }}"
}
}
}多個輸出:
Outputs:
OutputParameterName1:
Type: String # 可選,YAML, JSON格式支援的基本類型String, Number, Boolean, List(Array),Object,預設String。
Value: "{{ TaskName1.OutputParameterName }}" # 必填,參數值,通常為某個任務的輸出。
OutputParameterName2: # 必填,參數名,有效字元為[a-zA-Z0-9_-],即英文半形字母數字底線中劃線,長度限制200個字元。
Type: String # 可選,YAML, JSON格式支援的基本類型String, Number, Boolean, List(Array),Object,預設String。
Value: "{{ TaskName2.OutputParameterName }}" # 必填,參數值,通常為某個任務的輸出。
OutputParameterName3: # 必填,參數名,有效字元為[a-zA-Z0-9_-],即英文半形字母數字底線中劃線,長度限制200個字元。
Type: String # 可選,YAML, JSON格式支援的基本類型String, Number, Boolean, List(Array),Object,預設String。
Value: "{{ TaskName3.OutputParameterName }}" # 必填,參數值,通常為某個任務的輸出。{
"Outputs": {
"OutputParameterName1": {
"Type": "String",
"Value": "{{ TaskName1.OutputParameterName }}"
},
"OutputParameterName2": {
"Type": "String",
"Value": "{{ TaskName2.OutputParameterName }}"
},
"OutputParameterName3": {
"Type": "String",
"Value": "{{ TaskName3.OutputParameterName }}"
}
}
}