Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lambda invoke response is parsed to JSON automatically #254

Open
itai-spiritt opened this issue Feb 26, 2024 · 0 comments
Open

Lambda invoke response is parsed to JSON automatically #254

itai-spiritt opened this issue Feb 26, 2024 · 0 comments

Comments

@itai-spiritt
Copy link

itai-spiritt commented Feb 26, 2024

Dependencies

             com.cognitect.aws/api            {:mvn/version "0.8.692"}
             com.cognitect.aws/endpoints      {:mvn/version "1.1.12.504"}
             com.cognitect.aws/lambda         {:mvn/version "848.2.1413.0"}

Description with failing test case

Executing a lambda for a datomic query (proxy) that the response is a vector results in an error.

(aws/invoke lambda {:op :InvokeWithResponseStream
                          :request {:FunctionName "datomic-query"
                                    :Payload
                                    (json/write-str {:query (str '[:find ?name :where [_ :app/name ?name]])})}})

Analyzing the response, you can see the request has succeeded.
My guess is that it fails parsing the vector response as a json?

(-> (aws/invoke lambda {:op :InvokeWithResponseStream
                          :request {:FunctionName "datomic query"
                                    :Payload
                                    (json/write-str {:query (str '[:find ?name :where [_ :app/name ?name]])})}})
      meta
      :http-response
      :body
      .readAllBytes
      String.
      )

; "���F���Z�s���:event-type��\fPayloadChunk\r:content-type���application/octet-stream\r:message-type���event[[\"app-1\"],[\"app-2\"],[\"test\"],[\"app-3\"],[\"another-test\"],[\"app-4\"]]�%�n���f���T�V�i�:event-type���InvokeComplete\r:content-type���application/json\r:message-type���event{}p��g"

Stack traces

{:cognitect.anomalies/category :cognitect.anomalies/fault, :cognitect.aws.client.impl/throwable #error {:cause "No matching clause: 0"
                                                                                                        :via
                                                                                                        [{:type java.lang.IllegalArgumentException
                                                                                                          :message "No matching clause: 0"
                                                                                                          :at [clojure.data.json$next_token invokeStatic "json.clj" 321]}]
                                                                                                        :trace
                                                                                                        [[clojure.data.json$next_token invokeStatic "json.clj" 321]
                                                                                                         [clojure.data.json$next_token invoke "json.clj" 317]
                                                                                                         [clojure.data.json$_read invokeStatic "json.clj" 406]
                                                                                                         [clojure.data.json$_read invoke "json.clj" 404]
                                                                                                         [clojure.data.json$_read1 invokeStatic "json.clj" 453]
                                                                                                         [clojure.data.json$_read1 invoke "json.clj" 451]
                                                                                                         [clojure.data.json$read_str invokeStatic "json.clj" 547]
                                                                                                         [clojure.data.json$read_str doInvoke "json.clj" 539]
                                                                                                         [clojure.lang.RestFn invoke "RestFn.java" 439]
                                                                                                         [cognitect.aws.shape$json_parse invokeStatic "shape.clj" 152]
                                                                                                         [cognitect.aws.shape$json_parse invoke "shape.clj" 149]
                                                                                                         [cognitect.aws.protocols.rest$parse_body invokeStatic "rest.clj" 252]
                                                                                                         [cognitect.aws.protocols.rest$parse_body invoke "rest.clj" 244]
                                                                                                         [cognitect.aws.protocols.rest$parse_http_response invokeStatic "rest.clj" 265]
                                                                                                         [cognitect.aws.protocols.rest$parse_http_response invoke "rest.clj" 258]
                                                                                                         [cognitect.aws.protocols.rest_json$eval24310$fn__24311 invoke "rest_json.clj" 41]
                                                                                                         [clojure.lang.MultiFn invoke "MultiFn.java" 239]
                                                                                                         [cognitect.aws.client.impl$handle_http_response invokeStatic "impl.clj" 30]
                                                                                                         [cognitect.aws.client.impl$handle_http_response invoke "impl.clj" 24]
                                                                                                         [cognitect.aws.client.impl$send_request$fn__23586$state_machine__18197__auto____23615$fn__23618 invoke "impl.clj" 87]
                                                                                                         [cognitect.aws.client.impl$send_request$fn__23586$state_machine__18197__auto____23615 invoke "impl.clj" 83]
                                                                                                         [clojure.core.async.impl.ioc_macros$run_state_machine invokeStatic "ioc_macros.clj" 972]
                                                                                                         [clojure.core.async.impl.ioc_macros$run_state_machine invoke "ioc_macros.clj" 971]
                                                                                                         [clojure.core.async.impl.ioc_macros$run_state_machine_wrapped invokeStatic "ioc_macros.clj" 976]
                                                                                                         [clojure.core.async.impl.ioc_macros$run_state_machine_wrapped invoke "ioc_macros.clj" 974]
                                                                                                         [clojure.core.async.impl.ioc_macros$take_BANG_$fn__18215 invoke "ioc_macros.clj" 985]
                                                                                                         [clojure.core.async.impl.channels.ManyToManyChannel$fn__12101$fn__12102 invoke "channels.clj" 100]
                                                                                                         [clojure.lang.AFn run "AFn.java" 22]
                                                                                                         [java.util.concurrent.ThreadPoolExecutor runWorker "ThreadPoolExecutor.java" 1144]
                                                                                                         [java.util.concurrent.ThreadPoolExecutor$Worker run "ThreadPoolExecutor.java" 642]
                                                                                                         [clojure.core.async.impl.concurrent$counted_thread_factory$reify__11970$fn__11971 invoke "concurrent.clj" 29]
                                                                                                         [clojure.lang.AFn run "AFn.java" 22]
                                                                                                         [java.lang.Thread run "Thread.java" 1589]]}}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant