2015-02-03 2 views
8

S3에서 특정 위치 (예 : /foo/bar.zip)에 zip 압축 파일을 업로드했습니다. bar.zip에서 값을 추출하여 아래에 배치하고 싶습니다./foo 압축을 푼 파일을 다운로드하거나 다시 업로드하지 않아도됩니다. 어떻게하면 S3이 파일 시스템처럼 취급 될 수 있도록 할 수 있습니까?S3의 zip 아카이브에서 파일을 추출하는 방법

답변

14

S3는 이것을 허용하도록 실제로 설계되지 않았습니다. 일반적으로 파일을 다운로드하여 처리하고 추출한 파일을 업로드해야합니다. 당신은 s3fsFUSE을 (articlegithub site 참조)를 사용하여 로컬 파일 시스템으로 S3 버킷을 장착 할 수

  1. :

    그러나, 몇 가지 옵션이있을 수 있습니다. 여전히 파일을 다운로드하고 업로드해야하지만 파일 시스템 인터페이스 뒤에 이러한 작업이 숨겨져 있습니다.

  2. AWS에서 로컬 컴퓨터로 데이터를 다운로드하지 않으려면 EC2 instance에 데이터를 다운로드하고 s3fs의 유무에 관계없이 작업을 수행하십시오. 이렇게하면 Amazon 데이터 센터에 데이터가 보관됩니다.

  3. AWS Lambda을 사용하여 파일을 로컬 컴퓨터에 다운로드하지 않고 원격 작업을 수행 할 수 있습니다.

당신은 파일을 패키지를 만들고 액세스 node.js로 작성된 작은 프로그램을 업로드, 압축 해제하고 업로드해야합니다. 이 처리는 AWS 인프라 스트럭처에서 이루어 지므로 모든 파일을 자신의 컴퓨터에 다운로드 할 필요가 없습니다. FAQs을 참조하십시오.

마지막으로이 코드를 트리거하는 방법을 찾아야합니다. 일반적으로 람다에서는 zip 파일을 S3에 업로드하여 자동으로 트리거됩니다. 파일이 이미있는 경우 AWS API에서 제공하는 invoke-async 명령을 사용하여 파일을 수동으로 트리거해야 할 수 있습니다. AWS Lambda walkthroughsAPI docs을 참조하십시오.

그러나 이것은 다운로드를 피하는 데 매우 정교한 방법이며 많은 수의 zip 파일을 처리해야하는 경우에만 유용 할 것입니다. 또한 람다 함수는 최대 지속 시간이 5 분 (default timeout은 3 초)으로 제한되므로 파일이 매우 클 경우 시간이 초과 될 수 있지만 /tmp의 스크래치 공간은 500MB로 제한되므로 파일 크기도 제한됩니다.

+1

이제 AWS Lambda의 실행 시간 제한은 5 분입니다 (https://serifandsemaphore.io/aws-lambda-going-beyond-5-minutes-34e381e71231#.blrcnlxpk). 그래도 큰 메모. – thadk

+0

/람다의 tmp 스크래치 공간도 500mb (perhttps : //aws.amazon.com/lambda/faqs/) – thadk

+0

@thadk 포인터를 보내 주셔서 감사합니다 - 답변을 업데이트했습니다! – DNA

관련 문제