ㅁㄴㅇㄻㄴㅇㄹ

[AWS] S3 정리 본문

AWS

[AWS] S3 정리

hanbin8269 2021. 3. 26. 14:41

Bucket

  • 버킷 이름은 AWS 전체에서 유니크 해야한다.
  • Region을 선택해서 어떤 지역에서 배포할 지 정할 수 있음

Block Public Access settings for bucket

  • Block all public access 옵션이 켜져 있으면 권한을 줄 때 오류가 날 수 있음

Objects

S3 URI

  • 엔드포인트 주소 (아마존 CLI를 통해서 파일을 다운 받을 때 사용함)
  • ex) aws s3 cp s3://hanbin-test-s3/asdf.txt .→ 거꾸로 하면 업로드가 됨
  • → s3://hanbin-test-s3/asdf.txt 를 . 으로 다운로드해라.

Object URL

  • 파일에 접근 할 수 있는 URL 주소
  • https://0313-s3.s3-ap-northeast-1.amazonaws.com/index.html
  • 그냥 접속하면 권한이 없다고 접근에 불가능한다고 한다.(버킷의 Block all public access 를 해제해야 함)
    • → make public 을 해주면 접근 할 수 있으나, 자주 사용하지 않는다.

Presigned URL

  • 시간이 지나면 만료가 되는 엑세스키를 포함한 미리 서명이 된 URL을 만드는 것이다.
  • 기간을 정해둔 다운로드 링크를 만들거나 할 때 사용할 수 있다.

Versioning

  • 만약 index.html 라는 이름이 같은 두개의 파일을 모두 S3에 올렸다면 전에 있던 index.html 를 덮어쓰게 되버려 이전의 파일이 사라지게 된다.
  • 이를 방지하기 위해 Bucket Versioning이 존재한다.

  • Bucket Versioning을 활성화 시키면 위와 같이 전 파일이 사라지지 않고 수정했던 시간과 함께 나오게 된다
  • 하지면 옛날 버전의 용량을 모두 계산해서 비용이 청구된다.

Default Encryption

  • 암호화 할 것인지 정함

Server Access logging

  • 어떤 ip가 어떤 resource에 접근했는지 로그를 남겨줌

Event Notification

  • 어떤 오브젝트의 이벤트를 캐치해서 그거에 맞는 이벤트를 발생 시킬 수 있다.

ex) 파일이 올라오면 그 파일에 대한 서브넷을 만들어줌

  1. 만약 사용자가 S3에 큰 용량의 이미지 파일을 업로드함
  2. lambda가 이미지 용량을 줄인다.
  3. 조정한 이미지를 따로 모아둔다.

Transfer Acceleration

  • 남미에 있는 사람이 도쿄로 이미지를 업로드하면 시간이 오래 걸린다.
  • 아마존의 전세계 네트워크를 통해서 속도를 빠르게 해준다.

Requester pays

  • 다른 아마존 계정을 가진 유저가 S3에 오브젝트 요청을 보낼 때, 요청을 보낸 유저가 요금을 지불하는 방식

With Route 53

  • 만약 S3 버킷을 Route 53으로 호스팅 하고 싶으면 Record name과 버킷의 이름이 동일해야함 ex) s3.hanbin.awscloud.work
  • 만약 ec2 인스턴스가 동작하고 있지 않을 때 같은 도메인을 띄워 오류 메세지를 띄울 수 있다.

Bucket Policy

{
	"Version" : "2012-10-17",
	"Statement" : [
		{
			"Sid" : "IPAllow",
			"Effect" : "Deny",
			"Principal" : "*",
			"Action" : ["s3:GetObject", "s3:GetObjectVersion"]
			"Resource" : [
				"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
			],
			"Condition": {
				"NotIpAddress" : {"aws:SourceIp": "54.240.143.0/24"}
			}
		}
	]
}

 

CORS

  • example.com이라는 도메인에서 S3에 요청을 보낼 때 허가되지 않는 도메인 또는 메소드 라면 CORS 오류 가 발생한다.
<CORSConfiguration>
 <CORSRule>
   <AllowedOrigin>http://www.example.com</AllowedOrigin>

   <AllowedMethod>PUT</AllowedMethod>
   <AllowedMethod>POST</AllowedMethod>
   <AllowedMethod>DELETE</AllowedMethod>

   <AllowedHeader>*</AllowedHeader>
 </CORSRule>
 <CORSRule>
   <AllowedOrigin>*</AllowedOrigin>
   <AllowedMethod>GET</AllowedMethod>
 </CORSRule>
</CORSConfiguration>

위와 같이 허가를 해줄 수 있다.

Lifecycle rule

  • 생성 후 90일이 지나면 가장 싼 storage class로 바꾸는 규칙 등 아래의 규칙들을 추가할 수 있다.

Replication rule

  • 한 버킷에서 다른 버킷으로 복사할 수 있다.
    • 백업 용도로 사용할 수 있다.
    • 나는 서울 리전에 S3 버킷을 가지고 있는데 미국에 더 빠르게 데이터를 전송하기 위해서 사용할 수 있다.

VPC endpoint

  • NAT Gateway도 없고 Internet Gateway 도 없는 ec2 인스턴스가 s3 버킷에 접근할 수 있는 방법
  • 실제로 많이 사용한다고 한다.