Aws-lambda-using-lambda-function-with-amazon-sns

提供:Dev Guides
移動先:案内検索

Amazon SNSでLambda関数を使用する

Amazon SNSは、プッシュ通知に使用されるサービスです。 この章では、次のアクションを実行する例を使用して、AWS LambdaとAmazon SNSの動作を説明します-

  • SNSサービスでトピックを作成し、AWS Lambdaを使用してCloudWatchにトピックを追加する
  • 指定された電話番号でSNSテキストメッセージを送信します。

必要条件

SNSサービスでトピックを作成し、AWS Lambdaを使用してCloudWatchにトピックを追加するには、以下の手順に従う必要はありません-

  • SNSでトピックを作成
  • IAMでアクセス許可のロールを作成する
  • AWS Lambda関数を作成する
  • トリガーを有効にするためにトピックに公開する
  • CloudWatchサービスでメッセージの詳細を確認します。

与えられた電話番号でSNSテキストメッセージを送信するには、次を行う必要があります-

  • AWS Lambdaにコードを追加して、携帯電話にメッセージを送信します。

この例では、SNSにトピックを作成します。 発行するトピックに詳細が入力されると、AWS Lambdaがトリガーされます。 トピックの詳細はCloudWatchに記録され、AWS Lambdaによって電話でメッセージが送信されます。

ここに同じを説明する基本的なブロック図があります-

ブロック図Sns

SNSでトピックを作成

以下の手順に従って、SNSでトピックを作成する必要があります-

ステップ1

以下に示すように、AWSコンソールにログインし、AmazonのSNSサービスに移動します-

Amazon Snsサービス

ステップ2

[*簡易通知*サービス]をクリックし、*トピックを作成*します。

通知サービス

ステップ3

次に、次のように Create new topic ボタンをクリックする必要があります-

新しいトピック

ステップ4

  • トピック名*と*表示名*を入力し、*トピックの作成*をクリックします。 次のようにディスプレイにトピック名が表示されるはずです-

トピック名

IAMでアクセス許可のロールを作成する

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

ロールの許可

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

追加されたポリシー

AWS Lambda関数を作成する

このセクションでは、nodejsをランタイムとして使用してAWS Lambda関数を作成する方法を理解します。

この目的のために、AWSコンソールにログインし、AWSサービスからAWS Lambdaを選択します。 関数名、ロールの詳細などを追加し、示されているようにAWS Lambda関数を作成します。

ラムダの作成

SNSトリガーを追加

SNSトリガーを追加するには、示されているようにSNS構成の詳細を入力します-

Add Sns

次に、* SNSトピック*を選択し、トリガーをAWS Lambda関数に*追加*します。

Snsトピック

次に、以下に示す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にトピックを作成したことを思い出してください。 ここでトピックで公開し、AWS LambdaによってトリガーされるCloudWatchで詳細を確認します-

トピックに公開

最初に、公開するトピックの名前を選択します。 [トピックに公開]ボタンをクリックします-

トピックの公開

以下に示すように SubjectMessage の詳細を入力します-

メッセージの詳細

*JSON* メッセージ形式を選択して、 *JSON* スタイルで送信することもできます。 画面の最後にある[*メッセージを公開する]ボタンをクリックします。

CloudWatchサービスでメッセージの詳細を確認する

AWSコンソールにログインし、CloudWatchサービスを開きます。 左側のログをクリックして、作成されたAWS Lambda関数のログを選択します。 上記のように作成されたメッセージを含むログの次の表示を見つけることができます-

メッセージの確認

AWS Lambdaにコードを追加してメッセージを電話に送信する

ここでは、SNSテキストメッセージングを使用して、AWS Lambdaを使用して電話でメッセージを送信します。 次のコードを使用して、AWS Lambdaコードを次のように更新できます-

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);
      }
   });
};

メッセージの送信に使用するAWS SDKと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);
   }
});

ここでトピックを入力して、クラウドウォッチのメッセージと上記の電話番号を確認します。

トピックを入力

[メッセージを公開]をクリックして、メッセージを公開します。 次のように与えられた電話番号にメッセージが表示されます-

メッセージの公開