2017-12-14 25 views
1

は、私がダウンプレフィックスと番号に来る構造を持つ名前で保存されたファイルの数千人と数千人を持っている:与えられたプレフィックスの最新の接頭辞ごとにS3オブジェクトのキー名を照会する方法はありますか? S3バケットで

A-0001 
A-0002 
A-0003 
B-0001 
B-0002 
C-0001 
C-0002 
C-0003 
C-0004 
C-0005 

新しいオブジェクトが変化する周波数で来るかもしれませんが、必要がありますない。古いオブジェクトは消えるかもしれません。

すべてのプレフィックスのうち最も高い数のS3を効率的にクエリする方法はありますか。私が望む結果は次のとおりです:

A-0003 
B-0002 
C-0005 

S3 API自体は、それに使えるものを提供していないようです。しかし、おそらく別のサービス、アテナのように、それを行うことができますか?これまでのところ、私はオブジェクト内で検索することしかできませんでしたが、私が気にするのはキー名です。バケット内のオブジェクトの内容を報告できる場合は、バケット自体ではできませんか?

私は接頭辞ごとに最新の修正日を付けても問題ありませんが、これを達成するために接頭辞だけを付けてバージョン管理されたバケットに切り替える必要はありません。

+0

はこのヘルプのようになります。https:// stackoverflow .com/questions/45429556/how-list-amazon-s3-bucket-contents-by-modified-date? – jarnohenneman

+0

@ jamohenneman私は恐れていません。接頭辞ごとの最新の修正日も問題ありませんが、特定の日付(範囲)を問い合せることはできません。なぜなら、全体として最も高い数値を求め、増分率が異なるからです。 –

+1

バケット全体を表示せずにこれを行う方法はありません。 – helloV

答えて

0

S3 API自体は、それに使用できるものを提供していないようです。 しかし、おそらく別のサービス、Athenaのように、それを行うことができますか?

現時点では、AWS S3でしか実行できません。 Athenaを使用しても、コンテンツを照会するためのファイルは通過しますが、Athenaの標準SQLサポートを使用する方が簡単になり、照会が並行して実行されるので高速になります。

これまでのところ、オブジェクト内での検索は可能でしたが、 気になるのはそのキー名だけです。

AthenaとS3 Selectは、どちらもコンテンツではなく、キーで照会します。

私がお勧めできる最善のアプローチは、AWS DynamoDBを使用してファイルのメタデータを保存し、より高速なクエリができるようにすることです。

+0

新しいファイルの作成時にトリガし、別のS3バケットにファイルをコピーするLambda関数についてはどうでしょうか?新しいバージョンが更新されたら古いものを削除して新しいものをコピーしますか? – jarnohenneman

+0

あなたのポイントを得られませんでした。ファイルを別のバケットに移動することがクエリにどのように関連しているかについてさらに説明できますか? – Ashan

+0

各プレフィックスの最後の3つのファイルがある別のバケットを持っている場合は、そのバケットにクエリを実行して最新のリストを持ち、最新バージョンのファイルをボーナスとして、 DynamoDB :) – jarnohenneman

1

私は、これはあなたが探しているものだと思う:

変数名は$パスであり、あなたが正規表現あなたが照会されているパターンを取得することができます...

regexp_extract(SP "$パス。 "、" ['/' + $ ')concat('% '、キャスト(現在の日付 - varcharとして1日)、'。CSV '))

+0

ここにいくつかの文脈がありません... –

関連する問題