【问题标题】:Activity cannot send a response with data larger than 32768 charactersActivity 无法发送数据超过 32768 个字符的响应
【发布时间】:2016-11-03 03:10:31
【问题描述】:

我正在尝试使用 ruby​​ 调用一个简单的 lambda 函数(lambda 函数将 hello world 打印到控制台)。但是,当我运行代码并查看 swf 仪表板时。我看到以下错误:

原因:Activity 无法发送数据超过 32768 个字符的响应。请限制响应的大小。您可以查看 Activity Worker 日志以查看原始响应。

有人可以帮我解决这个问题吗?

代码如下:

require 'aws/decider'
require 'aws-sdk'

class U_Act
extend AWS::Flow::Activities
activity :b_u do
    {
        version: "1.0"
    }
end

def b_u(c_id)
    lambda=Aws::Lambda::Client.new(
    region: “xxxxxx”
    access_key_id: “XxXXXXXXXXX”,
    secret_access_key: “XXXXXXXXXX”
        )
        resp = lambda.invoke(
    function_name: “s_u_1” # required
    )
        print "#{resp}"
end

谢谢

【问题讨论】:

  • 尝试将print "#{resp}" 更改为'test'(带单引号),看看是否仍然出错。
  • 请注意:您不必运行运行 Lambda 函数的活动任务:SWF 可以直接启动 Lambda 函数,使用 ScheduleLambdaFunctionScheduleLambdaFunctionDecisionAttributes
  • 我建议的解决方法是使用收到的响应调用 @Signal 方法,并将其填充到您调用的工作流中。

标签: ruby amazon-web-services amazon-swf aws-lambda


【解决方案1】:

根据 AWS 文档,您不能发送大于 32,000 个字符的输入/结果数据集。此限制影响活动或工作流执行结果数据、调度活动任务或工作流执行时的输入数据以及随工作流执行信号发送的输入。

解决此问题的解决方法是

  1. 使用 AWS S3 上传消息并在活动之间发送 S3 消息的路径。
  2. 如果您需要高性能,请使用 Elasticache 并存储值并在活动之间传递键。

【讨论】:

  • 我不想向 lambda 函数发送任何数据。我要做的就是使用 lambda 在控制台上打印“hello world”。所以该函数不会发送或接收任何数据
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-22
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
  • 2017-08-12
  • 2013-07-11
  • 1970-01-01
相关资源
最近更新 更多