사용자 정의 도메인, HTTPS 및 지속적인 배포가 있는 AWS S3 관리형 Angular 어플리케이션을 만드는 방법
요구 사항
기본 정적 사이트 설정
S3
'Properties'
으로 이동'Static Website'
'Use this bucket to host a website'
및 색인을 입력합니다.색인 문서와 오류 문서에 사용되는 html'Permissions'
으로 이동'Bucket Policy'
BUCKET_NAME
bucket의 이름(example.com)으로 바꿉니다.{
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::BUCKET_NAME/*"
]
}
]
}
주의: 이 정책은 버킷 정책에서 찾을 수 있습니다.json은 이 버킷의 모든 대상을 기본적으로 공개할 것입니다. 이것은 우리의 배치 스크립트가 잠시 후에 필요합니다. 왜냐하면 일반적인 경우 대상은 기본적으로 개인이기 때문입니다.만약 이렇게 하지 않는다면, 당신의 사이트는 방문할 수 없을 것입니다.'Properties'
으로 이동'Static Website'
'Redirect requests'
및 프로토콜 'http'
사용자 정의 도메인 및 HTTPS
라우팅 53 및 DNS
'Create Hosted Zone'
및 도메인 예 입력유형'Public Hosted Zone'
포함 comAWS 인증서 관리자(SSL 인증서)
ns
구역을 선택했습니다.자세한 내용은 여기를 클릭하십시오https://aws.amazon.com/certificate-manager/faqs/.us-east-1
하위 영역www.example.com을 누르고 'www'
'Next'
, 클릭'DNS Validation'
'Next'
'Review'
'Confirm and Request'
'Create record in route53'
AWS 클라우드(CDN)
'Continue'
'Create Distribution'
에서 'Web'
'Get Started'
에 입력합니다.그것은 포맷통에 있어야 한다.이름?s3 사이트aws구역.아마존com'Origin Domain Name'
에서 'Viewer Protocol Policy'
'redirect http to https'
에서 'Price class'
를 선택합니다.이들 지역 이외의 사용자들은 더 많은 지연을 겪겠지만, 이것은 더 싸다 'use only US, Canada and Europe'
에 apex역(example.com)을 입력하고 새 줄에 당신의 역과 'Alternate Domain Names (CNAMEs)'
자역www.example.com을 입력하세요'www'
에서 'SSL Certificate'
를 선택하고 AWS 인증서 관리자'Custom SSL Certificate'
에서 'Default Root Object'
입력'index.html'
주의: 매달 1000번의 무효 경로 요청은 무료이지만, 이후의 무효 경로 요청은 추가적인 무효 경로마다 0.005달러가 듭니다.
참고 한 번에 최대 3000개의 잘못된 경로 요청을 처리할 수 있습니다.와일드카드 '*' 요청은 한 번에 최대 15개의 경로를 무효화할 수 있습니다. 따라서 프로그램이 15개 이상의 파일을 포함하고 있다면, 와일드카드 경로가 아닌 배치 스크립트에서 모든 경로를 수동으로 삭제해야 합니다.
53번 도로로 돌아가다
'Create Distribuion'
'Hosted Zones'
및 이름 비움'Create Record Set'
를 'Alias'
로 설정선택
'Yes'
및 드롭다운 목록에서 이전에 만든 클라우드 프런트엔드 배포 선택생성하려면 클릭
'Alias Target'
은 이름으로 한다.당신의 사이트는 지금 https://example.com와 https://www.example.com 아래에 있어야 합니다.
연속 제공
AWS 코드 파이핑
'www'
, 기본 이름은 벌금'New service role'
검사'Allow AWS CodePipeline to create a service role so it can be used with this new pipeline'
'Next'
'Source provider'
'GitHub'
및 AWS가 GitHub 계정에 액세스할 수 있도록 허용'Connect To GitHub'
아래 'Repository'
'Branch'
'Change detection options'
'GitHub webhooks'
'Next'
에서 'Build provider'
를 클릭합니다.이것은 너를 팝업 창으로 데려갈 것이다.'AWS CodeBuild'
에 원하는 이름을 입력합니다. 'Region'
에서 선택'Project name'
'Create project'
에서 'Project Name'
를 선택합니다.여기에는 Angular 애플리케이션 구축에 필요한 언어 실행 시간'Environment image'
에서 선택'Managed image'
'Operating System'
에서 'Ubuntu'
를 선택합니다.여기에는 우리가 원하는 NodeJS 버전 12가 포함되어 있습니다.'Runtimes'
에서 선택'Standard'
'Image'
에서 선택'aws/codebuild/standard:3.0'
'Image version'
에서 'Always use the latest image for this runtime version'
를 선택하고 적당한 이름을 입력(예를 들어 "codebuild-service-role-s3-angular")'Environment Type'
에서 선택'Linux'
'Service role'
'New Service Role'
'Build specifications'
하면 파이프 구축에 대해 설명합니다.'User a buildspec file'
AWS 코드 빌드
'Continue to CodePipeline'
파일을 만듭니다.이는 CD 파이프의 코드 빌드 섹션에서 angular 응용 프로그램을 구축하고 S3 bucket의 루트 디렉토리로 복사하는 데 사용됩니다.'Next'
파일에 복사합니다.당신의 사이트 이름(example.com)으로 바꾸세요
'Skip deploy stage'
.ngbuild을 실행하면
'Create pipeline'
angular app를 포함하는 폴더의 이름으로 바꿉니다. 이 폴더는 기본angular app의 buildspec.yaml
폴더에 있습니다.buildspec.yaml
angular 응용 프로그램의 구축 환경@SITE_NAME
을 기본값으로 바꾸기이전에 만들어진cloudfront 발행판의 ID로 바꿉니다.
@ANGULAR_APP_NAME
이것은 Cloudfront 대시보드에서 찾을 수 있습니다.version: 0.2
env:
variables:
S3_BUCKET: "@SITE_NAME"
APP_NAME: "@ANGULAR_APP_NAME"
BUILD_ENV: "@ANGULAR_APP_ENVIRONMENT"
CDN_DISTRIBUTION_ID: "@CLOUDFRONT_DISTRIBUTION_ID"
phases:
install:
runtime-versions:
# NodeJS included in the docker image
nodejs: 12
commands:
# Install node dependancies.
- npm install
build:
commands:
# Builds Angular application.
- node ./node_modules/@angular/cli/bin/ng build --$BUILD_ENV
post_build:
commands:
# Clear S3 bucket.
- aws s3 rm s3://$S3_BUCKET --recursive
# Copy files from dist to S3
- cd dist
- aws s3 cp $APP_NAME s3://$S3_BUCKET --recursive
# Begin cloudfront invalidation
- aws cloudfront create-invalidation --distribution-id $CDN_DISTRIBUTION_ID --paths "/*"
코드 파이핑 IAM 역할 권한
코드 파이핑 및 코드 빌드에 대한 IAM 역할이 생성됩니다.CodeBuild 역할에게 S3 및 Cloudfront에 대한 액세스 권한을 부여해야 합니다.
dist
@ANGULAR_APP_ENVIRONMENT
prod
을 입력하고 @CLOUDFRONT_DISTRIBUTION_ID
옆에 있는 확인란을 클릭합니다.'Roles'
을 입력하고 'Attach Policy'
옆에 있는 확인란을 클릭합니다.'S3'
을 클릭합니다.결말
네가 해냈어, 일하는 좋은 친구야.❤️
Reference
이 문제에 관하여(사용자 정의 도메인, HTTPS 및 지속적인 배포가 있는 AWS S3 관리형 Angular 어플리케이션을 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/shane/how-to-create-an-aws-s3-hosted-angular-app-with-a-custom-domain-https-and-continuous-deployment-2i3i텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)