Mkdocs와 S3/Cloudfront를 기반으로 한 문서 공개 시스템 구축
10781 단어 AWS
Mkdocs와 S3/Cloudfront를 기반으로 한 문서 공개 시스템 구축
TL;DR
Markdown에 기재된 문서를 GiitHub에 제출한 후
CodePipeline과 CodeBuild를 통해 HTML로 자동 변환되며, S3/CloudFront에서 DEPRO를 진행하여 공개합니다.
mkdocs에서 HTML로 변환합니다.
컨디션
No.
Resource
Purpose
Note
1
GitHub
Makrdown에 기재된 문서를 관리합니다.
-
2
AWS CodeStar
CodePipeline/CodeBuild를 생성합니다.
-
3
AWS CodePipeline
소스 코드가 GiitHub에 커밋된 Master 분기가 감지되고 AWS CodeBuild가 실행됩니다.
-
4
AWS CodeBuild
Markdown 문서와 관련해서는 Mkdocs를 통해 HTML 형식으로 변환하고 Amazon S3에서 프레젠테이션합니다.
-
5
Amazon S3
HTML 형식으로 변환된 문서를 배치합니다.여기에 놓인 문서는 공개될 것이다.
-
6
Amazon Cloudfront
S3에서 구성된 문서를 CDN으로 전송합니다.
-
7
Amazon Route 53
Cloudfront의 사용자 정의 도메인 관리
-
8
Certificate Manager
사용자 지정 도메인에 대한 SSL/TLS 인증서를 발행합니다.
-
9
AWS WAF
문서에 대한 액세스를 관리합니다.
Optional입니다.이번에는 사용하지 않겠습니다.
10
Google Analytics
공개된 문서의 접근 로그를 분석합니다.
-
구축
개요
AWS CodeStar를 통한 프로젝트 제작
AWS CodeStar에서 프로젝트를 만듭니다.
AWS CodeBuild와 AWS CodePipeline만 사용하지만 이러한 템플릿이 존재하지 않기 때문에 제작 자원이 적은
Node.js/AWS Lambda
를 선택했다.AWS CodeStar를 사용하면 GiitHub의 창고와 이번에 사용한 AWS CodePipeline, CodeBuild의 자원이 자동으로 생성됩니다.
AWS 람바다, API Gateway, S3 구간도 자동으로 제작되며 사용하지 않으면 삭제할 수도 있다.
세 개의 작업 단계를 만들다
다음 S3 구간은 CodeStar에서 자동으로 생성됩니다.
[プロジェクト名]-app
직접 사용 가능하지만, 최소한의 설정통을 사용하기 위해 새로운 통을 제작한다.도메인 및 SSL/TLS 인증서 발행
필요에 따라 도메인을 발행하고 ACM(AWS Certificate Manager)을 사용하여 SSL/TLS 인증서를 발행합니다.
ACM은
バージニア北部
영역으로 제작해야 합니다.도쿄 리존 등 ACM에 등록된 SSL/TLS 인증서는 클라우드front로 설정할 수 없습니다.
Cloudfront 설정
Cloudfront을 설정합니다.Cloudfront에서 다음 설정을 수행합니다.
오리진은 이번에 제작된 S3 통을 지정합니다.
mkdocs
를 사용할 때 Origin Path
에서 docs
를 설정하면 mkdocs
의 기본값과 일치하기 때문에 여분의 설정 변경을 생략할 수 있습니다.Restrict Bucket Access
설정은 클라우드front의 배달에서만 S3 구간에 접근할 수 있습니다.따라서 S3통을 따로 공개적으로 설치할 필요가 없다.
Alternate Domain Names
에서 문서를 공개할 영역을 지정합니다.또한 ACM에서 SSL 인증서를 먼저 작성해야 합니다.
Default Root Object
에 지정index.html
.이 옵션을 설정하지 않으면 브라우저
https://www.example.com
에서 이렇게 FQDN만 지정하면 컨텐트를 표시할 수 없습니다.DNS 설정
Cloudfront 설정이 완료되면 디버깅이 끝난 후 사용자 정의 영역에 접근할 수 있도록
개체 Cloudfront의 Distribution Domain Name을 DNS의 Alias로 등록합니다.
git clone
AWS 코드스타를 통해 프로젝트 제작이 완료되면 GitHub에 창고가 만들어지기 때문에 git clone이 진행된다.
mkdocs 설정
git clone 아래에 새
mkdocs.yml
파일을 만듭니다.제작된 내용은 다음과 같다.
# web site setting
site_name: EXAMPLE.COM
site_url: https://www.example.com/
google_analytics: ['UA-XXXXXXXXX-1', 'auto']
# search engin
extra:
search:
language: 'jp'
## othters
use_directory_urls: false
점use_directory_urls
은 false
입니다.AWS S3과 Cloudfront이 홈페이지를 공개한 후
/example/
와 같은 디렉터리가 정지된 URI라면 자동으로 보충되지 않는다index.html
(Cloudfront의Default Root Object
는 FQDN 바로 아래에만 유효하다.Google Analytics에서 사용할 설정도 수행됩니다.
CodeBuild를 통해 빌드 컨텐트를 설정합니다.
CodeBuild는 다음과 같습니다.
buildspec.yml
에 기재되어 있습니다.version: 0.2
env:
variables:
HOMEPAGE_S3_BUCKET: "www.example.com"
phases:
install:
commands:
- pip install --upgrade pip
- pip install --upgrade awscli
- aws --version
- pip install mkdocs
- mkdocs --version
pre_build:
commands:
build:
commands:
- mkdocs build
post_build:
commands:
- cd site
- pwd
- echo $HOMEPAGE_S3_BUCKET
- aws s3 sync . s3://$HOMEPAGE_S3_BUCKET/docs --delete
- aws cloudfront create-invalidation --region ap-northeast-1 --distribution-id XXXXXXXXXXXXXX --paths "/*"
distribution-id
에서 이전에 설정한 Cloudfront의 Distribution ID를 설정합니다.이 설정을 수행하지 않으면 문서를 업데이트해도 CDN 캐시가 즉시 반영되지 않습니다.
CodePipeline 구성
CodeStar에서 자동으로 작성한 Lambda/API Gateway를 삭제하면 CodePipeline을 변경하여 Deploy 관문을 삭제합니다.
만약 삭제하지 않는다면 원래의 모양을 유지해도 괜찮다.
IAM Role 정책 수정
CodeStar는 다음 명명규약에 따라 각 프로젝트의 Role을 제작했습니다.
IAM Role
CodeStarWorker-[プロジェクト名]-CodeBuild
에 다음 정책을 추가하십시오. {
"Sid": "XXXXXXXXXX",
"Effect": "Allow",
"Action": [
"cloudfront:CreateInvalidation"
],
"Resource": "*"
},
{
"Sid": "XXXXXXXXXX",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject*",
"s3:GetObjectVersion",
"s3:List*"
],
"Resource": [
"arn:aws:s3:::www.example.com",
"arn:aws:s3:::www.example.com/*"
]
}
활용단어참조
그리고 Mardown에서 문서를 작성하여 GiitHub에 제출할 때 CodePipeline은 자동으로 감지하고 CodeBuild를 통해 HTML 변환,
Cloudfront은 S3을 통해 게시됩니다.
S3에서 콘텐츠를 관리하다 보니 가격이 저렴할 뿐만 아니라 클라우드 프론트에 캐시돼 있어 반응도 좋았다.
Editors Note
2018/11/26
나는 사용AWS Amplify Console이 더 빠를 것이라고 생각한다.기사가 제작된 지 얼마 되지 않아 새로운 서비스가 발표되어 슬프고 기쁩니다.
Reference
이 문제에 관하여(Mkdocs와 S3/Cloudfront를 기반으로 한 문서 공개 시스템 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hideki/items/7dde1b961bab5ac934dd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)