AWS Lambda 関数から Amazon Simple notification Service (Amazon SNS) トピックにメッセージを発行したいです。
解決策
次の手順を実行し、Lambda 関数を使用して Amazon SNS トピックにメッセージを送信します。
注: この記事の例では Python ランタイムを使用していますが、任意の Lambda ランタイムも使用できます。
-
Amazon SNS トピックを作成します。
-
Lambda 関数を作成します。
-
Lambda 関数において、Lambda 実行ロールに次のような SNS メッセージを発行するためのアクセス許可があることを確認します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublishSNSMessage",
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "arn:aws:sns:your-region:your-account-number:your-topic-name"
}
]
}
注: your-region、your-account-number、およびyour-topic-name を実際の変数に置き換えます。
-
Lambda の [関数] ページで [コード] タブを選択します。次に、[コードソース] で [Publish Boto3] アクションの次のコードをコピーしてコードエディタに貼り付けます。
import json
import boto3
client = boto3.client('sns')
def lambda_handler(event, context):
response = client.publish(TopicArn='arn:aws:sns:your-region:account-number:topic-name',Message="Test message")
print("Message published")
return(response)
-
Lambda 関数をテストします。
Lambda 関数が Amazon Virtual Private Cloud (Amazon VPC) に接続されている場合は、次のいずれかを実行します。
関連情報
Lambda 関数を Amazon SNS トピックにサブスクライブしようとすると認証エラーが発生するのはなぜですか?