2015.09.13 17:23
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 | route53 Domain import / export - 1편 | 호스트웨이 | 2015.09.11 | 2562 |
30 | aws key pair 등록 방법 | 호스트웨이 | 2015.09.07 | 2785 |
29 | AWS 서비스 갯수 제한 해제. | 호스트웨이 | 2015.09.24 | 2862 |
28 | Auto-scaling 정책으로 생성 된 EC2에 이름 부여하기 | 호스트웨이 | 2015.09.08 | 2884 |
27 | S3 bucket 마운트하기 | 호스트웨이 | 2015.09.04 | 3087 |
26 | Cloudfront 콘텐츠 갱신 방법 | 호스트웨이 | 2015.09.13 | 3140 |
25 | S3 browser tool | 호스트웨이 | 2015.09.11 | 3153 |
24 | aws s3 bucket size 확인 방법 | 호스트웨이 | 2015.09.11 | 3315 |
23 | EC2는 오토스케일링로 확장 가능한데, DB는 불가능한가? | 호스트웨이 | 2015.09.10 | 3597 |
22 | AWS Volume Resize 안내 | 호스트웨이 | 2017.03.22 | 6949 |
21 | MarketPlace 비용이 발생 할 경우 | 호스트웨이 | 2016.07.26 | 7027 |
20 | EFS 백업 가이드 | 호스트웨이 | 2016.09.23 | 7231 |
19 | AWS 취약점/침투 테스트 신청 방법 | 호스트웨이 | 2016.10.07 | 7348 |
18 | AWS Snowball 과 인터넷 전송 속도 비교 | 호스트웨이 | 2016.08.30 | 7456 |
17 | EC2 및 EBS 리소스 ID 더 긴 ID로 전환 | 호스트웨이 | 2016.09.23 | 7480 |
16 | AWS 보안 백서 | 호스트웨이 | 2016.06.17 | 7616 |
15 | AWS 마스터 계정 정보 변경 방법 안내 | 호스트웨이 | 2017.02.15 | 7742 |
14 | RI 신청 가이드 | 호스트웨이 | 2016.11.29 | 7947 |
13 | Goofys 설치 | 호스트웨이 | 2016.11.29 | 8093 |
12 | AWS ELB Pre-warm 신청 양식 | 호스트웨이 | 2016.10.17 | 8114 |