인증 및 권한 부여: 사용자가 보호된 웹 페이지에 액세스하려는 경우, Lambda@Edge를 사용하여 사용자가 로그인한 경우에만 액세스를 허용하도록 요청을 검증할 수 있습니다. 사용자가 로그인하지 않은 경우, Lambda@Edge는 사용자를 로그인 페이지로 리디렉션할 수 있습니다.
캐싱 제어: Lambda@Edge를 사용하여 CloudFront 캐시에서 동적 컨텐츠를 캐시할 수 있습니다. 예를 들어, 특정 요청 매개 변수가 변경되면 Lambda@Edge는 CloudFront 캐시에서 새로운 버전의 컨텐츠를 가져올 수 있습니다.
URL 조작: Lambda@Edge를 사용하여 URL 경로를 조작하여 새로운 경로에 대한 요청을 생성할 수 있습니다. 예를 들어, 사용자가 특정 URL에 액세스하면 Lambda@Edge는 서버에서 데이터를 가져와 새로운 URL에 대한 요청을 생성합니다.
보안: Lambda@Edge를 사용하여 HTTP 요청 및 응답에 보안 헤더를 추가할 수 있습니다. 또한 Lambda@Edge를 사용하여 트래픽을 검사하고 악성 트래픽을 필터링할 수 있습니당.
'use strict';
exports.handler = (event, context, callback) => {
const request = event.Records[0].cf.request;
const headers = request.headers;
const useragent = headers['user-agent'][0].value;
if (useragent.includes('MSIE')) {
const response = {
status: '403',
statusDescription: 'Forbidden',
body: 'This website does not support Internet Explorer',
headers: {
'content-type': [{key: 'Content-Type', value: 'text/plain'}]
}
};
callback(null, response);
} else {
callback(null, request);
}
};
위 함수는 Lambda@Edge에서 HTTP 요청을 받아, 요청의 User-Agent 헤더에서 Internet Explorer를 사용하는지 확인합니다. 만약 Internet Explorer를 사용하고 있다면, Lambda 함수는 403 Forbidden 응답을 반환하고, 그렇지 않은 경우에는 요청을 그대로 전달합니다.
이 함수를 사용하기 위해서는 다음과 같은 단계가 필요합니다.
AWS Lambda 콘솔에서 새로운 Lambda 함수를 생성합니다.
함수 코드를 복사하여 붙여넣고, 함수 실행 역할을 정의합니다.
함수를 배포하기 위해 zip 파일로 압축하고, AWS CLI 또는 콘솔을 사용하여 AWS Lambda 콘솔에 업로드합니다.
CloudFront 배포를 선택하고, Lambda 함수를 CloudFront 배포에 연결합니다.
이제 CloudFront에서 HTTP 요청을 받으면, Lambda@Edge 함수가 실행되어 HTTP 요청을 처리하고, 수정된 요청 또는 응답을 반환합니다.