2017-03-22 11 views
2

私はいくつかのラムダがSNSを通じて協力しています。 1つのラムダが要求を受信し、SNSにデータを送信します。別のラムダはSNSにサブスクライブされています。 JSオブジェクトだけの着信メッセージとしてJavaScriptで行うのは簡単でした。今私はラムダをJavaに書き直しています。私は、ハンドラで使用する型を探しています。AWSでSNSメッセージを処理する方法Javaで書かれたLambda?

はここで、λは次のようになります。 SNSMessageは型のプレースホルダです。

public class ArchiveRequestHandler implements RequestHandler<SNSMessage?, Void> { 

    @Override public Void handleRequest(SNSMessage? input, Context context) { 
     // do something with the message 
     return null; 
    } 
} 

これは、例えばメッセージがどのように見えるかされています

{ 
    "Records": [ 
    { 
     "EventVersion": "1.0", 
     "EventSubscriptionArn": "arn:aws:sns:EXAMPLE", 
     "EventSource": "aws:sns", 
     "Sns": { 
     "SignatureVersion": "1", 
     "Timestamp": "1970-01-01T00:00:00.000Z", 
     "Signature": "EXAMPLE", 
     "SigningCertUrl": "EXAMPLE", 
     "MessageId": "1234567-ee98-5cb9-9903-4c221d41eb5e", 
     "Message": "Hello from SNS!", 
     "MessageAttributes": { 
      "Test": { 
      "Type": "String", 
      "Value": "TestString" 
      }, 
      "TestBinary": { 
      "Type": "Binary", 
      "Value": "TestBinary" 
      } 
     }, 
     "Type": "Notification", 
     "UnsubscribeUrl": "EXAMPLE", 
     "TopicArn": "arn:aws:sns:EXAMPLE", 
     "Subject": "TestInvoke" 
     } 
    } 
    ] 
} 

今、私はこれを解析するために自分のタイプを作成することができます確信しているが、私はこれを行うためのより標準的な方法がある期待していました。しかし、私はこのオブジェクトのように見えるラムダやSNS SDK依存関係に何も見つかりませんでした。

+0

はそれを自分自身を試していないが、この回答は参考になりましたか? http://stackoverflow.com/a/32768081/611819 – dnault

+0

http://docs.aws.amazon.com/lambda/latest/dg/with-sns-create-package.html ..メッセージを受け取るためにこの例を参照してくださいSNSeventオブジェクトから – notionquest

+0

@notionquestありがとう!その答えは、pojoのサポートライブラリがあるということです。 – sm4

答えて

5

@dnaultのコメントのおかげで、私はこのオブジェクトがaws-lambda-java-eventsライブラリの一部であることがわかった@notionquest。私は、依存関係を追加しました:

compile 'com.amazonaws:aws-lambda-java-events:1.3.0' 

そして今、私が行うことができます。

public class ArchiveRequestHandler implements RequestHandler<SNSEvent, Void> { 

    @Override public Void handleRequest(SNSEvent input, Context context) { 
     // do something with the message 
     return null; 
    } 
} 
+0

これが正解であれば、それを受け入れてください。 – jarmod

+0

@jarmodです。しかし、私は2日待つ必要がありますhttps://stackoverflow.blog/2009/01/06/accept-your-own-answers/ – sm4

+0

あなたの答えのより高度な説明がありますか? JSONオブジェクトの場合、どこにメッセージを渡しますか?あなたはどのようにそれにアクセスしますか? – Khan

関連する問題