8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS LambdaのSNSとの連携について

Last updated at Posted at 2015-12-15

Lambdaは今年の4月のアップデートでSNSと連携できるようになりました。
今回、下記のようなLambdaとSNSとの連携方法について、説明します。

Untitled (1).png

LambdaとSNSの連携の流れ

LambdaとSNSの連携は下記の流れになります。

  1. Lambdaの登録
  2. SNSのSubscriptionのEndpointとして、1で登録したLambdaを指定

わずか2ステップで連携できるので、簡単ですね。

1. Lambdaの登録

まずは何はともあれ、Lambdaに登録しましょう。
下記はSNSのイベントを取得して、topicARN毎に処理を行うサンプルです。

lambda.scala
import com.amazonaws.services.lambda.runtime.{ Context, RequestHandler }
import com.amazonaws.services.lambda.runtime.events.SNSEvent

import scala.collection.JavaConverters._

object LambdaFunctionHandler extends RequestHandler[SNSEvent, String] {

  //SNSとの連携はinputとして、SNSEventを指定するだけでOK
  def handleRequest(input: SNSEvent, context: Context): String = {

    // SNSのtopicArnを取得
    val snsRecordHead = input.getRecords.asScala.headOption
    val topicArn = snsRecordHead.get.getSNS.getTopicArn

    //取得したtopicArn毎に処理を何か処理を行う
  }
}
build.sbt
//kinesis sdkを追加
libraryDependencies ++= Seq(
  "com.amazonaws" % "aws-java-sdk-kinesis" % "1.0.0",
)

SNSと連携する際の注意点として、inputとして、SNSEventを指定しましょう。
後はsbt assemblyしてLambdaに登録するjarファイルを作成するだけです。

$ sbt clean assembly

Lambdaの登録画面にて下記の内容にて登録

スクリーンショット 2015-12-15 14.32.02.png
  • Name: < lambdaの名前 >

  • Description: SNS連携用Lambda

  • Runtime: Java8

  • Code entry type: Upload a .ZIP fileを選択し、上記で作成したjarファイルを指定

  • Handler: com.hoge.LambdaFunctionHandler::handleRequest

  • Role:< Lambda用のrole >

  • Memory: 512MB

  • Timeout: 1min

これでLambdaの準備は完了です。

2. SNSの作成

SNSでsubscriptionのEndpointを1で作成したLambdaに指定して作成します。
SNSの管理画面で下記の内容で作成します。

スクリーンショット 2015-12-15 14.29.03.png
  • create new topicを選択
    • Topic name: Lambda
    • Display name: Lambda
スクリーンショット 2015-12-15 14.36.51.png
  • create subscriptionを選択
    • Protocol: AWS Lambda
    • Endpoint: < 1で作成したLambdaの名前を指定 >
    • version: default

作成したTopicにメッセージを送信すると、登録したLambdaが実行されます。

まとめ

SNSとの連携が可能になったことにより、他のAWSサービスとLambdaとの連携がさらに容易になりました。
例えば、あるサービスをCloudWatchで監視し、特定の閾値を超えた際にSNSに通知、SNSがLambdaを実行といった事が可能になります。
いっそう便利になったLambdaでより楽しいAWS生活がおくれそうですね。

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?