内部クラスの入力タイプを使用してAWSラムダ関数を呼び出す

gerosalesc

ラムダ関数を次のように定義し、Amazonにアップロードしました。

@Override
public String handleRequest(Request input, Context context) {
    String template = "%s ${greeting}";
    StrSubstitutor ss = new StrSubstitutor(input.replaceables);
    String inputted = String.format(template, input.rawValues[0]);
    return ss.replace(inputted);
}

リクエストクラスの定義(内部クラス):

public class Request {
    String[] rawValues;
    HashMap<String, String> replaceables;

    public Request(){
        replaceables = new HashMap<String, String>();
    }

    //...getter and setters
}

次に、boto3から呼び出して、次の回答を取得します。

>>> client = boto3.client('lambda', 'us-west-2')
>>> resp = client.invoke(FunctionName='myfunction', InvocationType='RequestResponse', Payload="""{"rawValues": ["jero"], "replaceables": {"greeting": "world"}}""")
>>> resp['Payload'].read()
'{"errorMessage":"An error occurred during JSON parsing","errorType":"java.lang.RuntimeException","stackTrace":[],"cause":{"errorMessage":"com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor found for type [simple type, class mypackage.functions.Demo$Request]: can not instantiate from JSON object (missing default constructor or creator, or perhaps need to add/enable type information?)\\n at [Source: lambdainternal.util.NativeMemoryAsInputStream@735b478; line: 1, column: 2]","errorType":"java.io.UncheckedIOException","stackTrace":[],"cause":{"errorMessage":"No suitable constructor found for type [simple type, class mypackage.functions.Demo$Request]: can not instantiate from JSON object (missing default constructor or creator, or perhaps need to add/enable type information?)\\n at [Source: lambdainternal.util.NativeMemoryAsInputStream@735b478; line: 1, column: 2]","errorType":"com.fasterxml.jackson.databind.JsonMappingException","stackTrace":["com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:148)","com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1080)","com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:295)","com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:142)","com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:1441)","com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1047)"]}}}'

Amazonコンソールでテストすると表示される完全なエラー:

"cause": {
  "errorMessage": "No suitable constructor found for type [simple type, class mypackage.functions.Demo$Request]: can not instantiate from JSON object (missing default constructor or creator, or perhaps need to add/enable type information?)\n at [Source: lambdainternal.util.NativeMemoryAsInputStream@2c9f9fb0; line: 1, column: 4]",
  "errorType": "com.fasterxml.jackson.databind.JsonMappingException",
  "stackTrace": [
    "com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:148)",
    "com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1080)",
    "com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:295)",
    "com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:142)",
    "com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:1441)",
    "com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1047)"
  ]
}

したがって、返される主なエラーは、基本的にシリアル化されていないJSONの受信者を定義するRequestクラス定義に問題があると思わせることです"""{"rawValues": ["jero"], "replaceable": {"greeting": "world"}}"""ではドキュメント、地図のJavaタイプが入力タイプとしてサポートされていますが、私はこの作業を取得することができないことが述べられています。JSON辞書をJavaマップにマッピングするJava関数の例を知っていますか?

ComputerDruid

非静的内部クラスは、外部クラスのインスタンスの外部から構築することはできません。

次のように、内部クラス(Request)を静的にしてみてください

public static class Request {
    ...
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Golangのステップ関数を介してAWSラムダ関数を呼び出す

分類Dev

入力プロパティをサブスクライブして関数Angular2 +を呼び出す方法

分類Dev

サブプロセス:2つの入力リダイレクトを使用してプログラムを呼び出す

分類Dev

boto(2.49.0)ライブラリを使用してAWSラムダ関数を呼び出す方法は?

分類Dev

抽象ポインタを使用して派生クラス関数を呼び出す

分類Dev

AWS Lambda:boto3invokeを使用して別のAWSラムダから関数を呼び出す

分類Dev

コンストラクターは、現在のクラスタイプを使用している関数を呼び出しています

分類Dev

kotlin:複数のラムダを使用して高階関数を呼び出す

分類Dev

C ++関数ポインターを期待する暗黙のコンストラクター呼び出しにラムダを使用

分類Dev

ラムダ呼び出しを使用してパスパラメーターを別のラムダ関数に渡すことはできますか?

分類Dev

おそらくフロントエンドのユーザー入力から未知のJSONを取得し、ラムダaws関数を呼び出してdynamodbテーブルにデータを入力する方法はありますか?

分類Dev

ラムダ関数(A)からのn個の結果を使用して、Pythonで別のラムダプロセッサ関数(B)のn個の同時インスタンスを呼び出す方法は?

分類Dev

一意のポインタを使用して関数を呼び出すと、プログラムがクラッシュします

分類Dev

高階関数のパラメーターを使用してラムダを呼び出す

分類Dev

関数呼び出しを使用してパンダデータフレームに列を入力する

分類Dev

C#を使用してボタンにカスタムライブラリ関数を呼び出す

分類Dev

Pybind-派生クラスへの共有ポインタを使用して関数を呼び出す

分類Dev

SQSEventオブジェクトを使用して別の関数からawsラムダ関数を呼び出します

分類Dev

関数へのポインタを使用して、外部クラスのプライベートメソッドを呼び出すことができます

分類Dev

複数の入力ベクトルの値のデカルト積を使用してラムダを呼び出します

分類Dev

ステップ関数を介してラムダ関数を呼び出すときにラムダエイリアスを指定できますか?

分類Dev

引数を使用してjqueryプラグインの関数を呼び出す

分類Dev

プログラムに入力文字列を使用してCの関数を呼び出すように強制する

分類Dev

親クラスを使用して子関数を呼び出す

分類Dev

Javascriptを使用してPHPクラス関数を呼び出す

分類Dev

文字列を使用してクラス関数を呼び出す

分類Dev

クラスセレクターとjqueryライブラリを使用してテーブルの入力要素の値を呼び出す方法は?

分類Dev

モナドタイプを返す入力関数を使用してMap.mapWithKeyを呼び出す

分類Dev

モナドタイプを返す入力関数を使用してMap.mapWithKeyを呼び出す

Related 関連記事

  1. 1

    Golangのステップ関数を介してAWSラムダ関数を呼び出す

  2. 2

    入力プロパティをサブスクライブして関数Angular2 +を呼び出す方法

  3. 3

    サブプロセス:2つの入力リダイレクトを使用してプログラムを呼び出す

  4. 4

    boto(2.49.0)ライブラリを使用してAWSラムダ関数を呼び出す方法は?

  5. 5

    抽象ポインタを使用して派生クラス関数を呼び出す

  6. 6

    AWS Lambda:boto3invokeを使用して別のAWSラムダから関数を呼び出す

  7. 7

    コンストラクターは、現在のクラスタイプを使用している関数を呼び出しています

  8. 8

    kotlin:複数のラムダを使用して高階関数を呼び出す

  9. 9

    C ++関数ポインターを期待する暗黙のコンストラクター呼び出しにラムダを使用

  10. 10

    ラムダ呼び出しを使用してパスパラメーターを別のラムダ関数に渡すことはできますか?

  11. 11

    おそらくフロントエンドのユーザー入力から未知のJSONを取得し、ラムダaws関数を呼び出してdynamodbテーブルにデータを入力する方法はありますか?

  12. 12

    ラムダ関数(A)からのn個の結果を使用して、Pythonで別のラムダプロセッサ関数(B)のn個の同時インスタンスを呼び出す方法は?

  13. 13

    一意のポインタを使用して関数を呼び出すと、プログラムがクラッシュします

  14. 14

    高階関数のパラメーターを使用してラムダを呼び出す

  15. 15

    関数呼び出しを使用してパンダデータフレームに列を入力する

  16. 16

    C#を使用してボタンにカスタムライブラリ関数を呼び出す

  17. 17

    Pybind-派生クラスへの共有ポインタを使用して関数を呼び出す

  18. 18

    SQSEventオブジェクトを使用して別の関数からawsラムダ関数を呼び出します

  19. 19

    関数へのポインタを使用して、外部クラスのプライベートメソッドを呼び出すことができます

  20. 20

    複数の入力ベクトルの値のデカルト積を使用してラムダを呼び出します

  21. 21

    ステップ関数を介してラムダ関数を呼び出すときにラムダエイリアスを指定できますか?

  22. 22

    引数を使用してjqueryプラグインの関数を呼び出す

  23. 23

    プログラムに入力文字列を使用してCの関数を呼び出すように強制する

  24. 24

    親クラスを使用して子関数を呼び出す

  25. 25

    Javascriptを使用してPHPクラス関数を呼び出す

  26. 26

    文字列を使用してクラス関数を呼び出す

  27. 27

    クラスセレクターとjqueryライブラリを使用してテーブルの入力要素の値を呼び出す方法は?

  28. 28

    モナドタイプを返す入力関数を使用してMap.mapWithKeyを呼び出す

  29. 29

    モナドタイプを返す入力関数を使用してMap.mapWithKeyを呼び出す

ホットタグ

アーカイブ