如何在调用并行Lambda函数的AWS Step Function上禁用(或重定向)日志记录

Tim*_*mbo 6 amazon-web-services aws-lambda aws-step-functions

我正在运行带有并行执行分支的AWS Step函数。

每个分支都单独成功,但是整个功能失败并显示以下错误:

States.DataLimitExceeded-状态/任务返回的结果大小超过了最大字符服务限制数。

然后,我从AWS上找到了一篇描述此问题的文章,并提出了以下解决方法:

https://docs.aws.amazon.com/step-functions/latest/dg/connect-lambda.html

那篇文章说:

Lambda调用API默认情况下在响应中包含日志。工作流中的多个Lambda调用会触发States.DataLimitExceeded错误。为避免这种情况,在调用Lambda函数时,请将“ LogType” =“ None”作为参数包含在内。

我的问题是在哪里正是我把它?我尝试将其放在状态机定义中的各个位置,但是出现以下错误:

步骤功能不支持“ LogType”字段

该错误似乎与支持文章相反,所以也许我做错了!

任何建议表示赞赏,在此先感谢!

干杯

更新1: 显然,这是一个并行函数,具有26个并行分支。每个分支的输出均较小,如下例所示。此数据中最大的项是LogResult,它(在对base64进行解码时)仅是账单信息。我认为此信息乘以26导致了错误,所以我只想关闭此LogResult!

{
  "ExecutedVersion": "$LATEST",
  "LogResult": "U1RBUlQgUmVxdWVzdElkOiBlODJjZTRkOS0zMjk2LTRlNDctYjcyZC1iYmEwMzI1YmM3MGUgVmVyc2lvbjogJExBVEVTVApFTkQgUmVxdWVzdElkOiBlODJjZTRkOS0zMjk2LTRlNDctYjcyZC1iYmEwMzI1YmM3MGUKUkVQT1JUIFJlcXVlc3RJZDogZTgyY2U0ZDktMzI5Ni00ZTQ3LWI3MmQtYmJhMDMyNWJjNzBlCUR1cmF0aW9uOiA3NzI5Ljc2IG1zCUJpbGxlZCBEdXJhdGlvbjogNzgwMCBtcwlNZW1vcnkgU2l6ZTogMTAyNCBNQglNYXggTWVtb3J5IFVzZWQ6IDEwNCBNQglJbml0IER1cmF0aW9uOiAxMTY0Ljc3IG1zCQo=",
  "Payload": {
    "statusCode": 200,
    "body": {
      "signs": 63,
      "nil": ""
    }
  },
  "SdkHttpMetadata": {
    "HttpHeaders": {
      "Connection": "keep-alive",
      "Content-Length": "53",
      "Content-Type": "application/json",
      "Date": "Thu, 21 Nov 2019 04:00:42 GMT",
      "X-Amz-Executed-Version": "$LATEST",
      "X-Amz-Log-Result": "U1RBUlQgUmVxdWVzdElkOiBlODJjZTRkOS0zMjk2LTRlNDctYjcyZC1iYmEwMzI1YmM3MGUgVmVyc2lvbjogJExBVEVTVApFTkQgUmVxdWVzdElkOiBlODJjZTRkOS0zMjk2LTRlNDctYjcyZC1iYmEwMzI1YmM3MGUKUkVQT1JUIFJlcXVlc3RJZDogZTgyY2U0ZDktMzI5Ni00ZTQ3LWI3MmQtYmJhMDMyNWJjNzBlCUR1cmF0aW9uOiA3NzI5Ljc2IG1zCUJpbGxlZCBEdXJhdGlvbjogNzgwMCBtcwlNZW1vcnkgU2l6ZTogMTAyNCBNQglNYXggTWVtb3J5IFVzZWQ6IDEwNCBNQglJbml0IER1cmF0aW9uOiAxMTY0Ljc3IG1zCQo=",
      "x-amzn-Remapped-Content-Length": "0",
      "x-amzn-RequestId": "e82ce4d9-3296-4e47-b72d-bba0325bc70e",
      "X-Amzn-Trace-Id": "root=1-5dd60be1-47c4669ce54d5208b92b52a4;sampled=0"
    },
    "HttpStatusCode": 200
  },
  "SdkResponseMetadata": {
    "RequestId": "e82ce4d9-3296-4e47-b72d-bba0325bc70e"
  },
  "StatusCode": 200
}
Run Code Online (Sandbox Code Playgroud)

小智 4

我最近遇到了和你完全相同的问题。你还没有说你的 lambda 正在做什么或返回什么,但我发现 AWS 指的是任务在执行中的限制https://docs.aws.amazon.com/step-functions/latest/dg/limits.html#service -限制任务执行

我发现我的特定 lambda 响应非常长,有数十万个字符。对此进行修改,使 lambda 的响应更加合理,从而克服了阶跃函数中的错误。