AWS Lambda 関数から Amazon Simple notification Service (Amazon SNS) トピックにメッセージを発行したいと考えています。
解決方法
次の手順に従って、Lambda 関数を使用し Amazon SNS トピックにメッセージを送信してください。
**メモ:**この記事の例では Python ランタイムを使用していますが、お好みの Lambda ランタイムを使用できます。
1. Amazon SNS トピックを作成します。
2. Lambda 関数を作成します。
3. 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>"
}
]
}
4. 「コード」タブを選択します。次に、「コードソース」で、「Publish Boto3」 アクションの次のコードをコピーしてコードエディターに貼り付けます。
import json
import boto3
client = boto3.client('sns')
def lambda_handler(event, context):
response = client.publish(TopicArn='arn:aws:sns:<region>:<account-number>:<topic-name>',Message="Test message")
print("Message published")
return(response)
5. Lambda 関数をテストしてください。
Lambda 関数が Amazon Virtual Private Cloud (Amazon VPC) に接続されている場合は、次のいずれかを実行します。
Lambda 関数にインターネットアクセスが必要な場合は、必ずインターネットアクセスを許可していることを確認してください。詳細については、「Amazon VPC に接続されている Lambda 関数にインターネットアクセスを許可する方法」を参照してください。
-または-
プライベートネットワークの場合は、同じ VPC 内に Amazon SNS 用の Amazon VPC エンドポイントを作成します。詳細については、「Amazon SNS 用の Amazon VPC エンドポイントの作成」を参照してください。
関連情報
Lambda 関数を Amazon SNS トピックにサブスクライブしようとすると認証エラーが発生するのはなぜですか?