日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

集成函數(shù)計(jì)算

更新時(shí)間:

云工作流支持通過(guò)工作流流程定義描述語(yǔ)言直接調(diào)用集成阿里云服務(wù)。本文介紹云工作流如何通過(guò)集成函數(shù)計(jì)算來(lái)調(diào)用函數(shù)。

背景信息

云工作流以不同類型的狀態(tài)(State)作為基礎(chǔ),基于狀態(tài)機(jī)模型描述業(yè)務(wù)的流程,結(jié)合用戶設(shè)置的API調(diào)用參數(shù),完成流程(Flow)中每一個(gè)步驟的執(zhí)行,最終完成整個(gè)工作流的執(zhí)行。

云工作流中成功的加入并調(diào)用指定函數(shù),需遵循編排規(guī)范。更多信息,請(qǐng)參見(jiàn)以下執(zhí)行步驟的示例信息。

步驟一:選擇狀態(tài)類型

在流程中加入一個(gè)Task類型的狀態(tài),然后根據(jù)Task類型的定義編排函數(shù)計(jì)算。

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: 調(diào)用函數(shù)示例
States:
  - Name: 調(diào)用函數(shù)示例
    Type: Task
    TaskMode: RequestComplete
    Action: FC:InvokeFunction
    Parameters:
      resourceArn: xxx
      invocationType: xxx
      body: xxx
    End: true

步驟二:配置調(diào)用參數(shù)

函數(shù)計(jì)算調(diào)用包含標(biāo)識(shí)函數(shù)資源的ARN,函數(shù)調(diào)用方式及函數(shù)調(diào)用參數(shù)三個(gè)主要的參數(shù)。詳細(xì)信息,如下表所示。

說(shuō)明

按照Spec規(guī)范,參數(shù)的名稱為小寫開(kāi)頭的駝峰格式。

參數(shù)名稱

是否必選

參數(shù)類型

參數(shù)說(shuō)明

resourceArn

String

函數(shù)資源的ARN,用于唯一標(biāo)識(shí)函數(shù)。

invocationType

Sync|Async

函數(shù)調(diào)用方式。

body

JSON對(duì)象或String等類型,最終通過(guò)序列化成字節(jié)數(shù)組的方式傳遞給被調(diào)用的函數(shù)。

函數(shù)執(zhí)行程序的Event入口參數(shù)。

示例代碼如下。

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: 同步調(diào)用函數(shù)示例
States:
  - Name: 同步調(diào)用函數(shù)示例
    Type: Task
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:::services/myService1.LATEST/functions/myFunction1
      invocationType: Sync
      body:
        testKey: 函數(shù)event中testKey參數(shù)包含的內(nèi)容
    Next: 異步調(diào)用函數(shù)示例
  - Name: 異步調(diào)用函數(shù)示例
    Type: Task
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:::services/myService2.LATEST/functions/myFunction2
      invocationType: Async
      body:
        key1: value1
        key2: value2
    End: true

步驟三:設(shè)置集成模式

Task狀態(tài)支持一種特殊的屬性TaskMode,即集成模式,用于定義當(dāng)前狀態(tài)對(duì)于API調(diào)用的處理行為。針對(duì)云工作流函數(shù)計(jì)算集成,目前支持以下三種類型的集成模式。

  • 請(qǐng)求響應(yīng)(RequestComplete)

    表示函數(shù)調(diào)用正常請(qǐng)求響應(yīng)返回之后即可進(jìn)行下一個(gè)步驟的執(zhí)行。該模式對(duì)函數(shù)的同步調(diào)用、異步調(diào)用和異步任務(wù)調(diào)用均有效。

  • 等待系統(tǒng)回調(diào)(WaitForSystemCallback)

    表示函數(shù)調(diào)用的請(qǐng)求完成之后,函數(shù)系統(tǒng)會(huì)發(fā)出系統(tǒng)回調(diào)通知。工作流接收到通知之后才會(huì)進(jìn)行下一個(gè)步驟的執(zhí)行。該模式僅對(duì)函數(shù)的異步調(diào)用和異步任務(wù)調(diào)用有效。

  • 等待用戶自定義回調(diào)(WaitForCustomCallback)

    表示函數(shù)調(diào)用請(qǐng)求完成之后,工作流會(huì)繼續(xù)保持等待狀態(tài),直到用戶程序主動(dòng)通過(guò)云工作流提供的回調(diào)通知API發(fā)送通知,云工作流接收到這一回調(diào)通知后,才會(huì)進(jìn)行后續(xù)步驟的執(zhí)行。該模式僅對(duì)函數(shù)的異步調(diào)用和異步任務(wù)調(diào)用有效。

關(guān)于函數(shù)調(diào)用的更多信息,請(qǐng)參見(jiàn)同步調(diào)用異步調(diào)用異步任務(wù)

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: 同步調(diào)用函數(shù)示例
States:
  - Name: 同步調(diào)用函數(shù)示例
    Type: Task
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:::services/myService1.LATEST/functions/myFunction1
      invocationType: Sync
      body:
        testKey: 函數(shù)event中testKey參數(shù)包含的內(nèi)容
    Next: 異步調(diào)用函數(shù)示例
  - Name: 異步調(diào)用函數(shù)示例
    Type: Task
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:::services/myService2.LATEST/functions/myFunction2
      invocationType: Async
      body:
        key1: value1
        key2: value2
    End: true

用戶需要在body參數(shù)下,增加一個(gè)自定義參數(shù) callbackToken ,并引用$Context.Current.TaskToken表達(dá)式。該表達(dá)式為回調(diào)任務(wù)執(zhí)行結(jié)果時(shí),必須使用的Token屬性。

步驟四:構(gòu)造調(diào)用參數(shù)

實(shí)際的流程編排中,需要根據(jù)工作流上下文,以及上一個(gè)流程狀態(tài)的結(jié)果來(lái)構(gòu)造當(dāng)前函數(shù)調(diào)用的參數(shù)。具體操作如下。

  • 可以利用Spec定義的一些保留字常量$Context$Input來(lái)訪問(wèn)流程中的數(shù)據(jù)。

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: 調(diào)用函數(shù)示例
States:
  - Name: 調(diào)用函數(shù)示例
    Type: Task
    TaskMode: RequestComplete
    Action: FC:InvokeFunction
    Parameters:
      resourceArn: acs:fc:::services/myService1.LATEST/functions/myFunction1
      invocationType: Sync
      body:
        argument1.$: $Input.input.BucketName
        argument2.$: $Input.input.TaskId
    End: true

步驟五:處理調(diào)用結(jié)果

每一個(gè)狀態(tài)的調(diào)用目的都是為整個(gè)流程服務(wù),在函數(shù)調(diào)用的場(chǎng)景下,當(dāng)我們完成調(diào)用之后,會(huì)返回執(zhí)行結(jié)果。用戶可以使用返回結(jié)果作為流程條件判斷語(yǔ)句,也可以作為下一個(gè)狀態(tài)的輸入。根據(jù)函數(shù)計(jì)算InvokeFunction - 調(diào)用函數(shù)API定義,函數(shù)返回結(jié)果類型為Byte,對(duì)應(yīng)實(shí)際的數(shù)據(jù)類型。函數(shù)內(nèi)部返回值可以是字符串JsonObject、JsonArray或者各種基礎(chǔ)數(shù)據(jù)類型。流程調(diào)用接收到返回結(jié)果之后,會(huì)統(tǒng)一將結(jié)果封裝成一個(gè)JsonObject,在工作流內(nèi)部封裝的結(jié)構(gòu)如下所示。

{
    "Body": "函數(shù)調(diào)用結(jié)果"
}

因此,您可以在工作流的描述中通過(guò)$Output.Body的JsonPath訪問(wèn)函數(shù)返回的結(jié)果。如果函數(shù)返回值本身是一個(gè)JsonObject類型,可以在工作流中直接調(diào)用內(nèi)建函數(shù)反序列化函數(shù)返回結(jié)果,按照J(rèn)sonObject的操作訪問(wèn)函數(shù)返回結(jié)果中的成員。

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
Description: ' '
StartAt: 調(diào)用函數(shù)示例1
States:
  - Name: 調(diào)用函數(shù)示例1
    Type: Task
    TaskMode: RequestComplete
    Action: FC:InvokeFunction
    Parameters:
      resourceArn: acs:fc:::services/myService1.LATEST/functions/myFunction1
      invocationType: Sync
      body:
        argument1.$: $Input.Records
        argument2.$: $Input.BucketName
    Next: 條件判斷
  - Type: Choice
    Name: 條件判斷
    Branches:
      - Condition: $Input.ObjectSize >= $Input.Threshold
        Next: 調(diào)用函數(shù)示例2
    Default: 不做動(dòng)作
  - Type: Pass
    Name: 不做動(dòng)作
    End: true
  - Name: 調(diào)用函數(shù)示例2
    Type: Task
    TaskMode: RequestComplete
    Action: FC:InvokeFunction
    Parameters:
      resourceArn: acs:fc:::services/myService2.LATEST/functions/myFunction2
      invocationType: Sync
      body:
        argument1.$: $Input.BucketName
        argument2.$: $Input.TaskId
    End: true

常見(jiàn)錯(cuò)誤定義

  • FC.ResourceThrottled:您的函數(shù)因?yàn)椴l(fā)度過(guò)高被限流。您所有的函數(shù)由一個(gè)總的并發(fā)度控制。Serverless 工作流執(zhí)行到任務(wù)類型節(jié)點(diǎn)時(shí)會(huì)同步調(diào)用函數(shù)計(jì)算,此數(shù)值與其他調(diào)用方式的并發(fā)度共用。您可以申請(qǐng)調(diào)整該值。

  • FC.ResourceExhausted:您的函數(shù)因?yàn)橘Y源不足被限流。當(dāng)出現(xiàn)這類錯(cuò)誤時(shí),請(qǐng)聯(lián)系我們。

  • FC.InternalServerError:函數(shù)計(jì)算出現(xiàn)系統(tǒng)錯(cuò)誤,請(qǐng)重新執(zhí)行流程。

  • FC.AccessDenied:禁止訪問(wèn),賬號(hào)權(quán)限不足。

  • FC.InvalidArgument:參數(shù)無(wú)效。

  • FC.EntityTooLarge:函數(shù)的入?yún)⑻蟆?/p>

注: 更多函數(shù)計(jì)算錯(cuò)誤類型,請(qǐng)參見(jiàn)錯(cuò)誤碼列表。