S3
에서 버킷 만들기
클릭
이름: 유니크한 걸로 ! (icebear-afos-s3로 바꿨습니다.), 모든 퍼블릭 액세스 차단
해제 후, 하단에 현재 설정으로 인해 ~
체크해주기
버킷 만들기
클릭
만든 버킷 안에 들어가서 업로드
클릭
업로드할 사진 올려주기 ! (아무 사진)
업로드
클릭
짜쟌
파일에 들어가서 객체 URL
를 복사해 웹으로 접속하면
접근 거부가 된다. 다른 사람이 볼 수 있게 설정해 줘야 한다.
사진을 클릭 후에, 작업
을 눌러서 퍼블릭으로 설정
을 눌러주자
하단에 퍼블릭 설정
을 눌러주자
사진이 드디어 보입니다 !
사진에 들어가서 객체 URL를 복사한다.
STG1 인스턴스
에 들어가서 웹서버의 index.html
파일을 수정
#root 권한으로 변경
sudo su
# index.html 파일 양식
cat <<EOF> /var/www/html/index.html
<html>
<body>
<h1>닉네임 S3 Storage<br>
<img src="https://S3 객체 URL 주소 입력">
</body>
</html>
EOF
EC2
-> 인스턴스
에서 퍼블릭 IPv4주소
를 복사하자
성공 !
S3에서 만든 버킷
-> 업로드
클릭
바다 영상을 올립니다.
업로드
클릭 !
이전 사진처럼 퍼블릭으로 설정해줘야 접속이 가능
바다.mp4
에 들어가서 객체 URL
복사
성공 ~
지금은 11시 20분 .. 제 친구들은 다들 새나라 어린이인가 봅니다
체크
하지 않고 버킷에 객체가 업로드 -> 자동으로 모든 사람 읽기 기능만든 S3 버킷
에서 권한
클릭
버킷 정책에 편집
클릭
정책에 붙여놓기 하기
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::BUCKET_NAME/*"
]
}
]
}
변경 사항 저장
클릭
사진을 올려주고 '업로드' 클릭
올린 사진에 들어가서 객체 URL
복사 클릭
이제 퍼블릭
을 따로 설정해주지 않아도 됨
# S3 조회
aws s3 ls
# 버킷 조회(하위 디렉터리 포함)
aws s3 ls s3://버킷
aws s3 ls s3://버킷 --recursive
# S3 버킷 생성
aws s3 mb s3://버킷(유일한 이름) --region ap-northeast-2
# 버킷 이름을 변수에 지정
MyS3=버킷
# 로컬 파일을 S3로 업로드
echo "111" > /var/www/html/111.txt
aws s3 cp /var/www/html/111.txt s3://$MyS3
aws s3 ls s3://$MyS3
# 웹 디렉터리(하위 포함)을 버킷에 업로드(백업)하기
tree /var/www/html
aws s3 sync --delete /var/www/html s3://$MyS3
aws s3 ls s3://$MyS3 --recursive
# 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
# 파일 생성
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
위에 링크를 복사해서 접속하면 접속이 된다.
Private 버킷
에 들어가서 presigned.txt
를 클릭
객체 URL
복사
당연히 안 된다.
참고 자료 : AFOS[2기] 노션 내용