Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python AWS SNS-如何检索用于确认订阅的令牌_Python_Amazon Web Services_Boto3_Amazon Sqs_Amazon Sns - Fatal编程技术网

Python AWS 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 ) 根据报告: 要

我正在编写一个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 )
根据报告:

要实际创建订阅,端点所有者必须使用确认消息中的标记调用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= **????????????**
    )