S3는 확장성이 뛰어나며, 무한대로 저장 가능하고 버킷이라는 리전내 에서 유일한 영역을 생성하고 데이터를 key-value 형식의 객체로 저장한다
프리티어로 5GB까지 가능하고 Get 20,000건, Put 요청 2,000건가능하다
이를 통해 정적 웹서비스를 호스팅해보자

s3를 이용하여 정적 웹 호스팅하기

aws cli를 통하여 s3를 사용할 수 있다

1. 웹페이지파일을 만들어놓기

~ > mkdir s3_web
~ > cd s3_web
~/s3_web > mv ./../Downloads/html5up-paradigm-shift . //웹페이지파일
~/s3_web > ls
html5up-paradigm-shift

2. 버킷 생성후 파일 연동

~/s3_web > aws s3 mb s3://web-cli //버킷생성 
make_bucket: web-cli
~/s3_web > aws s3 sync . s3://web-cli //현재파일위치(.) 파일들을 버킷으로 이동
image
S3에 들어가면 버킷 생성이 된 것을 확인할 수 있다



3. 권한 설정

해당 버킷 선택 → 권한

권한은 총 3가지로 나뉘어진다

  • 퍼블릭 액세스 차단: 퍼블릭할지말지
  • 객체 소유권
  • ACL

버킷정책

버킷정책을 설정하면 위 설정을 하지않아도 권한을 설정해줄수있다

버킷정책 편집 클릭후 정책 생성기 클릭

image



버킷정책설정

image



정책편집기 설명

  • Effect
    • Allow : 접속을 허용한다
    • Deny : 접속을 거부한다
  • Principal : 대상 상대
  • Actions : 허용/거부할 방식
    • 회원가입같이 동적 웹은 post나 put이 필요하지만 우리는 정적 웹사이트이기때문에 Get만 있으면되기때문에 GetObject 를 선택
  • Amazon Resource Name: 타겟
    • 해당 버킷의 속성 탭에 나와있다

      image

결과

image



위 결과 내용(json)을 버킷 정책에 복사하고 붙여넣는다

image



특정파일에게 권한주기
"Resource": "arn:aws:s3:::web-cli/html5up-paradigm-shift/*",
모든 파일에게 권한주기
"Resource": "arn:aws:s3:::web-cli/*",

4. 결과확인

image

해당 버킷에서 url을 복사한 뒤 링크를 들어가면 정상적으로 접속한다

만약 버킷정책에서 특정파일은 거부하고싶다면
버킷정책입력기 에서 두가지 설정(허용/제한)을 만들자

{
  "Id": "Policy1644381359437",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1644381356688",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::web-cli/*", // 허용할 디렉토리 설정
      "Principal": "*"
    },
		{
      "Sid": "Stmt1644381299071",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::web-cli/test/*", //거부할 디렉토리 설정
      "Principal": "*"
    }
  ]
}

댓글 쓰기