버킷 생성
파일 업로드 하고 업로드 한 팡리에 접근하기
주기적인 백업을 S3에 하도록 만들기
S3 검색 > 버킷만들기 버튼
버킷만들기
파일 올리기
내가 만든 버킷 > 권한 탭 > 버킷 정책 편집
Action에서 s3:GetObject 를
Effect 에서 Allow 허용해라
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::버킷이름/*"
]
}
]
}
# S3 조회
[root@EC2-STG2 ~]# aws s3 ls
2021-07-06 16:43:32 han-s3-s3
# S3 버킷 생성
# aws s3 mb s3://버킷(유일한 이름) --region ap-northeast-2
[root@EC2-STG2 ~]# aws s3 mb s3://han-s3-s3-2 --region ap-northeast-2
make_bucket: han-s3-s3-2
# 버킷 이름을 변수에 지정
# MyS3=버킷
[root@EC2-STG2 ~]# MyS3=han-s3-s3-2
# 로컬 파일 생성
[root@EC2-STG2 ~]# echo "111" > /var/www/html/111.txt
# 로컬 파일 s3로 이동
[root@EC2-STG2 ~]# aws s3 cp /var/www/html/111.txt s3://$MyS3
upload: ../var/www/html/111.txt to s3://han-s3-s3-2/111.txt
# s3 디렉토리 목록 확인하기
[root@EC2-STG2 ~]# aws s3 ls s3://$MyS3
2021-07-06 16:50:15 4 111.txt
# 디렉토리 구조 확인하기
[root@EC2-STG2 ~]# tree /var/www/html
/var/www/html
├── 111.txt
├── efs
│ └── index.html
└── index.html
# 기존에 있는 S3 버켓을 지우고, 현재 디렉토리에 있는 파일을 동기화 시켜라
[root@EC2-STG2 ~]# aws s3 sync --delete /var/www/html s3://$MyS3
upload: ../var/www/html/efs/index.html to s3://han-s3-s3-2/efs/index.html
upload: ../var/www/html/index.html to s3://han-s3-s3-2/index.html
# 서브 디렉토리 포함 확인하기
[root@EC2-STG2 ~]# aws s3 ls s3://$MyS3 --recursive
2021-07-06 16:50:15 4 111.txt
2021-07-06 16:54:50 60 efs/index.html
2021-07-06 16:54:50 137 index.html
매 1분 마다 웹 디렉터리(하위 포함)을 버킷에 업로드(백업)하기 - 동기화하기
# crontab 내용 추가
cat <<EOF >> /etc/crontab
*/1 * * * * root aws s3 sync --delete /var/www/html s3://$MyS3
EOF
# 적용
systemctl restart crond
# cron 의 동작을 log로 확인하기
tail -f /var/log/cron
# 파일 추가 생성
echo "222" > /var/www/html/222.txt
echo "333" > /var/www/html/333.txt
# 3초마다 s3 디렉토리 확인하기 - 1분정도 경과 후 s3에 파일이 동기화 되었는지 확인하기
while true; do aws s3 ls s3://$MyS3; date; echo "---[S3 ls]---"; sleep 3; done
Pre-sign URL 현재 버킷의 객체는 외부에서 접근이 불가능하지만 특정 기간 동안 특정 객체 다운 허용
# 파일 생성
echo "presigned test" > /var/www/html/presigned.txt
# S3 버킷에 업로드
aws s3 cp /var/www/html/presigned.txt s3://$MyS3
# 직접 객체 URL 바로 접속 시 안됨
# Pre-sign URL 생성 : 120초 - 임시 url이 나오게 됨
aws s3 presign s3://$MyS3/presigned.txt --expires-in 120