logoStephen's 기술블로그

포스트 검색

제목, 태그로 포스트를 검색해보세요

#영상 스트리밍04 - S3서버 구축

#영상 스트리밍04 - S3서버 구축
SystemNetwork
2024년 7월 14일
목차

👉 AWS S3 접속

 

👉 S3 서비스로 접속

notion image
 

👉 버킷 만들기 클릭

notion image
 

👉 버킷 만들기 페이지

🔹 일반 구성

notion image
이름을 지정한다.
이름을 지정한다.
 

🔹 객체 소유권

notion image
비활성화됨 클릭
비활성화됨 클릭
 

🔹 이 버킷의 퍼블릭 액세스 차단 설정

notion image
이 s3 스토리지는 어느곳에서 접근이 가능하면 
디지털 보안이랑 디지털 권리가 아주 침해될 수 있으므로, 

s3서버에서는 인코딩 서버와 / 라이센스 서버만 CORS 설정으로 열어 놓아야 한다.
그래서 모든 퍼블릭 엑세스 차단으로 설정
이 s3 스토리지는 어느곳에서 접근이 가능하면 디지털 보안이랑 디지털 권리가 아주 침해될 수 있으므로, s3서버에서는 인코딩 서버와 / 라이센스 서버만 CORS 설정으로 열어 놓아야 한다. 그래서 모든 퍼블릭 엑세스 차단으로 설정
 

🔹 버킷 버전 관리

notion image
스토리지를 깃처럼 여러버전으로 관리할 수 있게 했어, 
활성화를 하면 문제가 생겼을때 복원이 쉽고, 변경 기록을 찾기 쉽다.

하지만 같은 객체를 여러번 저장하게 될 가능성이 높기 떄문에, 용량은 더 많이 차지한다.
비용이 증가한다는 말이지..

서비스 할 때는 고려해봐야 겠지만, 테스트 환경에서는 비활성화를 하자
스토리지를 깃처럼 여러버전으로 관리할 수 있게 했어, 활성화를 하면 문제가 생겼을때 복원이 쉽고, 변경 기록을 찾기 쉽다. 하지만 같은 객체를 여러번 저장하게 될 가능성이 높기 떄문에, 용량은 더 많이 차지한다. 비용이 증가한다는 말이지.. 서비스 할 때는 고려해봐야 겠지만, 테스트 환경에서는 비활성화를 하자
 

🔹 기본 암호화

notion image
일단 SSE-S3가 비용이 가장낮고, 키를 우리가 관리할 필요가 없어서 테스트 서버에서는 
추천되지만, 진짜 서비스 할때는 제어권한이 낮아서 불편할 수 있다. 

우린 테스트 환경이니까 SSE-S3를 선택해서 사용하자.
일단 SSE-S3가 비용이 가장낮고, 키를 우리가 관리할 필요가 없어서 테스트 서버에서는 추천되지만, 진짜 서비스 할때는 제어권한이 낮아서 불편할 수 있다. 우린 테스트 환경이니까 SSE-S3를 선택해서 사용하자.
 
 
notion image
이렇게 생성이 되었다.
이렇게 생성이 되었다.
 

👉 IAM 설정

notion image
IAM 대시보드로 이동해서
사용자를 클릭
IAM 대시보드로 이동해서 사용자를 클릭
 

🔹 사용자 페이지

notion image
사용자 생성 클릭
사용자 생성 클릭
 

🔹 사용자 세부 정보 지정페이지

notion image
 

🔹 권한 설정 페이지

notion image
직접 정책 연결 선택
직접 정책 연결 선택
 
notion image
S3 검색해서
FullAccess 선택 누르고 다음페이지
S3 검색해서 FullAccess 선택 누르고 다음페이지
 

🔹 검토 및 생성 페이지

notion image
사용자 생성을 하면 s3의 모든 권한을 가진 사용자가 생성이 된다.
사용자 생성을 하면 s3의 모든 권한을 가진 사용자가 생성이 된다.
 

👉 엑세스 키 만들기

notion image
IAM >> 사용자  
로 접속
IAM >> 사용자 로 접속
 
notion image
엑세스 키 만들기 선택
엑세스 키 만들기 선택
 

🔹액세스 키 모범 사례 및 대안

notion image
notion image
CLI 선택 후 다음 페이지
CLI 선택 후 다음 페이지
 

🔹 설명 태그 설정

notion image
키 만들기 선택
키 만들기 선택
 

🔹 액세스 키 검색 페이지

notion image
csv로 다운로드 후 완료를 클릭!
여기 키가 프로젝트에 사용이 될것
csv로 다운로드 후 완료를 클릭! 여기 키가 프로젝트에 사용이 될것
 
 

👉 다시 S3로 접속

notion image
 

🔹 버킷 정보 페이지

notion image
아까 생성할 때 퍼블릭 액세스 차단
으로 설정 했기 때문에, 권한이 있는 나만 접속이 가능하지 아무도 못들어온다. 

그래서 내가 열어주고 싶은곳만 열어주는 작업을 해야하는데, 
우린 웹애플리케이션서버 / 인코딩서버 에서 접근 가능할 수 있도록 만들어줘야된다.
아까 생성할 때 퍼블릭 액세스 차단 으로 설정 했기 때문에, 권한이 있는 나만 접속이 가능하지 아무도 못들어온다. 그래서 내가 열어주고 싶은곳만 열어주는 작업을 해야하는데, 우린 웹애플리케이션서버 / 인코딩서버 에서 접근 가능할 수 있도록 만들어줘야된다.
권한을 클릭하자.
권한을 클릭하자.
 

🔹 버킷 권한 페이지

notion image
권한 페이지에서 
버킷 정책을 JSON 데이터 형태로 설정할 수 있다. 
편집을 클릭
권한 페이지에서 버킷 정책을 JSON 데이터 형태로 설정할 수 있다. 편집을 클릭
 

🔹 버킷정책 편집

notion image
여기서 권한들을 추가할 수 있는데, 선택하면 자동으로 JSON 형태로 생긴다. 
여기서 내가 하고 싶은 것은 웹앱서버IP 랑 인코딩 서버 IP를 추가서 허용해야되는 것인데,
localhost같은거는 안된다. 

당연하지 서버는 내 상태를 저장하지 않는데, 내가 요청을 해도 그냥 제 3자가 요청하는 것으로 인식하게 될것. 

그렇다면 현재로서 할 수 있는 일은, 
내 컴퓨터의 외부IP를 등록해야 하고, 
만약 프로젝트가 배포가 되어있다면, 
그 프로젝트가 포함된 보안 그룹이나 로드밸런서의 IP를 등록해야될 것이다. 

만약 그 IP가 변경이 되는 거라면, 매번 다른환경의 IP를 등록해야될 수도 있다.
여기서 권한들을 추가할 수 있는데, 선택하면 자동으로 JSON 형태로 생긴다. 여기서 내가 하고 싶은 것은 웹앱서버IP 랑 인코딩 서버 IP를 추가서 허용해야되는 것인데, localhost같은거는 안된다. 당연하지 서버는 내 상태를 저장하지 않는데, 내가 요청을 해도 그냥 제 3자가 요청하는 것으로 인식하게 될것. 그렇다면 현재로서 할 수 있는 일은, 내 컴퓨터의 외부IP를 등록해야 하고, 만약 프로젝트가 배포가 되어있다면, 그 프로젝트가 포함된 보안 그룹이나 로드밸런서의 IP를 등록해야될 것이다. 만약 그 IP가 변경이 되는 거라면, 매번 다른환경의 IP를 등록해야될 수도 있다.
JavaScript
// 정책 예시
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowAccessFromSpecificIP",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
        "s3:*"
      ],
      "Resource": "arn:aws:s3:::stephen-busan-bucket/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": "내 외부 IP 여기에"
        }
      }
    }
  ]
}
위에 JSON으로 된 정책 데이터의 의미는
내 컴퓨터 내부에서 서버를 돌려서 요청을 하게 되었을 때 모든 S3요청을 허용하겠다는 뜻이다. 

내 외부IP를 aws:SrouceIP 에 등록하면 되는데, 
내가 노트북으로 하면 WIFI에 따라 외부IP가 변경이 되니, 매번 등록해줘야 할 수도 있다. 

그렇다면 나의 사설 IP가 아닌 외부 IP를 알아내야 한다.
위에 JSON으로 된 정책 데이터의 의미는 내 컴퓨터 내부에서 서버를 돌려서 요청을 하게 되었을 때 모든 S3요청을 허용하겠다는 뜻이다. 내 외부IP를 aws:SrouceIP 에 등록하면 되는데, 내가 노트북으로 하면 WIFI에 따라 외부IP가 변경이 되니, 매번 등록해줘야 할 수도 있다. 그렇다면 나의 사설 IP가 아닌 외부 IP를 알아내야 한다.
 

🔹 내 컴퓨터 외부IP 알아내는 방법

notion image