본문 바로가기

트러블슈팅

[Aws] s3 cors 에러

1. 기본개념
버킷 : 최상위 폴더, 리젼안에서 유니크한 이름으로 해야함
객체 : 저장되는 파일들

2. 기본 사용법
aws 콘솔에서 버킷 생성
객체 업로드
버킷 및 객체 관리

- 버킷에 권한 설정 등

- 객체에 퍼블릭 설정, 메타데이터 설정

- 메타데이터는  HTTP 표준에 정의된 메타데이터와 S3 전용 메타데이터로 나뉘는데, 

메타데이터 내용
Cache-Control 브라우저 캐시 정책
Content-Disposition attachment; filename="파일명" 을 주면 자동으로 브라우저 다운로드로 됨
Content-Type  
Content-Language  



3. 응용사례
기본적으로 퍼블릭 권한은 없다
pre signed url 을 이용하는데 다운로드용, 업로드용 만들수 있다
다운로드 용은 s3에 저장되어있는 객체에 대한 퍼블릭 url을 잠시 만들어 준다. 영구적이지 않아서 권한 관리가 된다
업로드용은 s3 에 put 요청으로 파일 업로드를 할 수 있는 임시 url을 준다. 업로드 전까지 실제 s3에 파일이 생기진 않는다
pre signed upload url 생성이후 실제 업로드하기 전에 중간 상태가 존재함. 이 상태를 정의해서 이 상태에서는 다운로드 받지 못하게 처리해야 한다. 실제 업로드가 되면 s3 이벤트 서비스를 이용해서 서버에 파일 상태를 업로드 완료 상태로 바꿔 줘야한다.
(s3이벤트 발생 - sns 에 put - 서버에 파일상태 변경 요청)

 

4. 트러블 슈팅

s3 presigned url 또는 public url 를 html5 canvas 에 이용하는 경우 cors 에러가 남

: 버킷별로 cors 설정을 할 수 있음

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

 

CORS 관련 글

https://developer.mozilla.org/ko/docs/Web/HTTP/CORS

 

교차 출처 리소스 공유 (CORS)

교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라

developer.mozilla.org

https://velog.io/@jmkim87/%EC%A7%80%EA%B8%8B%EC%A7%80%EA%B8%8B%ED%95%9C-CORS-%ED%8C%8C%ED%97%A4%EC%B3%90%EB%B3%B4%EC%9E%90

 

지긋지긋한 CORS 파헤쳐보자

CORS (Cross Domain) 서버와의 통신을 위해 ajax나 XMLHttpRequest를 사용하다보면 CORS 에러가 나오는 경우가 종종 발생합니다. 할때마다 설정 방법이나 우회 방법을 항상 찾다보니 매번 고생하는거 같아 ��

velog.io

https://enterkey.tistory.com/409

 

javascript ajax 크로스 도메인 요청 하기 (CORS)

개요 웹 개발시 자바스크립트로 외부 서버의 경로로 ajax요청을 날리면 에러가 나면서 요청이 실패한다. 웹 브라우저의 콘솔창에 아래와 같은 메시지를 보게 된다. 크롬 No 'Access-Control-Allow-Origin'

enterkey.tistory.com