我创建了一条规则,将发布的所有消息转发到任何主题,例如我的AWS IoT核心托管MQTT代理的foo / bar到S3存储桶中的嵌套文件夹。为此,我正在使用 key 部分。我可以将数据发送到嵌套文件夹,如a / b / c。问题是-它使用c作为目标文件,并且此文件在到达时会用新数据进行更新。有什么我可以做的配置,可以在数据到达时将数据存储在新文件中(带有任何随机名称)的存储桶中(类似于我们将数据从Firehose转发到S3时的情况)
答案 0 :(得分:1)
您可以更改您的键以使用newuuid()
功能。例如
a/b/${newuuid()}
这会将数据写入文件 a / b 中的文件中,该文件名是生成的UUID。
AWS IoT S3操作中的键允许您使用IoT SQL参考功能来形成文件夹和文件名。
写入数据的文件的路径。例如,如果此参数的值为“ $ {topic()} / $ {timestamp()}”,则消息发送到的主题为“ this / is / my / topic”,而当前时间戳为1460685389,数据将写入到Amazon S3上“ this / is / my / topic”文件夹中名为“ 1460685389”的文件中。
如果您不想使用时间戳,则可以使用其他功能来形成文件名,例如random float(rand()
),calculate a hash({{1 }}),UUID(md5()
)或trace id of the message(newuuid()
)。