2016-06-30 7 views
2

Я пытаюсь вызвать простую лямбда-функцию (функция лямбда печатает мир hello для консоли) с использованием ruby. Однако, когда я запускаю код и смотрю на панель инструментов swf. Я вижу следующую ошибку:Активность не может отправить ответ с данными размером более 32768 символов

Причина: Деятельность не может отправить ответ с данными размером более 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 

Благодарности

+1

Попробуйте изменить '' print '# {resp} "' 'to'''test''' (с одинарными кавычками) и посмотреть, все еще ошибки. –

+1

Просто обратите внимание: вам не нужно запускать задачу активности, которая выполняет функцию Lambda: SWF может запускать функцию Lambda напрямую, используя ['ScheduleLambdaFunction'] (http://docs.aws.amazon.com/amazonswf/ last/apireference/API_Decision.html) и ['ScheduleLambdaFunctionDecisionAttributes'] (http://docs.aws.amazon.com/amazonswf/latest/apireference/API_ScheduleLambdaFunctionDecisionAttributes.html). – Kobi

+0

Обходным решением, которое я бы предложил, является вызов метода @Signal с полученным ответом и заполнение его в вашем рабочем потоке, с которого вы звоните. – neo7

ответ

0

Согласно AWS документации вы не можете отправить ввода/результат набора данных размером более 32000 символов. Этот предел влияет на данные результата выполнения операций или рабочего процесса, входные данные при планировании задач активности или выполнения рабочего процесса, а также вход, отправленный с сигналом выполнения рабочего процесса.

Временное решение Для решения этой проблемы являются

  1. Использование AWS S3, чтобы загрузить и отправить сообщение путь сообщения S3 между деятельностью.
  2. Если вам нужна высокая эффективность, используйте Elasticache и сохраните значения и передайте ключи между действиями.
+0

Я не пытаюсь отправить данные в функцию лямбда. Все, что я пытаюсь сделать, это напечатать «hello world» на консоли, используя lambda. Так что функция не отправляет и не получает никаких данных –

 Смежные вопросы

  • Нет связанных вопросов^_^