Python AWS SNS-如何检索用于确认订阅的令牌
我正在编写一个python 3.7脚本,将SNS消息定向到SQS队列。 创建队列和主题后,我尝试通过调用SNS.subscribe将SQS队列订阅到SNS主题:Python AWS SNS-如何检索用于确认订阅的令牌,python,amazon-web-services,boto3,amazon-sqs,amazon-sns,Python,Amazon Web Services,Boto3,Amazon Sqs,Amazon Sns,我正在编写一个python 3.7脚本,将SNS消息定向到SQS队列。 创建队列和主题后,我尝试通过调用SNS.subscribe将SQS队列订阅到SNS主题: sns = boto3.client('sns') subscription = sns.subscribe( TopicArn=sns_topic, Protocol='sqs', Endpoint=sqs_queue_arn, ReturnSubscriptionArn=True ) 根据报告: 要
sns = boto3.client('sns')
subscription = sns.subscribe(
TopicArn=sns_topic,
Protocol='sqs',
Endpoint=sqs_queue_arn,
ReturnSubscriptionArn=True )
根据报告:
要实际创建订阅,端点所有者必须使用确认消息中的标记调用ConfirmSubscription操作
的文档要求从订阅呼叫中获取令牌:
通过验证由早期订阅操作发送到端点的令牌,验证端点所有者接收消息的意图
问题是,第一次调用subscribe不会请求,也不会返回令牌
知道如何检索令牌吗?任何帮助都将不胜感激 我发现没有这个必要 我没有从SNS主题获取SQS队列上的消息的原因是,它缺少步骤2中所述的权限 请注意,如果SNS主题和SQS队列不在同一个帐户中,则处理确认是不同的,如前所述,我目前使用的是boto3(1.16.52)、Django(3.1.5)和python dotenv(0.15.0)。我可以在我的POST controller中用这个小脚本确认订阅
#将主体从JSON中的请求转换为python dict(这里是令牌)
data=json.loads(request.body)
#从boto3访问SNS
sns=boto3.资源('sns',地区名称='us-east-1')
#使用python dotenv从my.env文件访问我的主题的arn
#(您可以从AWS控制台获得它,类似于arn:AWS:sns:region:number:topic)
sns\u arn=os.getenv(“sns\u arn”)
#获取主题
topic=sns.topic(sns\u arn)
#确认支持
如果data.keys()中的“令牌”:
主题.确认订阅(令牌=数据[“令牌”])
打印(“确认成功”,flush=True)
很高兴您找到了答案。在您的案例中,由于您使用了SQS,确认由AWS自动处理。如果您在AWS外部有一个电子邮件或https端点,AWS将向该端点发送一条带有令牌的消息,该端点将进行confirm\u subscription
调用。见谢谢@bimsapi。为了便于记录,我不会删除这个问题
sns.confirm_subscription(
TopicArn=sns_topic,
Token= **????????????**
)