8. 실습 : Public 용 S3
- S3 → 버킷 만들기 : 버킷 이름(유일한 이름), 리전(서울), Uncheck(모든 퍼블릭 액세스 차단 후 아래 알고 있음 체크) 후 버킷 만들기 클릭
- 생성된 버킷 클릭 후 자신의 PC에서 아무 이미지 파일 업로드 → 파일 추가
- 업로드 된 객체 클릭 후 객체 URL 클릭하여 복사 후 웹 브라우저에서 열기
- 웹 서버의 index.html 파일 수정
# 아래는 index.html 파일을 덮어쓰기, 아래 닉네임과 src 부분은 변경
cat <<EOF> /var/www/html/index.html
<html>
<body>
<h1>minimun S3 Storage<br>
<img src="https://s3-test-mym.s3.ap-northeast-2.amazonaws.com/%EC%8B%A0%EC%A0%95%ED%98%B8.jpg">
</body>
</html>
EOF
객체 마다 모든 사람 읽기 체크 하지 않고 버킷에 객체가 업로드 시 자동으로 모든 사람 읽기 가능하게 하기
# 버킷 - 권한 - 버킷 정책 - 편집 후 아래 입력 후 변경 사항 저장
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::BUCKET_NAME/*"
]
}
]
}
9. 실습 : Private 용 S3
AWS CLI - S3 사용
# S3 조회
aws s3 ls
2021-07-13 18:42:23 minimun-test-s3
# 버킷 조회(하위 디렉터리 포함)
aws s3 ls s3://버킷
aws s3 ls s3://버킷 --recursive
# S3 버킷 생성
aws s3 mb s3://버킷(유일한 이름) --region ap-northeast-2
[root@EC2-STG2 ~]# aws s3 mb s3://minimun-test-s3-s3 --region ap-northeast-2
make_bucket: miminmun-test-s3-s3
# 버킷 이름을 변수에 지정
# MyS3=버킷
[root@EC2-STG2 ~]# MyS3=minimun-test-s3-s3
# 로컬 파일을 S3로 업로드
echo "111" > /var/www/html/111.txt
aws s3 cp /var/www/html/111.txt s3://$MyS3
aws s3 ls s3://$MyS3
# 로컬 파일 생성
[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://minimun-test-s3-s3/111.txt
# s3 디렉토리 목록 확인하기
[root@EC2-STG2 ~]# aws s3 ls s3://$MyS3
2021-07-13 18:50:12 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://minimun-test-s3-s3/efs/index.html
upload: ../var/www/html/index.html to s3://minimun-test-s3-s3/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
tail -f /var/log/cron
# 파일 추가 생성
echo "222" > /var/www/html/222.txt
echo "333" > /var/www/html/333.txt
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
aws s3 cp /var/www/html/presigned.txt s3://$MyS3
# 직접 객체 URL 바로 접속 시 안됨
# Pre-sign URL 생성 : 120초
aws s3 presign s3://$MyS3/presigned.txt --expires-in 120
(옵션) S3 Browser 등을 통해서 S3 버킷 보기
'Infra > cloud' 카테고리의 다른 글
[AFOS] 5주차 보안 서비스 - 실습 (0) | 2021.07.19 |
---|---|
[AFOS] 5주차 보안 서비스 (0) | 2021.07.17 |
[AFOS] 4주차 스토리지 서비스 - 실습 : EFS (0) | 2021.07.13 |
[AFOS] 4주차 스토리지 서비스 - 실습 : EBS (2) | 2021.07.13 |
[AFOS] 4주차 스토리지 서비스 (0) | 2021.07.12 |