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 | AWS key 파일 변환 (pem.key -> ppk.key) | 호스트웨이 | 2015.09.22 | 1253 |
30 | WEB 서비스 ELB 사용 시, Health check 설정 방법(권장) | 호스트웨이 | 2015.09.22 | 2189 |
29 | AWS 서비스 갯수 제한 해제. | 호스트웨이 | 2015.09.24 | 2862 |
28 | sub domain route53 으로 위임 | 호스트웨이 | 2015.09.25 | 1495 |
27 | AWS를 직접 사용하는 것과 호스트웨이를 통했을 때의 차이점은 무엇인가요? | 호스트웨이 | 2015.10.26 | 1432 |
26 | S3 성능 고려 사항 | 호스트웨이 | 2016.04.27 | 380 |
25 | Sub 도메인 확장 | 호스트웨이 | 2016.04.27 | 315 |
24 | T2 instance 특징은 무엇인가요? | 호스트웨이 | 2016.04.28 | 1089 |
23 | EC2 Type 별 EIP를 몇개까지 할당 할 수 있나? | 호스트웨이 | 2016.04.28 | 1424 |
22 | AWS ELB TCP 적용 방법 | 호스트웨이 | 2016.06.01 | 729 |
21 | AWS Linux Bastion instance SSH Tunneling 사용 방법 | 호스트웨이 | 2016.06.01 | 1804 |
20 | Putty 통한 Proxy 연결 방법 | 호스트웨이 | 2016.06.13 | 9825 |
19 | AWS 보안 백서 | 호스트웨이 | 2016.06.17 | 7615 |
18 | MarketPlace 비용이 발생 할 경우 | 호스트웨이 | 2016.07.26 | 7026 |
17 | AWS Case Open 가이드 | 호스트웨이 | 2016.07.27 | 13105 |
16 | AWS KMS 이용 가이드 | 호스트웨이 | 2016.08.29 | 8881 |
15 | AWS Snowball 과 인터넷 전송 속도 비교 | 호스트웨이 | 2016.08.30 | 7455 |
14 | EC2 및 EBS 리소스 ID 더 긴 ID로 전환 | 호스트웨이 | 2016.09.23 | 7479 |
13 | EFS 백업 가이드 | 호스트웨이 | 2016.09.23 | 7230 |
12 | AWS 취약점/침투 테스트 신청 방법 | 호스트웨이 | 2016.10.07 | 7347 |