通过 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)