S3 CLI에서 마지막으로 수정 된 객체 가져 오기
프로그래밍 방식으로 EC2 인스턴스를 가져와 S3에서 복사 및 실행 파일을 실행하고 인스턴스를 종료하는 사용 사례가 있습니다 (사용자 데이터에서 수행됨). S3에서 마지막으로 추가 된 파일 만 가져 오면됩니다. CLI를 사용하여 S3 버킷에서 마지막으로 수정 된 파일 / 객체를 가져 오는 방법이 있습니까?
다음을 사용하여 버킷의 모든 객체를 나열 할 수 있습니다 aws s3 ls $BUCKET --recursive
.
$ aws s3 ls $BUCKET --recursive
2015-05-05 15:36:17 4 an_object.txt
2015-06-08 14:14:44 16322599 some/other/object
2015-04-29 12:09:29 32768 yet-another-object.sh
키를 기준으로 알파벳순으로 정렬되지만 첫 번째 열이 마지막으로 수정 된 시간입니다. 빠른 sort
날짜순으로 다시 정렬합니다.
$ aws s3 ls $BUCKET --recursive | sort
2015-04-29 12:09:29 32768 yet-another-object.sh
2015-05-05 15:36:17 4 an_object.txt
2015-06-08 14:14:44 16322599 some/other/object
tail -n 1
마지막 행을 선택하고 awk '{print $4}'
네 번째 열 (객체 이름)을 추출합니다.
$ aws s3 ls $BUCKET --recursive | sort | tail -n 1 | awk '{print $4}'
some/other/object
마지막으로 aws s3 cp
, 객체를 다운로드하려면 다음을 입력하십시오.
$ KEY=`aws s3 ls $BUCKET --recursive | sort | tail -n 1 | awk '{print $4}'`
$ aws s3 cp s3://$BUCKET/$KEY ./latest-object
aws s3api list-objects-v2 --bucket "bucket-name" |jq -c ".[] | max_by(.LastModified)|.Key"
다음은 S3 버킷에서 최신 파일을 다운로드하는 bash 스크립트입니다. 대신 AWS S3 Synch 명령을 사용하여 이미있는 경우 S3에서 파일을 다운로드하지 않았습니다.
--exclude, 모든 파일을 제외합니다.
--include, 패턴과 일치하는 모든 파일 포함
#!/usr/bin/env bash
BUCKET="s3://my-s3-bucket-eu-west-1/list/"
FILE_NAME=`aws s3 ls $BUCKET | sort | tail -n 1 | awk '{print $4}'`
TARGET_FILE_PATH=target/datdump/
TARGET_FILE=${TARGET_FILE_PATH}localData.json.gz
echo $FILE_NAME
echo $TARGET_FILE
aws s3 sync $BUCKET $TARGET_FILE_PATH --exclude "*" --include "*$FILE_NAME*"
cp target/datdump/$FILE_NAME $TARGET_FILE
ps 감사합니다 @David Murray
새로 업로드 된 파일 인 경우 Lambda 를 사용 하여 새 S3 객체에서 코드를 실행할 수 있습니다 .
가장 최근 파일을 가져와야하는 경우 먼저 날짜로 파일 이름을 지정하고 이름별로 정렬 한 다음 첫 번째 개체를 가져올 수 있습니다.
참조 URL : https://stackoverflow.com/questions/31062365/get-last-modified-object-from-s3-cli
'programing' 카테고리의 다른 글
Github에서 푸시 커밋시 오류 : 치명적 : 사용자 이름을 읽을 수 없음 (0) | 2021.01.17 |
---|---|
Django 1.7에서 "django.core.exceptions.ImproperlyConfigured : 애플리케이션 레이블이 고유하지 않고 중복 : foo"를 해결하는 방법은 무엇입니까? (0) | 2021.01.17 |
Python에서 포인터 시뮬레이션 (0) | 2021.01.17 |
wkhtmltopdf를 호출하여 HTML에서 PDF 생성 (0) | 2021.01.17 |
쉘에서 .bashrc에 정의 된 함수를 어떻게 호출합니까? (0) | 2021.01.17 |