gpt4 book ai didi

SNS 中消息的正则表达式过滤

转载 作者:行者123 更新时间:2023-12-01 12:13:01 25 4
gpt4 key购买 nike

有没有办法根据 过滤消息正则表达式 或 AWS SNS 中的子字符串?

AWS Documentation for filtering messages提到了三种类型的字符串过滤:

  • 完全匹配(白名单)
  • 任何不匹配(黑名单)
  • 前缀匹配

  • 我想根据消息中的子字符串过滤掉消息,例如

    我有一个 S3 事件,它在向 S3 添加新对象时向 SNS 发送消息,消息内容如下:
    {
    "Records": [
    {
    "s3": {
    "bucket": {
    "name": "images-bucket"
    },
    "object": {
    "key": "some-key/more-key/filteringText/additionaldata.png"
    }
    }
    }
    ]
    }

    如果只有 我想保留消息过滤文本 存在于关键领域。

    备注 :整个消息由 S3 通知服务作为文本发送,因此 Records 不是 json 对象而是字符串。

    最佳答案

    从我在文档中看到的,您不能进行正则表达式匹配或子字符串,但您可以匹配前缀并在 MessageAttributes 字段中创建您自己的属性。

    为此,我将 S3 事件发送到一个简单的 Lambda,它添加了 MessageAttributes,然后发送到 SNS。

    实际上,S3 -> Lambda -> SNS -> 其他消费者(带过滤)。

    Lambda 可以执行以下操作(您必须以编程方式决定何时添加属性):

    let messageAttributes = {
    myfilterkey: {DataType: "String", StringValue:"filteringText"}
    };
    let params = {
    Message: JSON.stringify(payload),
    MessageAttributes: messageAttributes,
    MessageStructure: 'json',
    TargetArn: SNS_ARN
    };
    await sns.publish(params).promise();

    然后在 SNS 中您可以过滤:
    {"myfilterkey": ["filtertext"]}

    将 Lambda 放在那里似乎有点令人费解,但我喜欢能够从 SNS 动态插入和拔出消费者并使用过滤来确定谁得到什么的想法。

    关于SNS 中消息的正则表达式过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50328359/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com