반응형
서비스를 위한 추가 고려사항(저비용 고성능을 위한 옵션 및 설정)을 정리한다.
> 작성일 : 2025-05-16
<1> 이미지 사용 제한
업로드한 이미지 주소를 다른 사이트 또는 앱에 무분별하게 사용할 경우 과도한 트레픽 비용이 발생함
* 특정 국가로 차단
* AWS WAF 활성화
- IP 주소, 리퍼러 기반 차단
* S3 버킷 정책 추가
* CloudFront Functions, Lambda@Edge
- 사용자 지정코드로 유연하게 접근제어
CloudFront Functions 기반으로 특정 요청 제한 적용
<1-1> 함수 생성
- CloudFront : 함수 : 함수 생성 클릭
- 세부정보에서 이름 입력 & cloudfront-js-2.0 체크 하고 함수 생성 클릭
- 특정 URL로 부터의 요청만 허용 : 아래코드 입력 후 변경 사항 저장
function handler(event) {
const request = event.request;
const headers = request.headers;
const referer = headers.referer ? headers.referer.value : null;
const urlList = [
'https://www.allowed.com/',
'https://allowed.com/'
];
if (!referer || !urlList.includes(referer)) {
const response = {
statusCode: 403,
statusDescription: 'Forbidden',
headers: {
'content-type': { value: 'text/plain' },
'cache-control': { value: 'max-age=0, no-cache, no-store, must-revalidate' },
},
body: { value: 'Access Denied.' },
};
return response;
}
return request;
}
- 특정 URL로 부터의 요청을 제한 : 아래코드 입력 후 변경 사항 저장
function handler(event) {
const request = event.request;
const headers = request.headers;
const referer = headers.referer ? headers.referer.value : null;
const urlList = [
'https://not.allowed.com/'
];
if (referer && urlList.includes(referer)) {
const response = {
statusCode: 403,
statusDescription: 'Forbidden',
headers: {
'content-type': { value: 'text/plain' },
'cache-control': { value: 'max-age=0, no-cache, no-store, must-revalidate' },
},
body: { value: 'Access Denied.' },
};
return response;
}
return request;
}
- 테스트 탭에서 테스트 수행 : 게시 탭에서 함수 게시
<1-2> 생성한 함수 연결
- CloudFront : 적용할 배포 선택 : 동작탭 : 선택 후 편집
- 함수 연결 : 뷰어 요청 : 함수 유형 (CloudFront Functions) : 함수 ARN/이름 (위에서 등록한 함수 선택) : Save changes 클릭
<2> 적절한 가격 등급 선택
배포 목록에서 생성된 ID를 선택하고 일반 탭 : 설정 우측상단의 편집 클릭
서비스를 고려하여 3가지 요금 계층 (Price Class) 중 선택할 필요가 있다.
성능이 최우선 고려가 아니고 적은 비용을 원한다면 세번째 옵션을 선택한다.
* Use North America, Europe, Asia, Middle East, and Africa
<3> Origin Shield 사용
Origin Shield를 사용하게 되면 오리진 서버의 부하를 분산 시킬 수 있다.
* 추가적인 데이터 전송 비용 발생을 고려해야 한다.
* 오리진 서버 부하 감소를 성능향상 기대할 수 있다.
배포 목록에서 생성된 ID를 선택하고 원본 탭에서 버킷명을 선택 후 편집 클릭
Enable Origin Shield에서 예를 클릭하고 리전을 선택
반응형
'Guide' 카테고리의 다른 글
[Guide | AWS] S3 / CloudFront 이미지 서비스 구축 (3) - CloudFront / S3 연동설정 (0) | 2025.05.15 |
---|---|
[Guide | AWS] S3 / CloudFront 이미지 서비스 구축 (2) - 이미지 업로드 계정 / 권한 (0) | 2025.05.14 |
[Guide | AWS] S3 / CloudFront 이미지 서비스 구축 (1) - S3 버킷 생성 (0) | 2025.05.14 |
[Guide | Test] JMeter를 활용한 서비스 성능 테스트 (0) | 2025.01.05 |
[Guide | Marketing] 웹사이트 수집 설정 - Google (0) | 2025.01.04 |