BLOG

콘솔 Amplify, Fullstack Serverless Web Apps 호스팅
작성일: 2019-09-16

AWS Amplify Console 은 원하는 소스 코드 리포지토리에서 지속적으로 배포할 수있는 풀 스택 웹 앱 호스팅 서비스입니다. Amplify Console  2018년 11월 AWS re : Invent 에서 처음 소개되었고 그 이후로 AWS는 고객 의견을 반영하여 몇 가지 기능을 지속적으로 출시했습니다.

 

Instant Cache Invalidation
Amplify Console을 사용하면 콘텐츠 전달 네트워크 또는 CDN을 통해 단일 페이지 웹 앱 또는 서버리스 백엔드가있는 정적 사이트를 호스팅할 수 있습니다. CDN은 전 세계의 엣지 로케이션에 파일을 캐시하여 웹 파일 자산의 지연 시간이 짧은 배포가 가능한 분산 서버 네트워크입니다.

이전에는 CDN의 컨텐츠를 업데이트하려면 캐시를 수동으로 무효화하고 변경 사항이 전체적으로 전파될 때까지 15-20분 동안 기다려야 했습니다. 빈번한 업데이트를 수행하기 위해 개발자는 자산 헤더에서 TTL (낮은 수명) 설정과 같은 해결 방안을 찾습니다. 이는 업데이트 속도를 빠르게 하지만 성능에는 악영향을 미칩니다.  하지만 이제 더 이상 빠른 배포와 더 빠른 성능간에 트레이드 오프를 할 필요가 없어졌습니다. 리포지토리에 대한 모든 커밋 코드에서 Amplify Console가 변경 사항을 CND에 빌드하고 배포하기 때문이죠. 이로써 사용자는 브라우저에서 즉시 변경사항을 볼 수 있습니다.

 

“Deploy To Amplify Console(콘솔을 증폭을 위한 배포)”버튼

 

GitHub에 프로젝트 소스 코드를 게시할 때 Readme 문서에 “Deploy To Amplify Console”버튼  제공하여 다른 개발자가 응용 프로그램을 쉽게 빌드하고 배포할 수 있습니다. 해당 버튼을 클릭하면 Amplify Console이 열리고 코드를 배포하는 3단계 프로세스가 제안됩니다.

 

해당 예제 프로젝트를 사용하여 직접 테스트해보세요. 더욱 자세한 사항은 설명서를 살펴봐 주시기 바랍니다. Readme 문서에 줄을 추가하는 정도로 쉽게 자신의 코드 저장소에 버튼을 추가 할 수 있습니다. (단, GitHub URL에서 사용자 이름과 저장소 이름을 바꾸십시오)

[![amplifybutton](https://oneclick.amplifyapp.com/button.svg)](https://console.aws.amazon.com/amplify/home#/deploy?repo=https://github.com/username/repository)

 

수동 배포
자신이 유일한 개발자인 간단한 웹사이트를 포함하여 모든 것을 버전 컨트롤하는 것이 좋다고 생각하지만, 소스 코드 리포지토리를 배포 소스로 사용하지 않으려는 경우를 위해 Amplify Console에서는 zip 파일, 랩톱의 로컬 폴더, Amazon S3 버킷 또는 Dropbox의 공유 리포지토리와 같은 HTTPS URL을 배포 할 수 있습니다.

 

새 Amplify Console 프로젝트를 생성할 때 Deploy without Git Provider (Git Provider없이 배포하기) 옵션을 선택하십시오.

 

그런 다음 소스 파일 (노트북, Amazon S3 또는 HTTPS URI)을 선택하십시오.

 

AWS CloudFormation Integration

개발자들은 자동화를 좋아합니다. 코드 또는 인프라 배포도 다르지 않습니다. 따라서 인프라 배포가 자동화되고 반복 가능한지 확인해야 합니다. AWS CloudFormation을 사용하면 YAML 또는 JSON 설명을 기반으로 클라우드에서 인프라 생성을 자동화할 수 있습니다. Amplify Console은 AWS CloudFormation에 세 가지 새로운 리소스 유형을 추가했습니다.

  • AWS::Amplify::App
  • AWS::Amplify::Branch
  • AWS::Amplify::Domain

 

이를 통해 각각 새로운 Amplify Console 앱을 생성하고 Git 브랜치 및 사용할 DNS 도메인 이름을 정의할 수 있습니다.

AWS CloudFormation은 소스 코드 리포지토리에 연결하여 웹훅을 추가합니다. 이를 위해서는 Github 개인 액세스 토큰을 포함시켜야 합니다. 이는 다음 블로그 게시물에 자세히 설명되어 있습니다. 자격 증명(또는 OAuth 토큰)을 Cloudformation 템플릿에 하드 코딩하지 말고 매개 변수를 사용하십시오.

 

여러 Git 지점 배포
CI / CD 도구는 다른 방식이 아닌 팀 워크 플로에 맞춰져야 한다고 생각합니다. Amplify Console은 분기 패턴 배포를 지원하므로 추가 구성없이 특정 패턴과 일치하는 분기를 자동으로 배포할 수 있습니다. 패턴 일치는 정규 표현을 기반으로 합니다.

새 기능을 테스트하려면 일반적으로 Git에서 새 분기를 만듭니다. Amplify Console과 Amplify CLI가이를 감지하여 서버리스 앱을위한 별도의 백엔드 및 호스팅 인프라를 프로비저닝합니다.

분기 감지를 사용하려면 왼쪽 메뉴를 사용하여 General > Edit(일반> 편집)을 클릭 하고 Branch Autodetection(분기 자동 감지)를 켜십시오.

 

사용자 정의 HTTP 헤더
Amplify Console을 맞춤화하여 사용자 정의된 HTTP 응답 헤더를 보낼 수 있습니다. 응답 헤더는 디버깅, 보안 또는 정보 목적으로 사용될 수 있습니다. 사용자 정의 헤더를 추가하려면 앱 App Settings > Build Settings(설정> 빌드 설정)을 선택한 다음 buildspec을 편집하십시오. 예를 들어 TLS 전송을 시행하고 XSS 공격을 방지하기 위해 다음 헤더를 추가할 수 있습니다.

customHeaders:

        – pattern: ‘**/*’

          headers:

                – key: ‘Strict-Transport-Security’

                        value: ‘max-age=31536000; includeSubDomains’

                – key: ‘X-Frame-Options’

                        value: ‘X-Frame-Options: SAMEORIGIN’

                – key: ‘X-XSS-Protection’

                        value: ‘X-XSS-Protection: 1; mode=block’

                – key: ‘X-Content-Type-Options’

                        value: ‘X-Content-Type-Options: nosniff’

                – key: ‘Content-Security-Policy’

                        value: “default-src ‘self'”

 

자세한 내용은 설명서를 참고해 주십시오.

 

빌드를 위한 사용자 지정 컨테이너
마지막으로 빌드 환경을 몇 가지 변경했습니다. Amplify Console은  AWS CodeBuild를 사용합니다. 기본 빌드 컨테이너 이미지는 이제 Amazon Linux 2를 기반으로 하며SAM( Serverless Application Model ) CLI가 사전 설치되어 있습니다. 어떤 이유로든 빌드에 자체 컨테이너를 사용하려는 경우 Amplify Console을 구성 할 수 있습니다. App Settings > Build Settings(앱 설정> 빌드 설정)을 선택하십시오.

 

그런 다음 빌드 이미지 설정을 편집하십시오.

 

컨테이너 이미지에는 cURL. git,, OpenSSH와 같은 몇 가지 요구 사항이 있습니다. NodeJS 프로젝트를 빌드하려는 경우엔 node및 npm을 필요로 합니다. 더욱 자세한 내용은 설명서에서 확인할 수 있습니다.

 

이러한 새로운 기능에 대해 문의나 의견이 있으시다면 해당 페이지에 남겨주십시오. 신기능은 사용자들의 의견을 반영하여 개발된 것이고 앞으로도 그러할 것입니다.

 

 

원문 URL: https://aws.amazon.com/ko/blogs/aws/amplify-console-hosting-for-fullstack-serverless-web-apps/

 

** 메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.