빌드 설정 구성 - AWS Amplify 호스팅

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

빌드 설정 구성

Amplify Hosting으로 앱을 배포하면 리포지토리의 package.json 파일을 검사하여 프런트엔드 프레임워크 및 관련 빌드 설정을 자동으로 탐지합니다. 앱의 빌드 설정을 저장하는 옵션은 다음과 같습니다.

  • Amplify 콘솔에 빌드 설정 저장 - Amplify 콘솔은 빌드 설정을 자동 감지하여 Amplify 콘솔을 통해 액세스할 수 있도록 저장합니다. Amplify는 리포지토리에 저장된 amplify.yml 파일이 없는 한 모든 브랜치에 이러한 설정을 적용합니다.

  • 리포지토리에 빌드 설정 저장 - amplify.yml 파일을 다운로드하여 리포지토리의 루트에 추가합니다.

앱 설정, 빌드 설정을 선택하여 Amplify 콘솔에서 앱의 빌드 설정을 편집할 수 있습니다. 이러한 빌드 설정은 리포지토리에 amplify.yml 파일이 저장된 브랜치를 제외하고 앱의 모든 브랜치에 적용됩니다.

참고

앱이 연속 배포되도록 설정하고 git 리포지토리에 연결된 경우에만 Amplify 콘솔의 앱 설정 메뉴에 빌드 설정이 표시됩니다. 이러한 유형의 배포에 대한 지침은 기존 코드로 시작하기를 참조하십시오.

빌드 사양 명령 및 설정

빌드 사양 YAML에는 Amplify에서 빌드를 실행하는 데 사용할 빌드 명령 및 관련 설정 모음이 포함되어 있습니다. 다음 목록은 이러한 설정과 사용 방법을 설명합니다.

version

Amplify YAML 버전 번호입니다.

appRoot

이 애플리케이션이 있는 리포지토리 내 경로입니다. 여러 개의 애플리케이션이 정의되어 있지 않으면 무시됩니다.

env

이 섹션에 환경 변수를 추가합니다. 콘솔을 사용하여 환경 변수를 추가할 수도 있습니다.

백엔드

Amplify CLI 명령을 실행하여 백엔드 프로비저닝, Lambda 함수 업데이트 또는 GraphQL 스키마를 연속 배포의 일환으로 수행합니다. 프런트엔드와 함께 백엔드 배포 방법에 대해 알아보십시오.

프런트엔드

프런트엔드 빌드 명령을 실행합니다.

테스트

테스트 단계에서 명령을 실행합니다. 앱에 테스트를 추가하는 방법에 대해 알아보십시오.

빌드 단계

프런트엔드와 백엔드, 테스트에는 빌드의 각 시퀀스 동안 실행되는 명령을 나타내는 세 가지 단계가 있습니다.

  • preBuild - preBuild 스크립트는 실제 빌드가 시작되기 전에 실행되지만 Amplify가 종속성을 설치한 후에 실행됩니다.

  • build - 사용자의 빌드 명령입니다.

  • postBuild - 사후 빌드 스크립트는 빌드가 종료되고 Amplify가 필요한 모든 결과물을 출력 디렉터리에 복사한 후 실행됩니다.

buildpath

빌드를 실행하는 데 사용할 경로입니다. Amplify는 이 경로를 사용하여 빌드 아티팩트를 찾습니다. 경로를 지정하지 않으면 Amplify는 모노레포 앱 루트를 사용합니다(예: apps/app).

artifacts>base-directory

빌드 아티팩트가 있는 디렉터리입니다.

artifacts>files

배포하려는 아티팩트의 파일을 지정합니다. 모든 파일을 포함하려면 **/*를 입력합니다.

cache

buildspec의 캐시 필드는 node_modules 폴더와 같은 빌드 시간 종속성을 캐시하는 데 사용되며, 고객 앱이 내장된 패키지 관리자 및 프레임워크를 기반으로 자동으로 제안됩니다. 첫 번째 빌드에서는 여기에 있는 모든 경로가 캐시되며, 이후 빌드에서는 캐시를 다시 확장하고 캐시된 종속성을 최대한 활용하여 빌드 시간을 단축합니다.

다음의 빌드 사양 예제는 기본 YAML 구문을 나타냅니다.

version: 1 env: variables: key: value backend: phases: preBuild: commands: - *enter command* build: commands: - *enter command* postBuild: commands: - *enter command* frontend: buildpath: phases: preBuild: commands: - cd react-app - npm ci build: commands: - npm run build artifacts: files: - location - location discard-paths: yes baseDirectory: location cache: paths: - path - path test: phases: preTest: commands: - *enter command* test: commands: - *enter command* postTest: commands: - *enter command* artifacts: files: - location - location configFilePath: *location* baseDirectory: *location*

브랜치별 빌드 설정

배시 쉘 스크립팅을 사용하여 브랜치별 빌드 설정을 지정할 수 있습니다. 예를 들어 다음 스크립트는 시스템 환경 변수 $AWS_BRANCH를 사용하여 브랜치 이름이 main인 경우 한 세트의 명령을 실행하고, 브랜치 이름이 dev인 경우 다른 세트의 명령을 실행합니다.

frontend: phases: build: commands: - if [ "${AWS_BRANCH}" = "main" ]; then echo "main branch"; fi - if [ "${AWS_BRANCH}" = "dev" ]; then echo "dev branch"; fi

모노레포의 경우 사용자는 빌드를 실행하기 위해 폴더로 연속적으로 cd할 수 있기를 원합니다. cd 명령을 실행한 후에는 빌드의 모든 스테이지에 적용되므로 별도의 단계에서 명령을 반복하지 않아도 됩니다.

version: 1 env: variables: key: value frontend: phases: preBuild: commands: - cd react-app - npm ci build: commands: - npm run build

프런트엔드와 함께 백엔드 배포

amplifyPush 명령은 백엔드 배포에 도움을 제공하는 도우미 스크립트입니다. 아래의 빌드 설정은 현재 브랜치에 대해 배포할 올바른 백엔드 환경을 자동으로 결정합니다.

version: 1 env: variables: key: value backend: phases: build: commands: - amplifyPush --simple

출력 폴더 설정

다음 빌드 설정에서는 출력 디렉터리를 퍼블릭 폴더로 설정합니다.

frontend: phases: commands: build: - yarn run build artifacts: baseDirectory: public

빌드의 일부로 패키지 설치

빌드하는 동안 npm 또는 yarn 명령을 사용하여 패키지를 설치할 수 있습니다.

frontend: phases: build: commands: - npm install -g <package> - <package> deploy - yarn run build artifacts: baseDirectory: public

프라이빗 npm 레지스트리 사용

빌드 설정에서 프라이빗 레지스트리에 대한 참조를 추가하거나 환경 변수로 추가할 수 있습니다.

build: phases: preBuild: commands: - npm config set <key> <value> - npm config set registry https://registry.npmjs.org - npm config set always-auth true - npm config set email hello@amplifyapp.com - yarn install

OS 패키지 설치

Amplify의 AL2023 이미지는 권한이 없는 사용자라는 이름으로 코드를 실행합니다. amplify Amplify는 이 사용자에게 Linux sudo 명령을 사용하여 OS 명령을 실행할 수 있는 권한을 부여합니다. 누락된 종속성을 위한 OS 패키지를 설치하려는 경우 yum 및 with 와 rpm 같은 명령을 사용할 수 있습니다. sudo

다음 예제 빌드 섹션에서는 명령을 사용하여 OS 패키지를 설치하는 구문을 보여줍니다. sudo

build: phases: preBuild: commands: - sudo yum install -y <package>

모든 빌드에 대한 키-값 스토리지

envCache은(는) 빌드 시 키-값 스토리지를 제공합니다 envCache에 저장된 값은 빌드 중에만 수정할 수 있으며 다음 빌드에서 재사용할 수 있습니다. envCache을(를) 사용하여 배포된 환경에 정보를 저장하고 연속 빌드에서 빌드 컨테이너에 사용할 수 있습니다. envCache에 저장된 값과 달리, 빌드 중 환경 변수의 변경 사항은 미래 빌드에 지속되지 않습니다.

사용 예:

envCache --set <key> <value> envCache --get <key>

커밋에서 빌드 건너뛰기

특정 커밋에서 자동 빌드를 건너뛰려면 커밋 메시지 끝에 [skip-cd] 텍스트를 포함합니다.

자동 빌드 비활성화

모든 코드 커밋에 대해 자동 빌드를 비활성화도록 Amplify를 구성할 수 있습니다. 설정하려면 앱 설정, 일반을 선택한 다음 모든 연결된 브랜치가 있는 브랜치 섹션으로 스크롤합니다 . 브랜치를 선택한 다음 작업, 자동 빌드 비활성화를 선택합니다. 해당 브랜치에 대한 추가 커밋은 더 이상 새 빌드를 트리거하지 않습니다.

diff 기반 프런트엔드 빌드 및 배포 활성화 또는 비활성화

diff 기반 프런트엔드 빌드를 사용하도록 Amplify를 구성할 수 있습니다. 활성화 시 각 빌드를 시작할 때 Amplify가 기본적으로 사용자의 appRoot 또는 /src/ 폴더에서 diff 실행을 시도합니다. Amplify가 차이점을 발견하지 못하면 프런트엔드 빌드, 테스트(구성된 경우) 및 배포 단계를 건너뛰고 호스팅된 앱을 업데이트하지 않습니다.

diff 기반 프런트엔드 빌드 및 배포를 구성하려면
  1. 에 AWS Management Console 로그인하고 Amplify 콘솔을 엽니다.

  2. diff 기반 프런트엔드 빌드를 구성하고 배포할 앱을 선택합니다.

  3. 탐색 창에서 앱 설정, 환경 변수를 선택합니다.

  4. 환경 변수 섹션에서 변수 관리를 선택합니다.

  5. 환경 변수를 구성하는 절차는 diff 기반 프런트엔드 빌드 및 배포의 활성화 여부에 따라 달라집니다.

    • diff 기반 프런트엔드 빌드 및 배포를 활성화하려면

      1. 변수 관리 섹션의 변수AMPLIFY_DIFF_DEPLOY를 입력합니다.

      2. true를 입력합니다.

    • diff 기반 프런트엔드 빌드 및 배포를 비활성화하려면

      1. 다음 중 하나를 수행하십시오.

        • 변수 관리 섹션에서 AMPLIFY_DIFF_DEPLOY을(를) 찾습니다. false를 입력합니다.

        • AMPLIFY_DIFF_DEPLOY 환경 변수를 제거합니다.

  6. 저장을 선택합니다.

선택적으로 AMPLIFY_DIFF_DEPLOY_ROOT 환경 변수를 설정하여 기본 경로를 리포지토리의 루트와 관련된 경로(예: dist)로 재정의할 수 있습니다.

diff 기반 백엔드 빌드 활성화 또는 비활성화

AMPLIFY_DIFF_BACKEND 환경 변수를 사용하여 diff 기반 백엔드 빌드를 사용하도록 Amplify Hosting을 구성할 수 있습니다. diff 기반 백엔드 빌드를 활성화하면 각 빌드를 시작할 때 Amplify가 리포지토리의 amplify 폴더에서 diff 실행을 시도합니다. Amplify에서 차이점을 발견하지 못하면 백엔드 빌드 단계를 건너뛰고 백엔드 리소스를 업데이트하지 않습니다. 프로젝트의 리포지토리에 amplify 폴더가 없는 경우 Amplify는 AMPLIFY_DIFF_BACKEND 환경 변수 값을 무시합니다.

현재 백엔드 단계의 빌드 설정에 사용자 지정 명령이 지정되어 있는 경우, 조건부 백엔드 빌드는 작동하지 않습니다. 이러한 사용자 지정 명령을 실행하려면 앱의 amplify.yml 파일에 있는 빌드 설정의 프런트엔드 단계로 해당 명령을 이동해야 합니다.

diff 기반 백엔드 빌드를 구성하려면
  1. 에 AWS Management Console 로그인하고 Amplify 콘솔을 엽니다.

  2. diff 기반 백엔드 빌드를 구성할 앱을 선택합니다.

  3. 탐색 창에서 앱 설정, 환경 변수를 선택합니다.

  4. 환경 변수 섹션에서 변수 관리를 선택합니다.

  5. 환경 변수를 구성하는 절차는 diff 기반 백엔드 빌드의 활성화 여부에 따라 달라집니다.

    • diff 기반 백엔드 빌드를 활성화하려면

      1. 변수 관리 섹션의 변수AMPLIFY_DIFF_BACKEND를 입력합니다.

      2. true를 입력합니다.

    • diff 기반 백엔드 빌드를 비활성화하려면

      1. 다음 중 하나를 수행하십시오.

        • 변수 관리 섹션에서 AMPLIFY_DIFF_BACKEND을(를) 찾습니다. false를 입력합니다.

        • AMPLIFY_DIFF_BACKEND 환경 변수를 제거합니다.

  6. 저장을 선택합니다.