2 ustawienia powodują lambda aws z golang

0

Pytanie

chcę wysłać 2 parametry, które są potrzebne лямбде do pracy, i jej w zasadzie nie trzeba wartości, które chcę znaleźć, a jako drugi parametr pole, w którym trzeba znaleźć tę wartość.

Teraz bez problemu byłem w stanie uzyskać dostęp do niektórych innych лямбдам, dla których potrzebny jest tylko jeden parametr z takim kodem.

func (s *resourceService) GetProject(ctx context.Context, name string) projectStruct {

    payload, err := json.Marshal(name)

    util.Logger.Debugf("Payload",payload)
    invokeOutput, err := s.lambdaSvc.Invoke(ctx, &lambda.InvokeInput{
        FunctionName:   &s.getProject,
        InvocationType: "RequestResponse",
        Payload: payload,

    })
    if err != nil {
        panic(err.Error())
    }
    var project projectStruct
    err = json.Unmarshal(invokeOutput.Payload, &project)
    if err != nil {
        panic(err.Error())
    }

    util.Logger.Debugf("Invocation output [%v]", invokeOutput)
    return project
}

teraz z 2 ustawieniami miałem wiele problemów, i próbowałem wiele różnych metod, począwszy od dodawania innych wartości ładunku, utworzyć ciąg z 2 wartościami i jej маршалирования, маршалирования obu parametrów i dodać je jako ładunku, nawet dodać oba tablicy маршалированных bajtów, ale nie byłem w stanie wysłać 2 opcji jako ładunku.

Czy wiesz, jak prawidłowo to zrobić? Proszę O Pomoc

aws-lambda go
2021-11-22 20:58:11
1

Najlepsza odpowiedź

0

Funkcji lambda biorą tylko jeden ładunek. W wersji 1 pakietu SDK AWS aby połączyć się wprowadzić wymagane jest jeden []byte parametr wyraża JSON, jak już wiesz.

Możesz uporządkować jedną ładowność Json tak, aby zawierał listę. Patrząc na twój przykład, masa użytkowa może wyglądać mniej więcej tak

["name","name"]

Można zmienić swój podpis tak:

func (s *resourceService) GetProject(ctx context.Context, names []string) projectStruct

json.Marshal może obsługiwać маршалинг cięcia tak samo dobrze, jak i elementy wewnątrz warstwy, dlatego pozostała część kodu nie trzeba zmieniać.

Oczywiście, przyjmująca funkcja musi uzgodnić schemat przesyłanych danych. Jeśli chcesz przejść od wiersza do listy wierszy, to będzie decydujące zmiany. Z tego powodu schematu Json zazwyczaj używają nazwane wartości zamiast скаляров.

[{ "Name": "Joan"},{"Name":"Susan"}]

Można dodać Age i Address nie naruszając funkcji odbioru (choć, oczywiście, ona będzie ignorować nowe pola, dopóki nie запрограммируете jej je zignorować).

Poświęć trochę czasu, aby zapoznać się z JSON - jest to prosty i wyrazisty standard kodowania, który jest prawidłowo obsługiwane jest wszędzie. JSON jest naturalnym wyborem dla kodowania danych strukturalnych w Go, ponieważ JSON dobrze integruje się z Go ze strukturami, mapami i fragmentami.

2021-11-22 23:47:47

Dziękuję za pomoc, mając to na uwadze, myślę, że będę korzystać z obiektu jako danych wejściowych i zmienić parametr lambda do pracy z nim
Julian Cisneros

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................