AWS_FAQ

AWS S3 파일 타임스템프 확인

2015.09.13 17:23

호스트웨이 조회 수:755

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 Volume Resize 안내 호스트웨이 2017.03.22 6869
30 MarketPlace 비용이 발생 할 경우 file 호스트웨이 2016.07.26 6748
29 EC2는 오토스케일링로 확장 가능한데, DB는 불가능한가? 호스트웨이 2015.09.10 3591
28 aws s3 bucket size 확인 방법 호스트웨이 2015.09.11 3305
27 S3 browser tool 호스트웨이 2015.09.11 3147
26 Cloudfront 콘텐츠 갱신 방법 호스트웨이 2015.09.13 3128
25 S3 bucket 마운트하기 호스트웨이 2015.09.04 3078
24 Auto-scaling 정책으로 생성 된 EC2에 이름 부여하기 file 호스트웨이 2015.09.08 2881
23 AWS 서비스 갯수 제한 해제. 호스트웨이 2015.09.24 2858
22 aws key pair 등록 방법 호스트웨이 2015.09.07 2783
21 route53 Domain import / export - 1편 호스트웨이 2015.09.11 2555
20 AWS EC2 Instance 생성 후 접속 호스트웨이 2015.09.08 2334
19 WEB 서비스 ELB 사용 시, Health check 설정 방법(권장) 호스트웨이 2015.09.22 2183
18 AWS EC2 instance 시동시 cloud-init가 hostname을 IP 주소로 설정 호스트웨이 2015.09.13 1969
17 S3 DNS CNAME 설정 주의 사항 호스트웨이 2015.09.15 1849
16 apache와 iELB 간 이슈 호스트웨이 2015.09.06 1848
15 AWS Linux Bastion instance SSH Tunneling 사용 방법 file 호스트웨이 2016.06.01 1800
14 sub domain route53 으로 위임 호스트웨이 2015.09.25 1491
13 AWS를 직접 사용하는 것과 호스트웨이를 통했을 때의 차이점은 무엇인가요? 호스트웨이 2015.10.26 1431
12 EC2 Type 별 EIP를 몇개까지 할당 할 수 있나? 호스트웨이 2016.04.28 1412