4주차-3 AWS S3 실습

아이수베어·2022년 1월 21일
0

AFOS[2기]

목록 보기
9/29
post-thumbnail

Public S3 버킷 생성

S3에서 버킷 만들기 클릭

스크린샷 2021-07-02 오후 10 02 47

이름: 유니크한 걸로 ! (icebear-afos-s3로 바꿨습니다.), 모든 퍼블릭 액세스 차단 해제 후, 하단에 현재 설정으로 인해 ~ 체크해주기

스크린샷 2021-07-02 오후 10 03 00 스크린샷 2021-07-02 오후 10 03 13

버킷 만들기 클릭

스크린샷 2021-07-02 오후 10 03 24

만든 버킷 안에 들어가서 업로드 클릭

스크린샷 2021-07-02 오후 10 04 10

업로드할 사진 올려주기 ! (아무 사진)

스크린샷 2021-07-02 오후 10 04 28

업로드 클릭

스크린샷 2021-07-02 오후 10 04 42

짜쟌

스크린샷 2021-07-02 오후 10 05 19

파일에 들어가서 객체 URL를 복사해 웹으로 접속하면

스크린샷 2021-07-02 오후 10 05 48

접근 거부가 된다. 다른 사람이 볼 수 있게 설정해 줘야 한다.

스크린샷 2021-07-02 오후 10 06 48

사진을 클릭 후에, 작업을 눌러서 퍼블릭으로 설정을 눌러주자

스크린샷 2021-07-02 오후 10 05 12

하단에 퍼블릭 설정을 눌러주자

스크린샷 2021-07-02 오후 10 05 19

사진이 드디어 보입니다 !

스크린샷 2021-07-02 오후 10 06 01

사진에 들어가서 객체 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
스크린샷 2021-07-02 오후 10 10 27 스크린샷 2021-07-02 오후 10 09 18 스크린샷 2021-07-02 오후 10 11 15

EC2 -> 인스턴스에서 퍼블릭 IPv4주소를 복사하자

스크린샷 2021-07-02 오후 10 09 54

성공 !

스크린샷 2021-07-02 오후 10 11 31

옵션) 지랑하기

S3에서 만든 버킷 -> 업로드 클릭

스크린샷 2021-07-02 오후 10 12 14

바다 영상을 올립니다.

스크린샷 2021-07-02 오후 10 12 37

업로드 클릭 !

스크린샷 2021-07-02 오후 10 12 40

이전 사진처럼 퍼블릭으로 설정해줘야 접속이 가능

스크린샷 2021-07-02 오후 10 12 57 스크린샷 2021-07-02 오후 10 13 01

바다.mp4에 들어가서 객체 URL 복사

스크린샷 2021-07-02 오후 10 13 10

성공 ~

스크린샷 2021-07-02 오후 10 13 24

옵션 결과)

지금은 11시 20분 .. 제 친구들은 다들 새나라 어린이인가 봅니다

스크린샷 2021-07-02 오후 11 20 10

옵션) 객체마다 모든 사람 읽기를 체크하지 않고 버킷에 객체가 업로드 -> 자동으로 모든 사람 읽기 기능

만든 S3 버킷에서 권한 클릭

스크린샷 2021-07-02 오후 10 16 51

버킷 정책에 편집 클릭

스크린샷 2021-07-02 오후 10 17 15

정책에 붙여놓기 하기

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadGetObject",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
        "s3:GetObject"
        ],
      "Resource": [
        "arn:aws:s3:::BUCKET_NAME/*"
        ]
    }
  ]
}
스크린샷 2021-07-02 오후 10 17 58

변경 사항 저장 클릭

스크린샷 2021-07-02 오후 10 18 05

테스트

사진을 올려주고 '업로드' 클릭

스크린샷 2021-07-02 오후 10 20 02 스크린샷 2021-07-02 오후 10 20 05

올린 사진에 들어가서 객체 URL 복사 클릭

스크린샷 2021-07-02 오후 10 20 15

이제 퍼블릭을 따로 설정해주지 않아도 됨

스크린샷 2021-07-02 오후 10 20 27

Private S3 실습) AWS CLI-S3 사용

# 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
스크린샷 2021-07-02 오후 10 20 50 스크린샷 2021-07-02 오후 10 21 48 스크린샷 2021-07-02 오후 10 22 23 스크린샷 2021-07-02 오후 10 23 09 스크린샷 2021-07-02 오후 10 26 22 스크린샷 2021-07-02 오후 10 24 04 스크린샷 2021-07-02 오후 10 26 31 스크린샷 2021-07-02 오후 10 26 54 스크린샷 2021-07-02 오후 10 27 43 스크린샷 2021-07-02 오후 10 27 58 스크린샷 2021-07-02 오후 10 28 39

옵션) 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
스크린샷 2021-07-02 오후 10 31 00 스크린샷 2021-07-02 오후 10 31 33 스크린샷 2021-07-02 오후 10 32 29 스크린샷 2021-07-02 오후 10 33 40

옵션) 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
스크린샷 2021-07-02 오후 10 34 57 스크린샷 2021-07-02 오후 10 36 39

위에 링크를 복사해서 접속하면 접속이 된다.

스크린샷 2021-07-02 오후 10 37 03

그럼 s3 객체 URL은 접속이 되나 ?

Private 버킷에 들어가서 presigned.txt를 클릭

스크린샷 2021-07-02 오후 10 35 33

객체 URL 복사

스크린샷 2021-07-02 오후 10 35 39

당연히 안 된다.

스크린샷 2021-07-02 오후 10 35 48

심화/옵션)S3 Browser 통해서 S3 버킷 보기

  • 맥북이라 못 한다..ㅠ 아쉽다
스크린샷 2021-07-03 오전 12 04 34

자원 삭제(중요!)

EC2 인스턴스 종료

EBS 스냅샷 삭제

EBS 볼륨 삭제

EFS 삭제

S3 삭제

CloudFormation 삭제**


참고 자료 : AFOS[2기] 노션 내용

profile
Junior Cloud Engineer

0개의 댓글