我正在使用boto3创建一个主题,创建对该主题的订阅,然后确认该订阅,但是我对如何完成最后一部分有些困惑。
我的代码如下:
client = boto3.client('sns')
def create_topic():
topic = client.create_topic(Name='TopicName')
return topic['TopicArn']
def create_subscription(arn=''):
subscription = client.subscribe(
TopicArn=arn,
Protocol='https',
Endpoint='https://foo.com/endpoint'
ReturnSubscriptionArn=True
)
使用有效的topicArn运行create_subscription()
会给我以下响应正文:
{'SubscriptionArn': 'arn:aws:sns:eu-central-1:12345678911:foo:0e123205-b1f5-992b-9da1-340ace03a3ca',
'ResponseMetadata': {'RequestId': '1879a45a-7b1c-51bb-c65c-11d94111594c',
'HTTPStatusCode': 200,
'HTTPHeaders': {'x-amzn-requestid': '1937c57a-8b9a-51ba-b88d-56d88458533a',
'content-type': 'text/xml',
'content-length': '379',
'date': 'Tue, 19 Jun 2018 17:00:03 GMT'},
'RetryAttempts': 0}}
然后我认为我需要用来确认子项的令牌是元数据字典中的RequestId
键,即
token = response['ResponseMetadata']['RequestId']
resource = boto3.resource('sns')
topic = resource.Topic(TopicArn)
topic.confirm_subscription(
Token=token
)
但是通过以上操作,我得到了无效的令牌错误。
boto3文档仅说以下内容:
请求语法
subscription = topic.confirm_subscription( 令牌='字符串', AuthenticateOnUnsubscribe ='string')参数令牌(字符串)-[需要]
在“订阅”操作期间发送到端点的短时令牌。
https://boto3.readthedocs.io/en/latest/reference/services/sns.html#SNS.Topic.confirm_subscription
当它说“订阅动作”时,我认为它已在订阅正文中返回,即为什么我要执行上述操作
我在这里可能遗漏了一些明显的东西,但是我似乎无法确切了解到底是什么。