Что такое сигнатура метода лямбда, который получает лямбда InvokeInput? - PullRequest
0 голосов
/ 10 сентября 2018

Я бы хотел, чтобы мои две лямбды общались друг с другом.Lambda A использует InvokeInput, передавая полезную нагрузку, как показано в следующем примере:

https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/go/example_code/lambda/aws-go-sdk-lambda-example-run-function.go

Однако в примере не показана принимающая сторона, то есть Lambda B. Я пытаюсь получить доступPayload, поэтому я попробовал обработчик с сигнатурами методов:

func Handler(ctx context.Context, lambdaInput messages.InvokeRequest) (api.Response, error)

, а также

func Handler(ctx context.Context, lambdaInput lambda.InvokeInput) (api.Response, error)

При вызове lambdaInput.Payload в первом он возвращает []несмотря на то, что отправляется в качестве полезной нагрузки.

Я не могу найти документацию по этому вопросу, кто-нибудь знает правильную подпись, которую я должен использовать?

1 Ответ

0 голосов
/ 10 сентября 2018

Из документации AWS: https://docs.aws.amazon.com/lambda/latest/dg/go-programming-model-handler-types.html

Ниже перечислены действительные подписи обработчиков. TIn и TOut представляют типы, совместимые со стандартной библиотекой encoding / json. Для получения дополнительной информации см. Func Unmarshal, чтобы узнать, как эти типы десериализованы.

func ()
func () error
func (TIn), error
func () (TOut, error)
func (context.Context) error
func (context.Context, TIn) error
func (context.Context) (TOut, error)
func (context.Context, TIn) (TOut, error)

Так что это зависит от того, что находится в вашей полезной нагрузке. AWS попытается десериализовать ваши данные и сопоставить их с параметром TIn в вашей функции. Уже есть некоторые типы, которые представляют типы событий AWS, но в вашем случае вы должны написать свою собственную структуру. Проверьте ссылку для некоторых примеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...