[AWS] APIGateway에서 Express의 공개 라우팅을 통과하고 싶었습니다.
2631 단어 Expressserverless웹Node.jsAWS
소개
신졸 유루유루 어드벤트 캘린더 21일 담당입니다!
요즘 AWS를 만질 수있는 기회가 있고 그것에 대해 조금.
배경
「별로 액세스 없는 사이트이고, Serverless로 Web 서비스 만들면 저비용의 운용을 할 수 있는 것은!?」라고 하는 흐름으로, AWS, Lambda로 움직이는 Web 서버의 구축을 Node.js&Express를 사용해 실시했습니다.
Express의 스켈레톤 코드를 준비해, 평소와 같이 public하하에 클라이언트 JS나 CSS의 자원을 넣어, 아래의 example.html와 같이 자신의 URL을 지정해 자원을 읽어들였습니다.
하지만 Serverless.yml에서 특정 라우팅을 LambdaFunction에 연결하여 정의했기 때문에 example.html과 같은 리소스 URL을 요청하더라도 해당 LambdaFunction이 없으면 화가 났습니다. (이 문제의 해명에 3일 정도 지출했습니다)
sample.html<head>
<link rel="stylesheet" type="text/css" href="/public/css/example.css">
</head>
( 이전에 쓴 기사에서 Express 스켈레톤 코드로 서버 구축 수법도 쓰고 있으므로 꼭 봐 주세요 )
대응 방법 검토
클라이언트로부터의 자원의 요구는 「/public/」로 시작되는 것으로부터, 이하의 3개를 검토했습니다.
「별로 액세스 없는 사이트이고, Serverless로 Web 서비스 만들면 저비용의 운용을 할 수 있는 것은!?」라고 하는 흐름으로, AWS, Lambda로 움직이는 Web 서버의 구축을 Node.js&Express를 사용해 실시했습니다.
Express의 스켈레톤 코드를 준비해, 평소와 같이 public하하에 클라이언트 JS나 CSS의 자원을 넣어, 아래의 example.html와 같이 자신의 URL을 지정해 자원을 읽어들였습니다.
하지만 Serverless.yml에서 특정 라우팅을 LambdaFunction에 연결하여 정의했기 때문에 example.html과 같은 리소스 URL을 요청하더라도 해당 LambdaFunction이 없으면 화가 났습니다. (이 문제의 해명에 3일 정도 지출했습니다)
sample.html
<head>
<link rel="stylesheet" type="text/css" href="/public/css/example.css">
</head>
( 이전에 쓴 기사에서 Express 스켈레톤 코드로 서버 구축 수법도 쓰고 있으므로 꼭 봐 주세요 )
대응 방법 검토
클라이언트로부터의 자원의 요구는 「/public/」로 시작되는 것으로부터, 이하의 3개를 검토했습니다.
순수한 APIGateway와 Lambda의 동작, Express의 동작을 보증하면서, 가용성을 요구한 결과 3을 선택했습니다. CloundFront는 cdn으로 원래 도입 예정이며 S3의 운영 비용이 낮기 때문에이 선택이 최선이라고 판단했습니다.
대응
AWSConsole에서 CloudFront를 설정합니다.
새로운 Distribution을 만들고 Origin에는 APIGateway의 ARN을, CustumOrigin에는 S3의 ARN을 설정합니다. Origin의 설정 예를 그림 1에, Behhaviours의 설정 예를 그림 2에 나타냅니다.
그림 1 (Origin 설정 예)
그림 2 (Behaviors 설정 예)
결론
어드벤트 캘린더의 타이틀에 맞지 않는 내용이었을지도 모릅니다만, 만약 Serverless로 Web서버를 만드는 사람의 참고가 되면 다행입니다.
실제로는 AWSConsole에서 직접 Distribution을 괴롭히는 것이 아니라 Terraform을 사용하여 문서화를 실시하고 있습니다. 어쨌든 그것을 기사로 생각합니다.
또한 s3에 대한 리소스 배포도 shell로 자동화했기 때문에 언젠가 기사로 할지도 모릅니다.
흥미가 있는 분은 꼭 봐 주세요.
끝까지 읽어 주셔서 감사합니다.
어드벤트 캘린더의 타이틀에 맞지 않는 내용이었을지도 모릅니다만, 만약 Serverless로 Web서버를 만드는 사람의 참고가 되면 다행입니다.
실제로는 AWSConsole에서 직접 Distribution을 괴롭히는 것이 아니라 Terraform을 사용하여 문서화를 실시하고 있습니다. 어쨌든 그것을 기사로 생각합니다.
또한 s3에 대한 리소스 배포도 shell로 자동화했기 때문에 언젠가 기사로 할지도 모릅니다.
흥미가 있는 분은 꼭 봐 주세요.
끝까지 읽어 주셔서 감사합니다.
Reference
이 문제에 관하여([AWS] APIGateway에서 Express의 공개 라우팅을 통과하고 싶었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/bearjiro/items/82800c35d80e441d8368텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)