如何将数据从AWS IoT MQTT代理推送到S3存储桶中的随机文件

时间:2019-01-30 13:32:28

标签: amazon-s3 mqtt aws-iot amazon-kinesis-firehose

我创建了一条规则,将发布的所有消息转发到任何主题,例如我的AWS IoT核心托管MQTT代理的foo / bar到S3存储桶中的嵌套文件夹。为此,我正在使用 key 部分。我可以将数据发送到嵌套文件夹,如a / b / c。问题是-它使用c作为目标文件,并且此文件在到达时会用新数据进行更新。有什么我可以做的配置,可以在数据到达时将数据存储在新文件中(带有任何随机名称)的存储桶中(类似于我们将数据从Firehose转发到S3时的情况)

1 个答案:

答案 0 :(得分:1)

您可以更改您的以使用newuuid()功能。例如

a/b/${newuuid()}

这会将数据写入文件 a / b 中的文件中,该文件名是生成的UUID。

AWS IoT S3操作中的允许您使用IoT SQL参考功能来形成文件夹和文件名。

documentation for the key指出:

  

写入数据的文件的路径。例如,如果此参数的值为“ $ {topic()} / $ {timestamp()}”,则消息发送到的主题为“ this / is / my / topic”,而当前时间戳为1460685389,数据将写入到Amazon S3上“ this / is / my / topic”文件夹中名为“ 1460685389”的文件中。

如果您不想使用时间戳,则可以使用其他功能来形成文件名,例如random floatrand()),calculate a hash({{1 }}),UUIDmd5())或trace id of the messagenewuuid())。