确认过滤条件是否正确。有时,遗漏了必要的过滤条件参数,或者过滤条件语法错误,会导致过滤条件无效。在 AWS Lambda 控制台中,检查订阅配置,以确保过滤条件正确。
测试你的 Lambda 函数和 SNS 主题。如果订阅您的 SNS 主题并使用(仅)过滤条件,可以尝试通过发布到此主题来测试此主题。在这种情况下,请确保发布到主题的每个消息都包含此主题的过滤条件中,已指定的属性。
根据过滤条件更改发布到 SNS 主题的信息。如果您已订阅 SNS 主题,并且将 Lambda 函数配置为仅处理特定属性,则您可以在 SNS 主题上发布的每个消息中添加您想要处理的属性值。
示例代码:
以下示例说明如何使用 AWS SDK for Python(即 Boto 3),将 SNS 主题作为事件源,修改 Lambda 函数,以仅处理指定属性的 SNS 主题消息。
import boto3
import json
client = boto3.client('sns')
def lambda_handler(event, context):
filter_policy = {"attribute": ["value1", "value2"]}
response = client.subscribe(
TopicArn='arn:aws:sns:us-east-1:123456789012:myTopic',
Protocol='lambda',
Endpoint='arn:aws:lambda:us-east-1:123456789012:function:myLambdaFunction',
Attributes={
"FilterPolicy": json.dumps(filter_policy)
})
print(response)