AWS_FAQ

AWS S3 파일 타임스템프 확인

2015.09.13 17:23

호스트웨이 조회 수:751

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


번호 제목 글쓴이 날짜 조회 수
51 S3 bucket 마운트하기 호스트웨이 2015.09.04 3072
50 apache와 iELB 간 이슈 호스트웨이 2015.09.06 1848
49 AWS EC2 EBS 용량 줄이기/늘리기 - Snapshot 활용 file 호스트웨이관리자 2015.09.06 8246
48 aws key pair 등록 방법 호스트웨이 2015.09.07 2783
47 AWS EC2 Instance 생성 후 접속 호스트웨이 2015.09.08 2333
46 Auto-scaling 정책으로 생성 된 EC2에 이름 부여하기 file 호스트웨이 2015.09.08 2876
45 ELB pre-warming 이란? 호스트웨이 2015.09.09 9160
44 EC2는 오토스케일링로 확장 가능한데, DB는 불가능한가? 호스트웨이 2015.09.10 3584
43 route53 Domain import / export - 1편 호스트웨이 2015.09.11 2540
42 S3 browser tool 호스트웨이 2015.09.11 3146
41 aws s3 bucket size 확인 방법 호스트웨이 2015.09.11 3302
40 s3cmd multipart uploads 호스트웨이 2015.09.11 466
39 Cloudfront 콘텐츠 갱신 방법 호스트웨이 2015.09.13 3123
38 aws cli preview 기능 사용 호스트웨이 2015.09.13 796
» AWS S3 파일 타임스템프 확인 호스트웨이 2015.09.13 751
36 AWS divice farm 지원 단말기 목록 검색 호스트웨이 2015.09.13 464
35 AWS EC2 instance 시동시 cloud-init가 hostname을 IP 주소로 설정 호스트웨이 2015.09.13 1967
34 Linux AWS CLI 환경 구성 호스트웨이 2015.09.13 894
33 AWS Lamda 이용하여 cron 처럼 사용 file 호스트웨이 2015.09.13 967
32 S3 DNS CNAME 설정 주의 사항 호스트웨이 2015.09.15 1845