簡體   English   中英

AWS S3存儲和架構

[英]AWS S3 storage and schema

我有一個IOT傳感器,它將以下消息發送到IoT MQTT Core主題:

{"ID1":10001,"ID2":1001,"ID3":101,"ValueMax":123}

我添加了ACT / RULE,它將傳入的消息存儲在帶有時間戳作為鍵的S3存儲桶中(每個消息作為單獨的文件/行存儲在存儲桶中)。

我以前只使用過SQL數據庫,因此像這樣存儲它們對我來說是新的。

1)這是使用S3存儲的正確方法嗎?

2)如何可視化架構中的值而不是單獨的文件?

3)我正在嘗試從S3存儲桶創建ML數據源,但是當Amazon ML嘗試創建架構時,出現以下錯誤:

“ Amazon ML無法檢索模式。如果您剛剛創建了此數據源,請稍等片刻,然后重試。”

感謝所有的建議!

1)這是使用S3存儲的正確方法嗎?

僅使用一個傳感器,在IoT規則中使用[timestamp]( https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html#iot-function-timestamp函數將是一種S3中命名唯一對象的方法,但是可能會出現問題。

  1. 如果傳感器不止一個,則可能有多個消息在同一時間戳到達,這將不會在S3中生成唯一的對象名稱。

  2. 幾乎同一時間的時間戳將具有相似的前綴,以這種方式設計S3密鑰可能無法在更高的消息速率下為您提供最佳性能。

由於您使用的是MQTT,因此可以使用traceId函數而不是時間戳來避免出現這兩個問題。

2)如何可視化架構中的值而不是單獨的文件?

3)我正在嘗試從S3存儲桶創建ML數據源,但是當Amazon ML嘗試創建架構時,出現以下錯誤:

對於第三個問題,我認為您可能會遇到ML中的數據格式問題,因為S3對象包含消息中的JSON數據而不是CSV。

對於第二個問題,我認為您正在嘗試將連續消息中的消息數據合並為CSV,或者至少將消息數據輸出為CSV文件的一行。 我認為僅使用Iot SQL語言是不可能的,因為它旨在產生JSON。

一種替代方法是使用Lambda操作配置IoT SQL規則,並使用lambda函數將JSON轉換為CSV,然后將CSV寫入S3存儲桶。 如果您朝這個方向發展,則可能需要在調用lambda時使用時間戳(或traceId)來豐富IoT消息數據。

select timestamp() as timestamp, traceid() as traceid, concat(ID1, ID2, ID3, ValueMax) as values, * as message將生成JSON之類的規則

{"timestamp":1538606018066,"traceid":"abab6381-c369-4a08-931d-c08267d12947","values":[10001,1001,101,123],"message":{"ID1":10001,"ID2":1001,"ID3":101,"ValueMax":123}}

可以直接將其用作來自其values屬性的數據的CSV行的源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM