带有特殊字符的AWS s3 CLi grep命令

带有特殊字符的AWS s3 CLi grep命令

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

相关内容