首先,确保您的SNS主题已正确地订阅了SQS队列。
其次,检查主题是否使用正确的发布策略以将消息通过SNS传递到SQS队列。例如:
{ "Version": "2012-10-17", "Statement": [{ "Sid": "sns-publish-to-sqs", "Effect": "Allow", "Principal": "*", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-east-1:account-id:queue-name", "Condition": { "ArnEquals": {"aws:SourceArn": "arn:aws:sns:us-east-1:account-id:topic-name"} } }] }
最后,确保您的发布代码使用正确的主题ARN并设置了正确的消息属性。例如:
import boto3
sns = boto3.client('sns')
sqs = boto3.client('sqs')
response = sns.publish( TopicArn='arn:aws:sns:us-east-1:account-id:topic-name', Message='Hello world!', MessageAttributes={ 'my_attribute': { 'DataType': 'String', 'StringValue': 'my_value' } } )
print('Message sent: {}'.format(response['MessageId']))
在这个示例中,'TopicArn'参数和“Condition”设置必须匹配,以确保SNS主题能够将消息正确地路由到SQS队列。
∠