如果存在以下行,我想复制存储在 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