

# Git 동기화를 사용하여 리포지토리 소스 코드에서 스택 생성
<a name="git-sync-create-stack-from-repository-source-code"></a>

이 주제에서는 Git 동기화를 사용하여 Git 리포지토리에 동기화되는 CloudFormation 스택을 생성하는 방법을 설명합니다.

**중요**  
계속하기 전에 이전 섹션의 모든 [사전 요구 사항](git-sync-prereq.md)을 완료하세요.

## 리포지토리 소스 코드에서 스택 생성
<a name="create-stack-from-repository-source-code"></a>

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)에서 CloudFormation 콘솔을 엽니다.

1. 화면 상단의 탐색 모음에서 스택을 생성할 AWS 리전을 선택합니다.

1. **스택** 페이지에서 **스택 생성**을 선택하고 **새 리소스 사용(표준)**을 선택합니다.

1. **스택 생성** 페이지에서 다음을 수행합니다.

   1. **사전 조건 - 템플릿 준비**의 경우 **기존 템플릿 선택**을 선택한 상태로 유지합니다.

   1. **템플릿 지정**에서 **Git에서 동기화**를 선택하고 **다음**을 선택합니다.

1. **스택 세부 정보 지정** 페이지에서 **스택 이름**에 스택의 이름을 입력합니다. 스택 이름에는 문자(A\$1Z 및 a\$1z), 숫자(0\$19), 대시(-)를 포함할 수 있습니다.

1. **스택 배포 파일**의 **배포 파일 생성**:
   + 스택 배포 파일을 생성하고 리포지토리에 추가하지 않았다면 **다음 파라미터를 사용하여 파일을 생성하고 내 리포지토리에 배치**를 선택합니다.**
   + 리포지토리에서 스택 배포 파일을 생성한 경우 **리포지토리의 자체 파일 제공**을 선택합니다.

1. **템플릿 정의 리포지토리**의 경우 **연결된 Git 리포지토리 선택**을 선택하여 CloudFormation에 이미 연결된 Git 리포지토리를 선택하거나 **Git 리포지토리 연결**을 선택하여 새 리포지토리를 연결합니다. **Git 리포지토리 연결**을 선택한 경우 다음을 수행하세요.

   1. **리포지토리 공급자 선택**에서 다음 중 하나를 선택합니다.
      + **GitHub**
      + **GitHub Enterprise Server**
      + **GitLab**
      + **Bitbucket**
      + **GitLab 자체 관리형**

   1. **연결**의 목록에서 연결을 선택합니다. **연결** 목록에 옵션이 표시되지 않는 경우 **새 연결 추가**를 선택하면 [연결 콘솔](https://console.aws.amazon.com/codesuite/settings/connections)로 이동하여 리포지토리에 대한 연결을 생성할 수 있습니다.

1. **리포지토리** 목록에서 스택 템플릿 파일이 포함된 Git 리포지토리를 선택합니다.

1. **브랜치** 목록에서 Git 동기화에서 모니터링하려는 브랜치를 선택합니다.
**참고**  
Git 동기화는 선택한 브랜치에서 CloudFormation 템플릿 및 스택 배포 파일의 변경 사항만 모니터링합니다. 스택에 적용하려는 모든 변경 사항은 이 브랜치에 커밋해야 합니다.

1. **배포 파일 경로**에 리포지토리 브랜치의 루트를 기준으로 스택 배포 파일 이름을 포함한 전체 경로를 지정합니다.

   CloudFormation에서 파일을 생성하는 경우 이 경로는 리포지토리에서 파일이 커밋되는 위치입니다. 파일을 직접 제공하는 경우 이 경로는 리포지토리에서 파일의 위치입니다.

1. **IAM 역할**을 추가합니다. IAM 역할에는 CloudFormation에서 Git 리포지토리의 스택을 동기화하는 데 필요한 권한이 포함됩니다. **새 IAM 역할**을 선택하여 새 역할을 생성하거나 **기존 IAM 역할**을 선택하여 AWS 계정에서 기존 역할을 선택할 수 있습니다. 새 역할을 생성하도록 선택하면 필요한 권한이 역할에 포함됩니다.

1. 풀 요청에 대한 주석 활성화 또는 비활성화:
   + CloudFormation에서 스택 업데이트에 대한 풀 요청에 변경 세트를 게시하도록 하려면 **풀 요청에서 주석 활성화** 토글을 켠 상태로 유지합니다.
   + 이 토글을 끄면 CloudFormation은 리포지토리 파일이 업데이트될 때 현재 스택 구성과 풀 요청에서 제안된 변경 사항 간의 차이를 설명하지 않습니다.

1. **템플릿 파일 경로**에 스택 템플릿 파일에 대한 리포지토리 루트를 기준으로 전체 경로를 지정합니다.

1. (선택 사항) 스택 파라미터를 지정하려면 **파라미터 추가**를 선택하고 각 파라미터에 대한 키와 값을 입력한 후 **다음**을 선택합니다. 자세한 내용은 [스택 배포 파일](git-sync-concepts-terms.md#git-sync-concepts-terms-depoyment-file) 섹션을 참조하세요.

   예를 들어, 스택 배포 파일에서 **port=8080** 파라미터를 지정하려면 다음 작업을 수행합니다.

   1. **Add parameter(파라미터 추가)**를 선택합니다.

   1. **키(Key)**에 **port**를 입력합니다.

   1. **값**에 **8080**을(를) 입력합니다.

1. (선택 사항) 스택 태그를 지정하려면 **새 태그 추가**를 선택하고 각 태그에 태그 키와 값을 제공한 후 **다음**을 선택합니다. 자세한 내용은 [스택 배포 파일](git-sync-concepts-terms.md#git-sync-concepts-terms-depoyment-file) 섹션을 참조하세요.

1. **다음**을 선택하여 **스택 옵션 구성**을 계속 진행합니다. 스택 옵션의 구성에 대한 자세한 내용은 [스택 옵션 구성](cfn-console-create-stack.md#configure-stack-options)을 참조하세요.

   스택 구성을 완료했으면 **다음**을 선택하여 계속 진행합니다.

1. 스택 설정을 검토하고 다음을 확인합니다.
   + 스택 템플릿이 올바르게 구성되고 **Git에서 동기화**로 설정되어 있습니다.
   + 배포 파일이 올바르게 구성되어 있습니다.
   + 템플릿 정의 리포지토리가 올바르게 구성되어 있고, 특히 **리포지토리**와 **브랜치 이름**이 올바르게 선택되어 있습니다.
   + 배포 파일의 미리 보기가 정확하며 필요한 파라미터와 값을 포함하고 있습니다.

1. **제출**을 선택하여 스택을 생성합니다.

   **제출**을 선택하면 Git 리포지토리에서 풀 요청이 자동으로 생성됩니다. 이 풀 요청을 Git 리포지토리에 병합하여 스택을 생성해야 합니다. 스택이 생성되면 CloudFormation에서 Git 리포지토리의 변경 사항을 모니터링합니다.

## Git 리포지토리에서 스택 업데이트
<a name="update-stack-from-repository-source-code"></a>

스택을 업데이트하려면 템플릿 파일 또는 Git 리포지토리의 스택 배포 파일을 직접 변경합니다. 모니터링되는 브랜치에 변경 사항을 커밋하면 CloudFormation에서 자동으로 스택을 업데이트합니다. 풀 요청을 사용하는 경우 스택이 업데이트되기 전에 Git 리포지토리에 풀 요청이 자동으로 생성됩니다. 이 풀 요청을 Git 리포지토리에 병합하여 스택을 업데이트해야 합니다.

CloudFormation 콘솔에서 스택을 선택하고 **Git 동기화** 탭을 선택하여 스택 및 동기화 이벤트의 상태에 대한 정보를 볼 수 있습니다. 자세한 내용은 [Git 동기화 상태 대시보드](git-sync-status.md) 섹션을 참조하세요.