我想從 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. 選擇程式碼標籤。然後,在程式碼原始碼中,將下列發佈 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 主題時收到授權錯誤?