AmazonSNSでLambda関数を使用する
Amazon SNSは、プッシュ通知に使用されるサービスです。この章では、次のアクションを実行する例を使用して、AWSLambdaとAmazonSNSの動作について説明します。
SNSサービスでトピックを作成し、AWSLambdaを使用してCloudWatchにトピックを追加します
指定された電話番号でSNSテキストメッセージを送信します。
必要条件
SNSサービスでトピックを作成し、AWS Lambda Add TopicsをCloudWatchに使用するには、以下の手順に従う必要はありません。
- SNSでトピックを作成する
- IAMで権限のロールを作成する
- AWSLambda関数を作成する
- トピックに公開してトリガーをアクティブ化する
- CloudWatchサービスでメッセージの詳細を確認してください。
指定された電話番号でSNSテキストメッセージを送信するには、次の手順を実行する必要があります。
- AWS Lambdaにコードを追加して、電話にメッセージを送信します。
例
この例では、SNSでトピックを作成します。公開するトピックに詳細が入力されると、AWSLambdaがトリガーされます。トピックの詳細はCloudWatchに記録され、AWSLambdaによって電話でメッセージが送信されます。
これは同じことを説明する基本的なブロック図です-

SNSでトピックを作成する
SNSでトピックを作成するには、以下の手順に従う必要があります-
ステップ1
AWSコンソールにログインし、以下に示すようにAmazonのSNSサービスにアクセスします-

ステップ2
クリック Simple Notification サービスと Create topic 初期化。

ステップ3
次に、クリックする必要があります Create new topic 示されているボタン-

ステップ4
入力します Topic name そして Display name をクリックします Create topic。次のように、ディスプレイにトピック名が表示されます。

IAMで権限のロールを作成する
AWS LambdaおよびSNSサービスと連携するロールを作成するには、AWSコンソールにログインする必要があります。次に、AmazonサービスからIAMを選択し、以下に示すように左側からロールをクリックします。

SNS、Lambda、CloudWatchのポリシーが追加されていることを確認してください。ロール名を追加し、[ロールの作成]ボタンをクリックして、ロール作成のプロセスを完了します。

AWSLambda関数を作成する
このセクションでは、nodejsをランタイムとして使用してAWSLambda関数を作成する方法を理解しましょう。
この目的のために、AWSコンソールにログインし、AWSサービスからAWSLambdaを選択します。関数名、ロールの詳細などを追加し、図のようにAWSLambda関数を作成します。

SNSトリガーを追加する
SNSトリガーを追加するには、次のようにSNS設定の詳細を入力します-

次に、 SNS topic そして Add 示されているように、AWSLambda関数へのトリガー-

次に、以下に示すAWSラムダコードを追加します-
exports.handler = function(event, context, callback) {
console.log("AWS lambda and SNS trigger ");
console.log(event);
const sns = event.Records[0].Sns.Message;
console.log(sns)
callback(null, sns);
};
上記のコードでは、 event.Records[0].Sns.Message追加されたメッセージの詳細を示します。CloudWatchで表示するためにコンソールログを追加しました。ここで、必要なメモリと時間の割り当てを使用してLambda関数を保存します。
トピックに公開してトリガーをアクティブ化する
ステップ1でSNSですでにトピックを作成したことを思い出してください。トピックで公開し、AWSLambdaによってトリガーされるCloudWatchで詳細を確認します-
トピックに公開
まず、公開するトピックの名前を選択します。クリックPublish to topic ボタン−

入力します Subject そして Message 以下に示す詳細-

選択することもできます JSON 送信するメッセージ形式 JSONスタイル。クリックPublish the message 画面の最後にあるボタン。
CloudWatchServiceでメッセージの詳細を確認する
AWSコンソールにログインし、CloudWatchサービスを開きます。左側のログをクリックして、作成されたAWSLambda関数のログを選択します。上記のように作成されたメッセージを含むログの次の表示を見つけることができます-

AWS Lambdaにコードを追加して、電話にメッセージを送信します
ここでは、SNSテキストメッセージングを使用して、AWSLambdaを使用して電話でメッセージを送信します。次のコードを使用して、AWSLambdaコードを次のように更新できます-
const aws = require("aws-sdk");
const sns = new aws.SNS({
region:'us-east-1'
});
exports.handler = function(event, context, callback) {
console.log("AWS lambda and SNS trigger ");
console.log(event);
const snsmessage = event.Records[0].Sns.Message;
console.log(snsmessage);
sns.publish({
Message: snsmessage,
PhoneNumber: '+911212121212'
}, function (err, data) {
if (err) {
console.log(err);
callback(err, null);
} else {
console.log(data);
callback(null, data);
}
});
};
メッセージの送信に使用するAWSSDKとSNSサービスを追加しました。SNSからのイベントからのメッセージは、指定された電話番号にテキストメッセージとして送信されます。
たとえば、次のコードを確認してください。
sns.publish({
Message: snsmessage,
PhoneNumber: '+911212121212'
}, function (err, data) {
if (err) {
console.log(err);
callback(err, null);
} else {
console.log(data);
callback(null, data);
}
});
今すぐトピックを入力して、cloudwatchのメッセージと上記の電話番号を確認してください。

クリック Publish messageメッセージを公開します。次のような電話番号のメッセージが表示されます-
