AWS_FAQ

AWS S3 파일 타임스템프 확인

2015.09.13 17:23

호스트웨이 조회 수:1891

S3에 있는 파일의 타임 스템프를 확인하고 파일이 업데이트 된 경우에만 다운로드 하고 싶을 때


awscli의 aws s3 sync 명령을 실행하는 것으로,
rsync처럼 S3 버킷의 업데이트 파일을 EC2 인스턴스에 다운로드하는 것이 가능하므로
aws s3 sync 명령을 crontab에서 정기적으로 실행하는 방법을 이용


$ aws s3 sync s3://test-web-data-store / test / / home / ec2-user /
download : s3://test-web-data-store/test/test2.txt to ./test2.txt
download : s3://test-web-data-store/test/test.txt to ./test.txt
$

시나리오
S3 다음과 같은 테스트 파일 생성
$ date
Sun March 13 10:13:13 UTC 2015
$ aws s3 ls s3://test-web-data-store/test /
2014-12-21 16:53:39 0
$

$ date> /tmp/test.txt
$

$ aws s3 cp /tmp/test.txt s3://test-web-data-store/test/
upload : ../../tmp/test.txt to s3://test-web-data-store/test/test.txt
$

$ aws s3 ls s3://test-web-data-store/test /
2015-09-13 16:53:39 0
2015-09-13 17:14:05 29 test.txt


$ rm -f /tmp/test.txt
$ ll /tmp/test.txt
ls : can not access /tmp/test.txt : No such file or directory
$

S3 버킷에 파일의 타임 스템프 확인
$ aws s3 ls s3://test-web-data-store/test/ | grep 'test.txt'| awk '{print $ 1, $ 2}' 2015-09-13 17:14:05 $

다음과 같은 쉘을 만들고 crontab에서 10 분 간격으로 정기적 실행하도록하면
s3://test-web-data-store/test/test.txt의 타임 스탬프가 업데이트되면
EC2 인스턴스에 /tmp/test.txt로 다운받는 것이 가능합니다.
s3://test-web-data-store/test/test.txt의 타임 스탬프가 업데이트되어 있으면,
 /tmp/test.txt로 다운로드 테스트 쉘입니다

vi s3_download_tsst.sh


#!/bin/sh

S3_BUCKET = "s3 : // test-web-data-store / test"
S3_CHECK_FILE = "test.txt"

OLD_TIMESTAMP_FILE = "/ tmp / old_file_timestamp.txt"
NEW_TIMESTAMP_FILE = "/ tmp / new_file_timestamp.txt"

DOWNLOAD_DIR = "/ tmp"

if [-f $ {NEW_TIMESTAMP_FILE}]; then
        MV $ {NEW_TIMESTAMP_FILE} $ {OLD_TIMESTAMP_FILE}
fi

# S3 버킷에있는 파일의 타임 스탬프를 취득
aws s3 ls $ {S3_BUCKET} / | grep "$ {S3_CHECK_FILE}"| awk '{print $ 1, $ 2}'> $ {NEW_TIMESTAMP_FILE}

if [-f $ {OLD_TIMESTAMP_FILE}]; then

        DIFF_COUNT =`diff $ {NEW_TIMESTAMP_FILE} $ {OLD_TIMESTAMP_FILE} | wc -l`

        if [$ {DIFF_COUNT} -ge 1]; then

                echo "diff [$ {S3_BUCKET} / $ {S3_CHECK_FILE}"
                echo "aws s3 cp $ {S3_BUCKET} / $ {S3_CHECK_FILE} $ {DOWNLOAD_DIR} /"
                aws s3 cp $ {S3_BUCKET} / $ {S3_CHECK_FILE} $ {DOWNLOAD_DIR } /

        else

                echo "not diff [$ {S3_BUCKET} / $ {S3_CHECK_FILE}"

        Fi
Fi

$ chmod 754 s3_download_test.sh


s3 : //test-web-data-store/test/test.txt의 타임 스탬프가 업데이트되지 않은 상태에서 s3_download_test.sh을 실행하면 / tmp / test.txt는 다운로드되지 않습니다

$ aws s3 ls s3 : //test-web-data-store/test/test.txt
2015-09-13 17:14:05 29 test.txt
$

$ ./s3_download_test.sh
not diff [s3 : //test-web-data-store/test//test.txt]
$

$ aws s3 ls s3 : //test-web-data-store/test/test.txt
2015-09-13 17:14:05 29 test.txt
$
$ ll /tmp/test.txt
ls : can not access /tmp/test.txt : No such file or directory
$

s3 : //test-web-data-store/test/test.txt의 타임 스탬프가 업데이트 된 상태에서 s3_download_test.sh을 실행하면 / tmp / test.txt를 다운로드 할 수 있습니다.

$ date >> test.txt
$ date >> test.txt
$

$ aws s3 cp test.txt s3 : // test-web-data-store / test /
upload : ./test.txt to s3 : //test-web-data-store/test/test.txt
$
$ rm test.txt
$ ll test.txt
ls : can not access test.txt : No such file or directory
$ ll /tmp/test.txt
ls : can not access /tmp/test.txt : No such file or directory
$

$ aws s3 ls s3 : //test-web-data-store/test/test.txt
2015-09-13 17:37:49 58 test.txt
$

$ ./s3_download_test.sh
diff [s3 : //test-web-data-store/test/test.txt]
aws s3 cp s3 : //test-web-data-store/test/test.txt / tmp /
download : s3 : //test-web-data-store/test/test.txt to ../../tmp/test.txt
$

$ ll /tmp/test.txt
-rw-rw-r-- 1 ec2-user ec2-user 58 March 09 17:45 /tmp/test.txt
$

S3 버켓에 저장된 파일의 타임 스탬프를 확인하여 파일이 갱신되었는지
판정하고 다운로드 할 수 있음.


번호 제목 글쓴이 날짜 조회 수
31 AWS Linux Bastion instance SSH Tunneling 사용 방법 file 호스트웨이 2016.06.01 3010
30 AWS ELB TCP 적용 방법 호스트웨이 2016.06.01 1895
29 EC2 Type 별 EIP를 몇개까지 할당 할 수 있나? 호스트웨이 2016.04.28 2621
28 T2 instance 특징은 무엇인가요? 호스트웨이 2016.04.28 2199
27 Sub 도메인 확장 호스트웨이 2016.04.27 1398
26 S3 성능 고려 사항 호스트웨이 2016.04.27 1462
25 AWS를 직접 사용하는 것과 호스트웨이를 통했을 때의 차이점은 무엇인가요? 호스트웨이 2015.10.26 2573
24 sub domain route53 으로 위임 호스트웨이 2015.09.25 2602
23 AWS 서비스 갯수 제한 해제. 호스트웨이 2015.09.24 4005
22 WEB 서비스 ELB 사용 시, Health check 설정 방법(권장) 호스트웨이 2015.09.22 3320
21 AWS key 파일 변환 (pem.key -> ppk.key) 호스트웨이 2015.09.22 2356
20 S3 DNS CNAME 설정 주의 사항 호스트웨이 2015.09.15 2919
19 AWS Lamda 이용하여 cron 처럼 사용 file 호스트웨이 2015.09.13 2126
18 Linux AWS CLI 환경 구성 호스트웨이 2015.09.13 1986
17 AWS EC2 instance 시동시 cloud-init가 hostname을 IP 주소로 설정 호스트웨이 2015.09.13 3091
16 AWS divice farm 지원 단말기 목록 검색 호스트웨이 2015.09.13 1599
» AWS S3 파일 타임스템프 확인 호스트웨이 2015.09.13 1891
14 aws cli preview 기능 사용 호스트웨이 2015.09.13 1870
13 Cloudfront 콘텐츠 갱신 방법 호스트웨이 2015.09.13 4250
12 s3cmd multipart uploads 호스트웨이 2015.09.11 1668