URI 재작성에 AWS CloudFront 함수 사용
4674 단어 cloudfrontawsjavascriptfunctions
거의 60개의 (알려진) 리디렉션이 포함된 스프레드시트를 받기 전이었습니다. 더 많은 가능성이 있습니다.
무엇을 해야 합니까?
이미 복잡한 솔루션을 더 복잡하게 만들고 싶지 않았습니다.
Load Balancer Listeners에서 허용되는 규칙 수에 제한이 있다는 것을 알고 있었습니다.
콘텐츠 보안 정책을 관리하는 Lambda@Edge 기능을 추가하거나 수정하는 데 관심이 없었습니다.
다행스럽게도 이 새로운 요구 사항을 받은 시점에 AWS에서 CloudFront 기능을 발표했습니다.
CloudFront Functions란 무엇입니까?
...새로운 서버리스 에지 컴퓨팅 기능. 이 새로운 CloudFront 기능을 사용하여 47개국 90개 도시의 225개 이상의 CloudFront 엣지 로케이션에서 JavaScript 기능을 실행할 수 있습니다.... ( read the full announcement here ).
CloudFront Functions가 어떻게 도움이 될 수 있습니까?
다음과 같은 ALB 리스너가 나에게 부과하는 규칙 제한 외에:
일부 재 작성 작업을 수행하려면 와일드 카드를 사용해야했을 것입니다. 상상력과 다음 예를 사용하여 이것이 유리한 결과를 생성하지 않을 수 있는 방법을 확인할 수 있습니다.
사용 사례 예
AllRecipies과 같은 웹사이트가 특정 레시피를 새롭거나 개선된 이름으로 리디렉션하려고 한다고 상상해 보십시오.
여기에서 제공되는 홈메이드 맥앤치즈를 고려해보세요.
https://www.allrecipes.com/recipe/11679/homemade-mac-and-cheese/
예를 들어 해당 URI의
11679
가 레시피 카탈로그라고 가정해 보겠습니다. AllRecipies는 성공하지 못한 항목을 다른 레시피 카탈로그로 리디렉션하려고 할 수 있습니다. 따라서 다음과 같은 와일드카드를 사용합니다.https://www.allrecipes.com/recipe/11679/* 모든 요청을 https://www.allrecipies.com/summer21/에 푸시
이제 https://www.allrecipes.com/recipe/11679/homemade-MOUSE-and-cheese/이
200
Page Not Found로 이동하는 대신 404
응답으로 성공적으로 리디렉션됩니다.참고: 이상하게도 AllRecipes는 실제로 해당 URL을 올바른 레시피로 전달하기 위해 약간의 마법을 사용하고 있습니다.
URI 재작성에 CloudFront 함수 사용
해결책을 찾기 위해 총력을 기울이고 있는 저는 즉시 CloudFront Functions를 찔렀습니다. 처음 시도한 후 this이 어떻게 작동하는지 솔직히 잘 모르겠습니다. 그래서 이 구현에 대한 다른 사람의 피드백을 받고 싶습니다.
향후 재작성에 대한 알 수 없는 양의 요청을 수용하기 위해 CloudFront Functions Introduction Blog 에 제공된 예제를 조정하고 구현했습니다.
내 구현
function handler(event) {
var request = event.request;
var rewrites = [
['/summer21','/recipies?year=2021&season=summer'],
['/recipies/homemade-mouse-and-cheese/', '/recipies/homemade-mac-and-cheese/'],
['/recipies/camping/grilling', '/recipies?activities=camping&with=grill']
]
for (var arrayIndex in rewrites){
if (request.uri == rewrites[arrayIndex][0]) {
var newUri = rewrites[arrayIndex][1];
var response = {
statusCode: 301,
statusDescription: 'Permanently moved',
headers: {
"location": { "value": newUri }
}
}
return response;
}
}
return request;
}
솔루션을 더욱 강력하게 만들기
이 CloudFront 함수는 예상대로 작동하는 것 같습니다. 이 예제에서는 URI 패턴을 리디렉션하여 새 경로로 전달하거나 클라이언트 또는 서버 측 기능에 대한 검색 쿼리를 포함할 수 있습니다. Edge에서 JavaScript를 사용하는 동안. 의심할 여지 없이 이것은 요청에서 쿼리 문자열을 추가로 수용하도록 수정될 수 있습니다.
저는 특히 이것이 고객을 위한 것이기 때문에 일반적으로 CloudFormation을 통해 솔루션을 배포하는 것을 좋아합니다. 그러나이 게시물 및 기능 구현 당시 CloudFormation 팀은 CloudFormation에서 관리 리소스로 생성하기 위한 사용자 가이드에 대한 업데이트를 발표하지 않았습니다. 빨리 출시해야 한다고 합니다. 정보가 있으면 여기로 돌아가 업데이트에서 CloudFormation 템플릿을 제공하려고 합니다.
그때까지 이것을 시도하거나 자신의 환경에서 CloudFront 기능을 구현하려는 경우 동료 AWS 커뮤니티 빌더의 게시물을 확인하는 것이 좋습니다.
아래에 CloudFront Functions, 이 특정 기능을 구현하기로 결정한 방법 또는 이 특정 기능을 더 개선할 수 있는 방법에 대해 주저하지 말고 의견을 남겨주십시오.
Reference
이 문제에 관하여(URI 재작성에 AWS CloudFront 함수 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws-builders/use-aws-cloudfront-functions-for-uri-rewrites-587d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)