购买号码后,如何用Python boto3 SDK配置Pinpoint双向SMS并关联SNS主题至Lambda
使用Python Boto3配置Pinpoint双向SMS
核心操作逻辑
购买号码后,要实现将收到的短信转发至后端Lambda,需通过Pinpoint的update_phone_number API把号码关联到指定SNS主题,同时确保SNS主题具备接收Pinpoint消息的权限。
具体步骤与代码
1. 初始化Boto3客户端
确保已安装boto3库,初始化Pinpoint和SNS客户端:
import boto3 # 替换为你的AWS区域 region = "us-east-1" pinpoint_client = boto3.client("pinpoint", region_name=region) sns_client = boto3.client("sns", region_name=region)
2. 关联号码与SNS主题
调用update_phone_number接口,开启双向SMS并绑定目标SNS主题ARN:
# 替换为你的Pinpoint号码ID和SNS主题ARN phone_number_id = "你的Pinpoint号码ID" sns_topic_arn = "arn:aws:sns:us-east-1:123456789012:你的主题名称" response = pinpoint_client.update_phone_number( PhoneNumberId=phone_number_id, PhoneNumberRequest={ "TwoWayEnabled": True, "TwoWayChannelArn": sns_topic_arn } ) print("配置完成后的号码信息:", response["PhoneNumberResponse"])
提示:
PhoneNumberId可通过list_phone_numbersAPI查询获取,该接口会返回你账号下所有Pinpoint号码的详细信息。
3. 配置SNS主题权限
必须给Pinpoint服务授予向SNS主题发布消息的权限,可通过代码或AWS控制台配置:
sns_client.add_permission( TopicArn=sns_topic_arn, Label="PinpointPublishAccess", AWSAccountId=["你的AWS账号ID"], ActionNames=["sns:Publish"] )
也可以直接在SNS主题的访问策略中添加以下规则:
{ "Effect": "Allow", "Principal": { "Service": "pinpoint.amazonaws.com" }, "Action": "sns:Publish", "Resource": "你的SNS主题ARN" }
4. 验证配置结果
通过get_phone_number API检查号码的双向SMS配置状态:
check_response = pinpoint_client.get_phone_number(PhoneNumberId=phone_number_id) print("当前双向SMS状态:", check_response["PhoneNumberResponse"]["TwoWayEnabled"]) print("关联的SNS主题:", check_response["PhoneNumberResponse"]["TwoWayChannelArn"])
注意事项
- 确保操作使用的IAM角色拥有
pinpoint:UpdatePhoneNumber、sns:AddPermission等权限; - Pinpoint号码与SNS主题必须处于同一AWS区域;
- 最后需在Lambda控制台配置SNS主题作为触发器,确保收到的短信能流转到Lambda处理。
内容的提问来源于stack exchange,提问作者Deepak Marur
相关产品推荐
相关产品推荐

