小编ang*_*led的帖子

AWS:通过 boto3 订阅 SNS 时,SQS 队列为空

通过 boto3 订阅 SNS 主题时,我没有在 SQS 队列中收到任何消息。

这是我使用的代码或 API 凭据的问题吗?与此账户关联的 IAM 策略具有 AWS PowerUser 权限,这意味着它可以不受限制地访问管理 SNS 主题和 SQS 队列。

当我通过 AWS 控制台创建等效结构(创建主题、创建队列、订阅主题队列)并使用 boto3、AWS CLI 或 AWS 控制台发送消息时,消息正确传递。

我不认为这是代码的问题,因为SubscriptionArn正确返回了?

我在 US-EAST-1 和 AP-SE-1 区域都尝试过这个,结果相同。

示例代码:

#!/usr/bin/env python3

import boto3
import json

def get_sqs_msgs_from_sns():
    sqs_client = boto3.client('sqs', region_name='us-east-1')
    sqs_obj = boto3.resource('sqs', region_name='us-east-1')
    sns_client = boto3.client('sns', region_name='us-east-1')
    sqs_queue_name = 'queue1'
    topic_name = 'topic1'

    # Create/Get Queue
    sqs_client.create_queue(QueueName=sqs_queue_name)
    sqs_queue = sqs_obj.get_queue_by_name(QueueName=sqs_queue_name)
    queue_url = sqs_client.get_queue_url(QueueName=sqs_queue_name)['QueueUrl']
    sqs_queue_attrs = sqs_client.get_queue_attributes(QueueUrl=queue_url,
                                                    AttributeNames=['All'])['Attributes']
    sqs_queue_arn = sqs_queue_attrs['QueueArn']
    if …
Run Code Online (Sandbox Code Playgroud)

python amazon-sqs amazon-web-services amazon-sns boto3

2
推荐指数
1
解决办法
3597
查看次数