首页 > 解决方案 > 使用clojure调用aws lambda函数的空指针异常?

问题描述

我正在尝试使用 clojure 中的 Amazonica 客户端将 json 对象放入 s3 存储桶中。当我调用我的 lambda 函数时,我得到了 NullPointerException。这是我的代码:

(ns clojurehandler.s3_clojure_handler
  (:gen-class
   :name "clojurehandler.S3ClojureHandler"
   :implements [com.amazonaws.services.lambda.runtime.RequestStreamHandler])
  (:require
            [clojure.java.io :as io]
            [clojure.data.json :as json]
            [amazonica.aws.s3 :as s3]))

(defn handle-event [event]
  (s3/put-object
            :bucket-name "bucket name"
            :key "original"
            :metadata {:server-side-encryption "AES256"}
            :file event)
  {:status 200})

(defn -handleRequest [this is os context]
  (handle-event is))

这是堆栈跟踪:

{
  "errorMessage": "java.lang.NullPointerException",
  "errorType": "java.lang.NullPointerException",
  "stackTrace": [
    "com.amazonaws.internal.SdkFilterInputStream.markSupported(SdkFilterInputStream.java:108)",
    "com.amazonaws.http.AmazonHttpClient.beforeRequest(AmazonHttpClient.java:471)",
    "com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:356)",
    "com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:329)",
    "com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:308)",
    "com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3659)",
    "com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1422)",
    "java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)",
    "java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)",
    "java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)",
    "java.base/java.lang.reflect.Method.invoke(Unknown Source)",
    "java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)",
    "java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)",
    "java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)",
    "java.base/java.lang.reflect.Method.invoke(Unknown Source)",
    "clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)",
    "clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)",
    "amazonica.core$fn_call$fn__457.invoke(core.clj:816)",
    "amazonica.core$intern_function$fn__485.doInvoke(core.clj:887)",
    "clojure.lang.RestFn.invoke(RestFn.java:619)",
    "clojurehandler.s3_clojure_handler$handle_event.invokeStatic(s3_clojure_handler.clj:16)",
    "clojurehandler.s3_clojure_handler$handle_event.invoke(s3_clojure_handler.clj:14)",
    "clojurehandler.s3_clojure_handler$_handleRequest.invokeStatic(s3_clojure_handler.clj:32)",
    "clojurehandler.s3_clojure_handler$_handleRequest.invoke(s3_clojure_handler.clj:31)",
    "clojurehandler.S3ClojureHandler.handleRequest(Unknown Source)"
  ]
}

谢谢

标签: amazon-web-servicesamazon-s3aws-lambdaclojure

解决方案


推荐阅读