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メッセージを公開します。次のような電話番号のメッセージが表示されます-