代码之家  ›  专栏  ›  技术社区  ›  grinferno

sns:如何获取令牌以使用boto确认订阅?

  •  1
  • grinferno  · 技术社区  · 6 年前

    我正在使用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
        )
    

    跑步 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 输入元数据dict,即。

    token = response['ResponseMetadata']['RequestId']
    
    resource = boto3.resource('sns')
    topic = resource.Topic(TopicArn)
    topic.confirm_subscription(
        Token=token
    )
    

    但在上面我得到一个无效的令牌错误。

    boto3医生只是说:

    请求语法

    subscription=topic.confirm_订阅( Token='string', AuthenticateOnUnsubscribe='string')参数标记(string)--[必需]

    在订阅操作期间发送到终结点的短期令牌。

    https://boto3.readthedocs.io/en/latest/reference/services/sns.html#SNS.Topic.confirm_subscription

    当它说“Subscribe action”时,我假设它是在Subscribe主体中返回的,即为什么我要执行上述操作

    我错过了一些很明显的东西,但我似乎不知道到底是什么。

    0 回复  |  直到 6 年前