我们可以通过检查Amazon SNS和Amazon SQS两者之间的订阅关系来解决此问题。首先,我们需要确保Amazon SNS和Amazon SQS都设置为同一可用区中。
此外,确保以下两点:
确保Amazon SNS订阅了正确的Amazon SQS队列ARN。我们可以在Amazon SQS中查找ARN并将其复制到Amazon SNS的主题订阅部分中。
确保队列订阅了正确的主题。我们可以在Amazon SQS控制台中找到队列并检查其订阅主题。如果它与Amazon SNS中的主题不匹配,则需要更新。
以下是Python代码示例,展示了如何通过Amazon SNS发送消息到Amazon SQS:
import boto3 sqs = boto3.resource('sqs') queue = sqs.get_queue_by_name(QueueName='queue_name') sns = boto3.client('sns') sns_topic_arn = 'arn:aws:sns:us-east-1:ACCOUNT_ID:myTopic' response = sns.subscribe(TopicArn=sns_topic_arn, Protocol='sqs', Endpoint=queue.attributes['QueueArn']) message = {'default': 'Hello from SNS!'} response = sns.publish( TopicArn=sns_topic_arn, Message=json.dumps({'default': json.dumps(message)}), MessageStructure='json' )
请将上述示例中的"queue_name"和"ACCOUNT_ID"分别替换为您自己的Amazon SQS队列名称和账户ID。