Serverless (node.js)에서 자체 도메인 SSL을 적용하는 방법
11551 단어 serverlessAWSNode.js
이번에는 Serverless Framework를 사용하여
자신의 도메인을 적용하는 방법에 대해 알아보고 시도한 내용에 대해 잊지 마십시오.
전회와 같이, 도메인 취득 후 수년 계속 자고 있던 도메인
koshikawa.net
로 검증했습니다.목표
sls deploy --stage prd
그렇다면 koshikawa.net에 반영됩니다 sls deploy --stage dev
그렇다면 dev.koshikawa.net에 반영됩니다 결과는 이런 느낌
프로덕션 (koshikawa.net) prd와 콘텐츠는 동일
프로덕션 (prd.koshikawa.net)
개발 (dev.koshikawa.net)
방법
serverless-domain-manager 을 사용하는 것만.
참고 사이트
serverless.com - How to set up a custom domain name for Lambda & API Gateway with Serverless
CircleCI 및 serverless를 사용하여 브랜치별로 Lambda/API Gateway 환경 구축
serverless.com - Deploy a REST API using Serverless, Express and Node.js
사전에 해 두는 것
쓴 소스
index.js
'use strict';
const serverless = require('serverless-http');
const express = require('express');
const app = express();
app.get('/', function (req, res) {
res.send('Hello, world! on Serverless Framework');
});
app.get('/goodbye', function (req, res) {
res.send('Goodbye, world! on Serverless Framework');
});
module.exports.handler = serverless(app);
serverless.yml
serverless.yml
# serverless.yml
service: ${self:custom.name}
plugins:
- serverless-offline
- serverless-domain-manager
provider:
name: aws
region: ap-northeast-1
runtime: nodejs8.10
stage: ${opt:stage, 'dev'}
deploymentBucket:
name: ${self:custom.name}.${self:provider.region}.deploys
custom:
name: koshikawanet
customDomain:
domainName: '${self:provider.stage}.koshikawa.net'
certificateName: '*.koshikawa.net'
basePath: ''
stage: ${self:provider.stage}
createRoute53Record: true
functions:
hello:
handler: index.handler
events:
- http: GET /
goodbye:
handler: index.handler
events:
- http: GET /goodbye
deploy 전에 create_domain
sls offline start에서 로컬로 동작을 확인할 수 있으면,
sls create_domain
명령으로 다음을 수행합니다.· API Gateway에 맞춤 도메인 생성 및
· Route53에 대해 생성된 CloudFront FQDN의 Alias를 붙이기
개발 (--stage dev는 선택 사항)
$ sls create_domain --stage dev
...
Serverless: 'dev.koshikawa.net' was created/updated. New domains may take up to 40 minutes to be initialized.
프로덕션
$ sls create_domain --stage prd
...
Serverless: 'prd.koshikawa.net' was created/updated. New domains may take up to 40 minutes to be initialized.
※ 수중의 환경에서는 반영 시간에 40분도 걸리지 않고 10분 정도로 반영되었습니다.
serverless.com의 기사에도 10분~20분 정도라고 써 있습니다.
1분 기다리지 않고 deploy를 실시했는데, 커스텀 도메인에 대해서 Base Path Mappings의 설정이 되지 않고,
{"message":"Forbidden"}
가 반환되는 사건이 되어, 재작성을 강요당했기 때문에,여유있게 가자.
deploy
개발 (--stage dev는 선택 사항)
$ sls deploy --stage dev
...
Service Information
service: koshikawanet
stage: dev
region: ap-northeast-1
stack: koshikawanet-dev
api keys:
None
endpoints:
GET - https://xxxxxxx.execute-api.ap-northeast-1.amazonaws.com/dev
GET - https://xxxxxxx.execute-api.ap-northeast-1.amazonaws.com/dev/goodbye
functions:
hello: koshikawanet-dev-hello
goodbye: koshikawanet-dev-goodbye
Serverless Domain Manager Summary
Domain Name
dev.koshikawa.net
Distribution Domain Name
xxxxxxx.cloudfront.net
Serverless: Invoke aws:deploy:finalize
이제 htps : //에서 v. 코시와. 네 t 에 배포할 수 있습니다.
프로덕션
$ sls deploy --stage prd
...
Service Information
service: koshikawanet
stage: prd
region: ap-northeast-1
stack: koshikawanet-prd
api keys:
None
endpoints:
GET - https://xxxxxxx.execute-api.ap-northeast-1.amazonaws.com/prd
GET - https://xxxxxxx.execute-api.ap-northeast-1.amazonaws.com/prd/goodbye
functions:
hello: koshikawanet-prd-hello
goodbye: koshikawanet-prd-goodbye
Serverless Domain Manager Summary
Domain Name
prd.koshikawa.net
Distribution Domain Name
xxxxxxx.cloudfront.net
이제 htps : // prd. 코시와. 네 t 에 배포할 수 있습니다.
프로덕션 사이트 koshikawa.net에 prd 환경의 API 매핑
prd.koshikawa.net
는 프로덕션 사이트로서 도메인에 환경명이 들어가 있어 괄호 나쁘기 때문에,koshikawa.net
에 prd 와 같은 내용이 반영되도록(듯이) 설정합니다.
심상:
koshikawa.net
의 A 레코드로 CloudFront의 FQDN을 Alias로 설정합니다.API Gateway 콘솔에서 CloudFront의 FQDN 표시 예:
참고 : 물론 명령으로 설정 가능
API Gateway에서 지역별 API에 대한 맞춤 도메인 이름 설정
base-path-mapping의 예:
aws apigateway create-base-path-mapping \
--domain-name 'koshikawa.net' \
--base-path '' \
--rest-api-id xxx \
--stage 'prd'
현장에서는 이상입니다.
자고 있던 도메인을 키우는 방법에 대해서는 아직 검토중입니다.
Reference
이 문제에 관하여(Serverless (node.js)에서 자체 도메인 SSL을 적용하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/koshilife/items/bb7edb12f0285a241294텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)