何をするか?
ここでは、CloudFormation (SAM) のテンプレートを使って、SNS トピックをサブスクライブする Lambda 関数を定義してみます。
サブスクライブ対象とする SNS トピック自体は、あらかじめ何らかの方法で作成済みであり、次のような ARN を取得できているものとします。
上記のような CloudFormation スタックが完成すると、マネージメントコンソールや CLI で SNS トピックのメッセージを発行して、Lambda 関数にイベントが届くことを確認できます。
テンプレートの記述例
次の SAM テンプレートでは、Lambda 関数を定義しつつ、そのイベントソースとして SNS トピックを設定しています。
イベントソースの指定は、実際には、SNS トピックに Lambda 関数をサブスクライブすることを意味しています。
SNS トピックの ARN は、入力パラメータ TopicArn
のデフォルト値として指定しています。
Lambda 関数の実装は InlineCode
としてテンプレートに埋め込んでいます。
ここでは、単純に第一引数 (event
) の内容を出力しています。
デプロイ
AWS CLI で次のように実行して、CloudFormation スタックを生成します。
もちろん、CloudFormation のマネージドコンソール(Web サイト)から実行しても構いません。
しばらく待つと、SNS トピックにサブスクライブされた Lambda 関数リソースが生成されます。
テスト実行
SNS トピックのマネージメントコンソールから「メッセージを発行」を実行すると、Lambda 関数は次のようなメッセージを受信します。
ちなみに、AWS CLI を使って SNS トピックにメッセージ発行 (publish) することもできます。
関連記事