次の行がある場合は、AWS S3バケットに保存されているログ全体をコピーしたいと思います。
\"Key\" : 951332,\n
私は次のことを試して逃げようとしました。
aws s3 ls s3://bucket_name | grep "/\"Key/\" : 951332,/\n" --recursive
しかし、何の対価も得られませんでしたが、この方法でgrepを実行する方法を知っている人はいますか?
答え1
を使用してS3をマウントしてs3fs
実行します。
grep -r Key /PATH/TO/MOUNT/POINT/
...その後、パイプを通してgrep 951332
これがあなたの場合に十分であることを確認してください。
AWS でローカルで実行しないと時間がかかり、AWS DataTransfer コストが発生する可能性があります。したがって、同じVPCのEC2インスタンスでそれを実行することをお勧めします。
とにかく、このアプローチを使用して高価であっても、AWS からローカルに移動するのに十分勇敢な場合は、stdout と stderr をいくつかのドキュメントにリダイレクトし、必要に応じて後で確認できるように高価なコマンドを再実行することをお勧めします。ライン。
要約すると、こう言うことができます。
grep -r Key /PATH/TO/MOUNT/POINT/ | \
grep 951332 \
>/LOCAL/PATH/TO/grep_stdout \
2>/LOCAL/PATH/TO/grep_stderr
# In /LOCAL/PATH/TO/grep_stdout should be the paths to the docs you
# were searching.
または:
grep -r Key /PATH/TO/MOUNT/POINT/ | \
grep 951332 &>/LOCAL/PATH/TO/all_grep_outputs
# In /LOCAL/PATH/TO/all_grep_outputs should be the paths to the docs you
# were searching.
答え2
Cloudgrep は次の場合に便利です。
./cloudgrep --bucket test-s3-access-logs --query 9RXXKPREHHTFQD77