2017-11-23 20 views
0

すべてのAWS IoT受信センサー値メッセージを同じs3バケットに送信しようとしていますが、バケット内のバージョニングをオンにしてもファイルは上書きされ続け、それらのすべてではなくセンサ値を入力します。私はAWS IoTコンソールから直接「Amazon S3バケットにメッセージをストアする」を使用しています。この問題を解決する簡単な方法はありますか?S3バケットは新しいデータオブジェクトを追加しません

答えて

0

AWS IoTで静的キーを使用しているため、ファイルを上書きすることになります。 はあなたが一意S3にデータを格納するためにkeyのparamを定義する方法を見てください:http://docs.aws.amazon.com/iot/latest/developerguide/s3-rule.html

キー:データが書き込まれるファイルのパス。たとえば、 の場合、この引数の値は "$ {topic()}/$ {timestamp()}"であり、メッセージが送信されたトピック は "this/is/my/topic"であり、現在の タイムスタンプが1460685389のデータは、Amazon S3の "this/is/my/topic"フォルダの "1460685389"というファイルに書き込まれます。

注:静的キーを使用すると、ルールの呼び出しごとにAmazon S3 の1つのファイルが上書きされます。より一般的には、 メッセージのタイムスタンプまたは別の一意のメッセージ 識別子を使用して、 メッセージごとに新しいファイルがAmazon S3に保存されるようにします。

+0

こんにちは萌え、それは1つの問題を解決するかもしれませんが、別のものを作成し、私の目標をdoesntアドレス。私は複数のファイルをS3に入れたくないので、すべてのデータオブジェクトを1つの添付ファイルにしたいので、Quicksightにリンクすることができます。私がDynamoテーブルDumpを実行すると、それらを同じファイルにタイムスタンプします。しかし、私はAWS IoTの "direct to S3"機能を使って、すべてのファイルを同じファイルに追加したいと考えています。カスタムラムダ関数を書く必要はありません。私はまた、DataPipelineを使用しないようにしていますが、AWSコンソールからS3関数を使用して直接行います。 –

+0

別々のファイルを作成したくない場合は、同じファイルを(バージョン管理を有効にして)上書きしていますが、最新のファイルのみが表示されます(当然のことですが)。 IoTからオブジェクトの以前のバージョンにアクセスしようとしていますか? – Moe

0

AmazonのDevサポートでさらに調査して話すと、実際にIoTコンソールからS3の同じファイルにレコードを追加することはできません。これは、IoT開発者のほとんどがデフォルトとして望む機能であり、今すぐには可能だが、今はできない可能性が高いと述べた。とにかく私がテストした最も簡単なワークアウトは、S3バケツにFirehoseでKinesisストリームを設定することです。これは調整可能なデータサイズとストリーム持続時間によって制約されますが、それ以外はうまくいきます。また、必要に応じて、データ変換用のLambda関数を挿入することもできます。

関連する問題