SNS(Amazon Simple Notification Service)を利用して「Lambda A」から「Lambda B」を起動する方法を確認します。
作るもの

LambdaからSNSのTopicにメッセージを送信して、別のLambdaを起動します。
SNSの用語
Topic- 論理アクセスポイント
- 通信チャネルとして機能
Subscription- 通知宛先や通知方法の定義
- pub-sub
Publish- トピックにメッセージを送信
Subscribe- トピックを購読
Publisher- 発行者
Subscriber- 受信者
Lambda作成

管理コンソールからLambda関数を2つ作りました。
「sns-publisher」
「sns-subscriber」
SNS
Topicの作成

トピックの作成をクリックします。

今回はTestTopicという名前でトピックを作成します。
Subscriptionの作成

作成したトピックのサブスクリプションを作成します。

プロトコルにLambdaを選択します。

エンドポイントに先ほど作成したLambda関数( sns-subscriber )を選択します。
サブスクリプションの作成をクリックします。

サブスクリプションを作成したことで、Lambda関数( sns-subscriber )のトリガにSNSが表示されるようになりました。
動作確認
( 管理コンソールからPublish )
前準備
Lambda関数( sns-subscriber )の処理を以下のようにします。
exports.handler = async (event) => {
console.log(JSON.stringify(event, null, 4))
}確認

メッセージの発行をクリックして、トピックへメッセージを発行します。

Lambda関数( sns-subscriber )が実行されました。
console.log(JSON.stringify(event, null, 4))の出力結果です。
動作確認
( LambdaからPublish )
前準備
Lambda関数( sns-publisher )の処理を以下のようにします。
const AWS = require('aws-sdk')
exports.handler = async (event) => {
const params = {
Message: 'This is test message from sns-publisher.',
TopicArn: 'arn:aws:sns:ap-northeast-1:XXXXXXXXXXXX:TestTopic'
}
const createTopicPromise = new AWS.SNS().publish(params).promise()
await createTopicPromise.then((data) => {
console.log('MessageID is ' + data.MessageId)
}).catch((err) => {
console.error(err, err.stack)
})
}
Amazon SNSの権限も付与しておきます。
確認

Lambda関数( sns-publisher )を実行すると、Topicにメッセージが送信され、Lambda関数( sns-subscriber )が実行されました。
console.log(JSON.stringify(event, null, 4))の出力結果です。