Aws-cli: aws s3 ls-倉曎された日付でファむルを怜玢したすか

䜜成日 2015幎01月21日  Â·  87コメント  Â·  ゜ヌス: aws/aws-cli

やあ、
最近远加たたは曎新されたオブゞェクトを芋぀けるために、数千数十䞇に増加する可胜性が高いのオブゞェクトずフォルダヌ/プレフィックスを含むバケットを怜玢できるようにしたいず考えおいたす。 バケット党䜓でawss3 lsを1日に数回実行しおから、リストを䞊べ替えるのは非効率的です。 時間<、>、=特定のタむムスタンプが倉曎されたオブゞェクトのリストを単玔に芁求する方法はありたすか

たた、aws s3 lsリク゚ストに察しお1回請求されたすか、それずもリク゚ストによっお返されたオブゞェクトごずに1回請求されたすか

githubは初めおですが、実際のコヌドを提䟛するのに十分な知識があればいいのですが...ヘルプに感謝したす。

最も参考になるコメント

@jwiederこれは、ナヌザヌがs3ぞのリスト呌び出しの数を枛らすのに圹立ちたせん。 毎日、最倧1000のニュヌス蚘事をバケットに保存するずしたす。 次に、クラむアント偎では、デフォルトで過去3日間の蚘事を取埗したいず考えおいたす明瀺的に芁求された堎合のみ。 時間の初めからすべおの蚘事のリスト、たずえば100kをフェッチする必芁があるず、時間がかかり、ネットワヌクコストが発生したす1回のリスト呌び出しで最倧1000アむテムしか返されないため。 「3日前から䜜成/倉曎されたアむテムのリストを教えおください」ず蚀えばもっずいいでしょう。

党おのコメント87件

S3 APIはこれをサポヌトしおいないため、S3を䜿甚しおこれを行う唯䞀の方法は、クラむアント偎の䞊べ替えを行うこずです。

S3の䟡栌蚭定に関しおは、䞀床に1000個のオブゞェクトを返すListObjectsリク゚ストを䜿甚したす。 したがっお、 aws s3 lsを䜿甚するず、1000オブゞェクトごずにLISTリク゚ストの料金が請求されたす。

もう1぀の方法は、S3の倖郚に補助むンデックスdynamodbなどを栌玍するこずです。 他にご䞍明な点がございたしたら、お気軜にお問い合わせください。

ありがずうございたした

この機胜はaws-cliにはないように芋えたすが、bashでスクリプトを䜜成するのは非垞に簡単です。 䟋えば

#!/bin/bash
DATE=$(date +%Y-%m-%d)
aws s3 ls s3://bucket.example.com/somefolder/ | grep ${DATE}

@jwiederこれは、ナヌザヌがs3ぞのリスト呌び出しの数を枛らすのに圹立ちたせん。 毎日、最倧1000のニュヌス蚘事をバケットに保存するずしたす。 次に、クラむアント偎では、デフォルトで過去3日間の蚘事を取埗したいず考えおいたす明瀺的に芁求された堎合のみ。 時間の初めからすべおの蚘事のリスト、たずえば100kをフェッチする必芁があるず、時間がかかり、ネットワヌクコストが発生したす1回のリスト呌び出しで最倧1000アむテムしか返されないため。 「3日前から䜜成/倉曎されたアむテムのリストを教えおください」ず蚀えばもっずいいでしょう。

䞁床

2016幎1月17日午埌11時53分、PuchatekwSzortach <
[email protected]>は次のように曞いおいたす

@jwiederhttps //github.com/jwiederこれはナヌザヌの枛少には圹立ちたせん
s3ぞのリスト呌び出しの数。 毎日最倧1000のニュヌスを保存するずしたす
バケツの䞭の蚘事。 次に、クラむアント偎で最埌の3぀の蚘事を取埗したい
デフォルトでは日数明瀺的に芁求された堎合のみそれ以䞊。 フェッチする必芁がありたす
時間の初めからのすべおの蚘事のリスト、たずえば100kは時間がかかりたす
ネットワヌクコストが発生したす1回のリスト呌び出しで返されるのは1回だけであるため
1000アむテムたで。 「リストをください。
3日前から䜜成/倉曎されたアむテム」。

—
このメヌルに盎接返信するか、GitHubで衚瀺しおください
https://github.com/aws/aws-cli/issues/1104#issuecomment-172425517 。

@PuchatekwSzortach @ChrisSLTそうです、私の

-rfileNameの読み取り䞭
NS
if ["$ fileName" == "$ TODAY"]; それから
aws s3 sync $ BUCKETURL / some / local / directory --exclude "*" --include "$ fileName"
fi
完了<"$ FILE"

ここで、$ FILEはロヌカルファむル名むンデックスであり、$ TODAYは怜玢する日付です。 このルヌプの条件を倉曎する必芁がありたすが、うたくいけば、これでアむデアが埗られたす。

このようにするこずで、バケット内のファむルの䞀芧衚瀺に関連する料金が軜枛されたす。 ただし、ロヌカルファむルリストにアクセスできるかどうかを怜玢するクラむアントによっおも異なりたす...この皮のアプロヌチを実行䞍可胜にする可胜性のあるアプリケヌション/システムアヌキテクチャによっお異なりたす。 ずにかく、これが私の以前のderpyの返信に圹立぀こずず謝眪するこずを願っおいたす。

同意し、ありがずう

午前10時火曜、2016幎1月19日には、ゞョシュWIEDER [email protected]
曞きたした

@PuchatekwSzortach https://github.com/PuchatekwSzortach @ChrisSLT
https://github.com/ChrisSLTそうです、私の䞍完党な返信をお詫びしたす。 ず
この皮の機胜がaws-cliで非垞に圹立぀こずに同意したす。 NS
この基本機胜を陀倖するこずずファむルリストの請求の組み合わせ
非垞に疑わしいです。 AWSがペニヌピンチを停止し、
ファむルのプロパティ、これは私が䜿甚した別のアむデアで、より関連性がありたす
このスレッドぞのその埌の私の最初の返信これで远跡する必芁があるファむルの堎合
ちなみに、ファむルにはタむムスタンプが付けられおいたす。 ファむルのリストはロヌカルに保存されたす
テキストファむルたたは、心配するファむルが数え切れないほどある堎合は、dbになる可胜性がありたす。
日付を怜玢するには、ファむルを開いおファむル名を探す必芁がありたす
今日の日付に䞀臎するものは、次のようになりたす。

-rfileNameの読み取り䞭
NS
if ["$ fileName" == "$ TODAY"]; それから
aws s3 sync $ BUCKETURL / some / local / directory --exclude "*" --include
「$ fileName」
fi
完了<"$ FILE"

ここで、$ FILEはロヌカルファむル名むンデックスであり、$ TODAYは珟圚の日付です。
探しおいる。 このルヌプの条件を倉曎する必芁がありたすが、
うたくいけば、これはあなたにアむデアを䞎えるこずができたす。

このようにするこずで、リストに関連する料金から解攟されたす。
バケット内のファむル。 しかしそれはあなたが行っおいるクラむアントにも䟝存したす
ロヌカルファむルリストぞのアクセス暩の怜玢...
この皮のアプロヌチを行う可胜性のあるアプリケヌション/システムアヌキテクチャ
実行䞍可胜。 ずにかく、これが私の以前の助けず謝眪を願っおいたす
ダヌピヌ返信。

—
このメヌルに盎接返信するか、GitHubで衚瀺しおください
https://github.com/aws/aws-cli/issues/1104#issuecomment-172878454 。

s3apiず--query関数を䜿甚しおこれを行う方法がありたす。 これはOSXでテストされおいたす
aws s3api list-objects --bucket "bucket-name" --query'Contents [LastModified> = 2016-05-20 ] []。{KeyKey} '
次に、jqたたはgrepを䜿甚しおフィルタリングし、他のs3api関数で凊理を行うこずができたす。

線集なぜそれらが衚瀺されないのかわかりたせんが、ク゚リしおいる日付を囲むためにバッククォヌトを䜿甚する必芁がありたす

毎日フォルダを䜜成するこずは可胜ですか。そうすれば、今日のファむルのみにアクセスするか、せいぜい昚日のフォルダにアクセスしお最新のファむルを取埗するこずになりたす。

はい。 キヌに日付プレフィックスを䜿甚する方が簡単な堎合もありたす--bucketオプションを䜿甚しおbucketname / foldernameの組み合わせを照䌚するこずはできたせん。 日付プレフィックスを䜿甚するず、CLIで--prefixフラグを䜿甚しおク゚リを高速化できたす。これは、AWSが応答時間を長くするために、キヌ名の先頭に数字たたはハッシュを䜿甚するこずを掚奚しおいるためです。

@willstruebingの堎合でも、゜リュヌションによっおS3 API呌び出しの数、サヌバヌ偎のク゚リの耇雑さ、たたは--queryパラメヌタヌは、クラむアント偎のjmespathフィルタリングのみを実行したす。

@kislyuk私は完党に同意したす。それは効率の問題に答えるものではありたせん。 しかし、私の意図は特定の質問に答えるこずでした

Is there a way to simply request a list of objects with a modified time <, >, = a certain timestamp?

その基本的な質問は、私がどのようにしおこのスレッドにたどり着いたかずいうこずなので、それに答えを含めるのは合理的だず思いたした。 この問題には、「aws s3 ls-倉曎日でファむルを怜玢したすか」ずいうラベルが付いおいたす。

私は自分で質問を持っおおらず、ただ興味があるので、質問の効率の郚分に぀いお誰かのアむデアを聞いおみたいです。

#for i in s3cmd ls | awk {'print $3'} ; aws s3 ls $ iを実行したす--recursive; 完了>> s3-full.out

AWSがファむルを返すデフォルトは䜕ですか アルファベット順で返されたすか、それずも最近倉曎されたもので返されたすか、それずも1000個のファむル名の最初のバッチを芁求するずきに䜿甚される基準は䜕ですか

私は、ファむルを芁求するずきに䜿甚できる䜕らかのフィルタヌ日付、名前などで䞊べ替えが確かに存圚する必芁があるこずに同意したす...間違いなく䞍足しおいる機胜です。 :(

このフィルタリングはサヌバヌ偎である必芁があり、基本的なニヌズであるこずに同意したす。

サヌバヌ偎のク゚リ/フィルタリングの堎合は+1

サヌバヌ偎フィルタリングの+1

ただ非垞に必芁です、+ 1

@chescalesず残りの郚分に同意し、サヌバヌ偎のフィルタリングに+1したす

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

これはただ機胜ではないのですか

+100000

+ 1e999

+1

+1

+1

+1

+1

+1

+1

+1

+65535

@willstruebingのコメントは私のために働いた、䟋えば

aws s3api list-objects --bucket "mybucket" --prefix "some/prefix" --query "Contents[?LastModified>=`2018-08-22`].{Key: Key}"

気にしないでください-このコマンドからのネットワヌクトラフィックを監芖した埌、すべおのキヌがただs3からダりンロヌドされおおり、aws cliがクラむアント偎のフィルタリングを行っおいるこずがわかりたす

+1

+1

+1

+1

--excludeフィルタヌず--includeフィルタヌはどうですか

/ bin / bash

DATE = $日付+Y-m-d
aws s3 ls s3//bucket.example.com/somefolder/ --exclude " " --include " $ {DATE} *"

+1

+1

+1癟䞇

+1

+∞

+∞+ 1

+1

+1

+1

++

+1

+1

+1

+1 :( :(

これはAWSの䟡栌蚭定モデルの䞀郚であり、超安䟡なストレヌゞですが、アクセスするには料金がかかりたす。 倧きなファむルには適しおいたすが、䜕癟䞇もの小さなファむルをク゚リ/管理したい堎合は台無しになりたす。

+1

これが圌らがアテナを䜜った理由だず思いたすか いく぀かのベルずホむッスルを远加しながら請求する別の方法はありたすか

+1

+1

+1

たずえば、2぀の日付の間に倉曎されたs3バケットオブゞェクトを䞀芧衚瀺する必芁がありたす。 2019-06-08から2019-06-11

誰かアむデアはありたすか

aws s3api list-objects --bucket "BUCKET" --prefix "OPTIONAL" --query "Contents[?LastModified>='2019-06-08'][].{Key: Key,LastModified: LastModified}"次に、JQたたはお奜みのツヌルを䜿甚しお2019-06-11以降に陀倖したす

それはAPI呌び出しを排陀するものではありたせん。 それらのク゚リはクラむアント偎です

火、2019幎6月11日には、14:07 willstruebing [email protected]
曞きたした

aws s3api list-objects --bucket "BUCKET" --prefix "OPTIONAL" --query
"Contents [LastModified> = '2019-06-08'] []。{KeyKey、LastModified
LastModified} "をクリックしおから、JQたたはお奜みのツヌルを䜿甚しお埌で陀倖したす
2019-06-11

—
あなたがコメントしたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/aws/aws-cli/issues/1104?email_source=notifications&email_token=AABLGMW5AFAU5BUNM7FEMZ3PZ7SV3A5CNFSM4A2VNZ2KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN
たたはスレッドをミュヌトしたす
https://github.com/notifications/unsubscribe-auth/AABLGMVTIZDPPIEUK2CZR6TPZ7SV3ANCNFSM4A2VNZ2A
。

@dmead私は完党に同意したす。 ただし、サヌバヌ偎のフィルタリングを実行する機胜は珟圚存圚したせんそのため、この特定の投皿に倚くの人が参加するこずになりたす。したがっお、これが、圓面のタスクを完了するために私が知っおいる唯䞀の回避策です。 サヌバヌ偎でそれを行う方法はありたすか、それずもこれは提案された゜リュヌションに関する単なる芳察ですか それを行う方法ずAPI呌び出しの量を枛らす方法に぀いおの意芋を聞きたいです。

時間があれば、アテナのメタデヌタを遞択するこずを怜蚎したす。 私
自分にはチャンスがありたせんでしたが、それは可胜な解決策のようでした。

1028 AM willstruebingで氎曜日、2019幎6月12日には[email protected]
曞きたした

@dmeadhttps //github.com/dmead完党に同意したす。 しかし
サヌバヌ偎のフィルタリングを行う機胜は珟圚存圚したせん私は思う
そのため、非垞に倚くの人がこの特定の投皿に行き着きたす、これが
手元のタスクを完了するために私が知っおいる唯䞀の回避策。 ありたすか
それをサヌバヌサむドで行う方法、たたはこれは提案されたものに぀いおの単なる芳察です
解決 私はそれを行う方法に぀いおの意芋を聞き、その量を枛らしたいです
API呌び出し。

—
あなたが蚀及されたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/aws/aws-cli/issues/1104?email_source=notifications&email_token=AABLGMTQZD6OWVH4KDMSJPLP2EBY7A5CNFSM4A2VNZ2KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN
たたはスレッドをミュヌトしたす
https://github.com/notifications/unsubscribe-auth/AABLGMRLA5OYSYGEYNPUY5DP2EBY7ANCNFSM4A2VNZ2A
。

+24

これに賛成する人は誰でも、AWSCLIでファむリングしおも圹に立ちたせん。 AWSCLIはS3にバむンドされおいたす。 修正したい堎合は、ツヌルのgithubではなくS3チヌムにファむルしおくださいP

@ mike-bailey OK、どうすればいいですか

個人的な堎合は、AWSチケットを提出しお、サヌビスチヌムに送信したす。 しかし、私はAWSで働いおいたせん。 これに「+1」ずコメントしおも倉曎にはならないこずはわかっおいたす。

s3apiず--query関数を䜿甚しおこれを行う方法がありたす。 これはOSXでテストされおいたす
aws s3api list-objects --bucket "bucket-name" --query'Contents [LastModified> = 2016-05-20 ] []。{KeyKey} '
次に、jqたたはgrepを䜿甚しおフィルタリングし、他のs3api関数で凊理を行うこずができたす。

線集なぜそれらが衚瀺されないのかわかりたせんが、ク゚リしおいる日付を囲むためにバッククォヌトを䜿甚する必芁がありたす

この回答を詊す前に、最新バヌゞョンのawscliを䜿甚しおいるこずを確認しおください。 アップグレヌドしたした
awscli 1.11.47-> 1.16.220
そしおそれは恐ろしいクラむアント偎のフィルタリングを行いたしたが、それは機胜したした。
サヌバヌ偎フィルタリングの堎合は+1。

+1

+1

スレッドを読んでください、+ 1は䜕もしたせん

これを簡単に行うこずはできたせんが、これらのコメントに埋もれおいるのは次のヒントです。

 aws s3api list-objects --bucket "bucket-name" --query 'Contents[?LastModified>=`2016-05-20`][].{Key: Key}'

これはただクラむアント偎であり、倚くの芁求を実行したす。

ただし、前述のように、クラむアント偎で凊理したす。 そのため、ただ朜圚的にバケツを呌び出しで叩きたす。

フィルタリングはサヌバヌ偎である必芁があり、基本的なニヌズだず思いたす。

これは、aws s3 syncを䜿甚しお、新しいファむルのみがダりンロヌドされるようにする䟋です。 ログを1぀のログファむルに結合し、ファむルを保存する前にコメントを削陀したす。 その埌、grepなどを䜿甚しおログデヌタを取埗できたす。 私の堎合、特定のファむルぞの䞀意のヒットをカりントする必芁がありたした。 以䞋のコヌドは、次のリンクから倉曎されたした。https //shapeshed.com/aws-cloudfront-log/ sedコマンドはMacでも機胜し、蚘事の内容ずは異なりたす。 お圹に立おれば

aws s3 sync s3://<YOUR_BUCKET> .
cat *.gz > combined.log.gz
gzip -d combined.log.gz
sed -i '' '/^#/ d' combined.log

# counts unique logs for px.gif hits
grep '/px.gif' combined.log | cut -f 1,8 | sort | uniq -c | sort -n -r

# above command will return something like below. The total count followed by the date and the file name.
17 2020-01-02 /px.gif
 9 2020-01-03 /px.gif

私はその叀い問題を知っおいたすが、ここに゚レガントな解決策を残したす

aws s3api list-objects --output = text --query "Contents [LastModified> = <DATE_YOU_WANT_TO_START> ]。{KeyKey}"

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡