다음 줄이 있는 경우 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