특수 문자를 사용한 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

관련 정보