Aws-lambda-using-lambda-function-with-amazon-sns
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でトピックを作成する必要があります-
ステップ1
以下に示すように、AWSコンソールにログインし、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構成の詳細を入力します-
次に、* SNSトピック*を選択し、トリガーをAWS Lambda関数に*追加*します。
次に、以下に示す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で詳細を確認します-
トピックに公開
最初に、公開するトピックの名前を選択します。 [トピックに公開]ボタンをクリックします-
以下に示すように Subject と Message の詳細を入力します-
*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);
}
});
ここでトピックを入力して、クラウドウォッチのメッセージと上記の電話番号を確認します。
[メッセージを公開]をクリックして、メッセージを公開します。 次のように与えられた電話番号にメッセージが表示されます-