[amazon-web-services] Amazon S3 버킷을 어떻게 검색합니까?

수천 개의 파일이 들어있는 버킷이 있습니다. 버킷을 어떻게 검색합니까? 추천 할 수있는 도구가 있습니까?



답변

S3는 네이티브가 실제 내용부터 “이 버킷 검색”이없는 것은 알 수 – 또한, S3가 제공 ALA보다 전통적인 데이터 스토어를 한 번에 액세스 여러 노드에 네이티브 방법이 없다는 기반 키 / 값이므로 (SELECT * FROM ... WHERE ...)(A SQL에가 모델).

당신이 할 필요가 수행하는 것은 ListBucket당신의 검색 인 – a를 양동이에 개체의 목록 다음으로 반복은 모든 항목에 걸쳐 당신이 구현하는 사용자 정의 작업을 수행을 얻을 수 있습니다.


답변

여기에 추가하기위한 참고 사항 : 이제 3 년이 지난 지금 “S3 버킷을 검색하는 방법”을 입력하면이 게시물이 Google에서 1 위를 차지합니다.

아마도 당신은 좀 더 복잡한 것을 찾고있을 것입니다. 그러나 제목으로 객체 (파일)를 찾는 방법을 알아 내려고 여기에 착륙했다면 미친 듯이 간단합니다.

버킷을 열고 오른쪽에서 “없음”을 선택한 다음 파일 이름을 입력하십시오.

http://docs.aws.amazon.com/AmazonS3/latest/UG/ListingObjectsinaBucket.html


답변

다음은 AWS CLI를 사용하여 파일 이름을 검색하는 짧고 못생긴 방법입니다 .

aws s3 ls s3://your-bucket --recursive | grep your-search | cut -c 32-


답변

“버킷 검색”으로 설명 할 수있는 두 가지 다른 사용 사례가 있습니다.

  1. 버킷에 저장된 모든 객체 내부 에서 무언가를 검색합니다 . 이것은 해당 버킷의 모든 객체 (예 : 텍스트 파일 등)에 대한 공통 형식을 가정합니다. 이와 같은 경우 Cody Caughlan이 방금 응답 한 것을 수행해야합니다. AWS S3 문서에는 AWS SDK for Java로이 작업을 수행하는 방법을 보여주는 예제 코드 가 있습니다. Java 용 AWS SDK를 사용하여 키 나열 (PHP 및 C # 예제도 있습니다).

  2. 목록 항목 해당 버킷에 포함 된 객체 에서 무언가를 검색합니다 . S3는 않습니다부분 구분 한 후 일치를 무너 접두사 정확히 일치 +를 허용하는 형태로,이에 대한 지원을. 이에 대한 자세한 내용은 AWS S3 개발자 안내서를 참조하십시오 . 이를 통해 예를 들어 다음과 같은 객체 키로 사용하여 “폴더”를 구현할 수 있습니다.

    폴더 / 하위 폴더 /file.txt

    이 규칙을 준수하면 대부분의 S3 GUI (예 : AWS 콘솔)에 버킷의 폴더보기가 표시됩니다.


답변

AWS는 SQL을 사용하여 S3 버킷을 쿼리하는 새로운 서비스를 출시했습니다. Amazon Athena https://aws.amazon.com/athena/


답변

여러 가지 옵션이 있지만 간단한 “원샷”전체 텍스트 솔루션은 없습니다.

  1. 키 이름 패턴 검색 : 문자열로 시작하는 키 검색-키 이름을 신중하게 디자인하면 빠른 해결 방법이있을 수 있습니다.

  2. 키에 첨부 된 메타 데이터 검색 : 파일을 AWS S3에 게시 할 때 콘텐츠를 처리하고 일부 메타 정보를 추출한 후이 메타 정보를 사용자 지정 헤더 형태로 키에 첨부 할 수 있습니다. 이를 통해 완전한 컨텐츠를 가져올 필요없이 키 이름과 헤더를 가져올 수 있습니다. 검색은 순차적으로 수행되어야하며 이에 대한 “sql like”검색 옵션이 없습니다. 파일이 크면 많은 네트워크 트래픽과 시간을 절약 할 수 있습니다.

  3. SimpleDB에 메타 데이터를 저장하십시오. 이전 포인트로 메타 데이터를 SimpleDB 에 저장합니다. 여기에는 SQL과 같은 select 문이 있습니다. 큰 데이터 세트의 경우 극복 할 수있는 SimpleDB 제한에 도달 할 수 있지만 (여러 SimpleDB 도메인의 파티션 메타 데이터) 실제로 멀어지면 다른 메타 데이터 유형의 데이터베이스를 사용해야합니다.

  4. 내용의 순차적 전체 텍스트 검색 -모든 키를 하나씩 처리합니다. 처리 할 키가 너무 많으면 매우 느립니다.

버전이 지정된 버킷을 사용하여 2 년 동안 하루에 1440 버전의 파일을 분당 1 개씩 저장하면 쉽게 가능합니다. 그러나 순차적으로 버전을 이동해야하므로 이전 버전을 얻는 데 시간이 걸립니다. 때로는 레코드와 함께 간단한 CSV 인덱스를 사용하여 게시 시간과 버전 ID를 표시하여 이전 버전으로 빠르게 이동할 수 있습니다.

보시다시피, AWS S3는 자체 텍스트 검색 용으로 설계된 것이 아니라 단순한 스토리지 서비스입니다.


답변

S3 콘솔에서 접두사로 검색

AWS 콘솔 버킷보기에서 직접

여기에 이미지 설명을 입력하십시오

s3-dist-cp를 사용하여 원하는 파일 복사

수천 또는 수백만 개의 파일이있는 경우 원하는 파일을 얻는 또 다른 방법은 분산 사본을 사용하여 다른 위치로 파일을 복사하는 것 입니다. Hadoop 작업의 EMR 에서 이를 실행합니다 . AWS의 멋진 점은 사용자 정의 S3 버전 s3-dist-cp 를 제공한다는 것 입니다. groupBy 필드에서 정규식을 사용하여 원하는 파일을 그룹화 할 수 있습니다. 예를 들어 EMR의 사용자 정의 단계에서이를 사용할 수 있습니다.

[
    {
        "ActionOnFailure": "CONTINUE",
        "Args": [
            "s3-dist-cp",
            "--s3Endpoint=s3.amazonaws.com",
            "--src=s3://mybucket/",
            "--dest=s3://mytarget-bucket/",
            "--groupBy=MY_PATTERN",
            "--targetSize=1000"
        ],
        "Jar": "command-runner.jar",
        "Name": "S3DistCp Step Aggregate Results",
        "Type": "CUSTOM_JAR"
    }
]