

Amazon CodeCatalyst는 더 이상 신규 고객에게 공개되지 않습니다. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세한 내용은 [CodeCatalyst에서 마이그레이션하는 방법](migration.md) 단원을 참조하십시오.

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

# 자습서: Amazon S3에 아티팩트 업로드
<a name="build-deploy"></a>

이 자습서에서는 몇 가지 [빌드 작업이](workflows-concepts.md#workflows-concepts-actions) 포함된 Amazon CodeCatalyst [워크플로](workflows-concepts.md#workflows-concepts-workflows)를 사용하여 Amazon S3 버킷에 아티팩트를 업로드하는 방법을 알아봅니다. 이러한 작업은 워크플로가 시작될 때 직렬로 실행됩니다. 첫 번째 빌드 작업은 두 개의 파일 `Hello.txt` 및 `Goodbye.txt`를 생성하고 이를 빌드 아티팩트에 번들링합니다. 두 번째 빌드 작업은 아티팩트를 Amazon S3에 업로드합니다. 커밋을 소스 리포지토리로 푸시할 때마다 워크플로가 실행되도록 구성합니다.

**Topics**
+ [사전 조건](#build-deploy-tut-prereqs)
+ [1단계: AWS 역할 생성](#build-deploy-tut-role)
+ [2단계: Amazon S3 버킷 생성](#build-deploy-tut-artifact)
+ [3단계: 소스 리포지토리 생성](#deploy-tut-lambda-cfn-source)
+ [4단계: 워크플로 생성](#build-deploy-tut-workflow.title)
+ [5단계: 실험 결과 확인](#build-deploy.s3.verify)
+ [정리](#deploy-tut-lambda-cfn-clean-up)

## 사전 조건
<a name="build-deploy-tut-prereqs"></a>

시작하려면 다음이 필요합니다.
+ 연결된 AWS 계정이 있는 CodeCatalyst **스페이스**가 필요합니다. 자세한 내용은 [스페이스 생성](spaces-create.md) 섹션을 참조하세요.
+ 스페이스에는 다음과 같은 빈 프로젝트가 필요합니다.

  ```
  codecatalyst-artifact-project
  ```

  **처음부터 시작** 옵션을 사용하여 이 프로젝트를 생성합니다.

  자세한 내용은 [Amazon CodeCatalyst에서 빈 프로젝트 생성](projects-create.md#projects-create-empty) 섹션을 참조하세요.
+ 프로젝트에는 다음과 같은 CodeCatalyst **환경**이 필요합니다.

  ```
  codecatalyst-artifact-environment
  ```

  다음과 같이 이 환경을 구성합니다.
  + **개발** 등 유형을 선택합니다.
  +  AWS 계정에 연결합니다.
  + **기본 IAM 역할**의 경우 아무 역할이나 선택합니다. 나중에 다른 역할을 지정합니다.

  자세한 내용은 [AWS 계정 및 VPCs에 배포](deploy-environments.md) 단원을 참조하십시오.

## 1단계: AWS 역할 생성
<a name="build-deploy-tut-role"></a>

이 단계에서는 나중에 워크플로의 빌드 작업에 할당할 AWS IAM 역할을 생성합니다. 이 역할은 CodeCatalyst 빌드 작업에 AWS 계정에 액세스하고 아티팩트가 저장될 Amazon S3에 쓸 수 있는 권한을 부여합니다. 이 역할을 **빌드 역할**이라고 합니다.

**참고**  
다른 자습서를 위해 생성한 빌드 역할이 이미 있는 경우 이 자습서에도 사용할 수 있습니다. 다음 절차에 표시된 권한 및 신뢰 정책이 있는지 확인하세요.

IAM 역할에 대한 자세한 내용은 *AWS AWS Identity and Access Management 사용 설명서*의 [IAM 역할을](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) 참조하세요.

**빌드 역할을 생성하려면**

1. 역할에 대한 정책을 다음과 같이 생성합니다.

   1. 에 로그인합니다 AWS.

   1. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

   1. 탐색 창에서 **Policies**를 선택합니다.

   1. **정책 생성**을 선택합니다.

   1. **JSON** 탭을 선택합니다.

   1. 기존 코드를 삭제합니다.

   1. 다음 코드를 붙여넣습니다.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "VisualEditor0",
                  "Effect": "Allow",
                  "Action": [
                      "s3:PutObject",
                      "s3:ListBucket"
                  ],
                  "Resource": "*"
              }
          ]
      }
      ```

------
**참고**  
역할을 처음 사용하여 워크플로 작업을 실행할 때 리소스 정책 문에서 와일드카드를 사용한 다음, 사용 가능한 리소스 이름으로 정책 범위를 좁힙니다.  

      ```
      "Resource": "*"
      ```

   1. **다음: 태그**를 선택합니다.

   1. **다음: 검토**를 선택합니다.

   1. **이름**에 다음과 같이 입력합니다.

      ```
      codecatalyst-s3-build-policy
      ```

   1. **정책 생성**을 선택합니다.

      이제 권한 정책을 생성했습니다.

1. 다음과 같이 빌드 역할을 생성합니다.

   1. 탐색 창에서 **역할**을 선택한 후 **역할 생성**을 선택합니다.

   1. **사용자 지정 신뢰 정책**을 선택합니다.

   1. 기존 사용자 지정 신뢰 정책을 삭제합니다.

   1. 다음 사용자 지정 신뢰 정책을 추가합니다.

   1. **다음**을 선택합니다.

   1. **권한 정책**에서 `codecatalyst-s3-build-policy`를 검색하고 해당 확인란을 선택합니다.

   1. **다음**을 선택합니다.

   1. **역할 이름**에 다음과 같이 입력합니다.

      ```
      codecatalyst-s3-build-role
      ```

   1. **역할 설명**에 다음과 같이 입력합니다.

      ```
      CodeCatalyst build role
      ```

   1. **역할 생성**을 선택합니다.

   이제 신뢰 정책 및 권한 정책으로 빌드 역할을 생성했습니다.

## 2단계: Amazon S3 버킷 생성
<a name="build-deploy-tut-artifact"></a>

이 단계에서는 `Hello.txt` 및 `Goodbye.txt` 아티팩트가 업로드되는 Amazon S3 버킷을 생성합니다.

**Amazon S3 버킷을 생성하려면**

1. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. 기본 창에서 **버킷 생성**을 선택합니다.

1. **버킷 이름**에 다음과 같이 입력합니다.

   ```
   codecatalyst-artifact-bucket
   ```

1. **AWS 리전**에서 리전을 선택합니다. 이 자습서에서는 **미국 서부(오리건) us-west-2**를 선택했다고 가정합니다. Amazon S3에서 지원되는 리전에 대한 자세한 내용은 *AWS 일반 참조*의 [Amazon Simple Storage Service 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/s3.html)을 참조하세요.

1. 페이지 맨 아래에 있는 **버킷 생성** 버튼을 선택합니다.

1. 방금 생성한 버킷의 이름을 복사합니다. 예시:

   ```
   codecatalyst-artifact-bucket
   ```

이제 미국 서부(오리건) us-west-2 리전에 **codecatalyst-artifact-bucket** 버킷을 생성했습니다.

## 3단계: 소스 리포지토리 생성
<a name="deploy-tut-lambda-cfn-source"></a>

이 단계에서는 CodeCatalyst에 소스 리포지토리를 생성합니다. 이 리포지토리는 자습서의 워크플로 정의 파일을 저장하는 데 사용됩니다.

소스 리포지토리에 대한 자세한 정보는 [소스 리포지토리 생성](source-repositories-create.md) 섹션을 참조하세요.

**소스 리포지토리를 생성하려면**

1. [https://codecatalyst.aws/](https://codecatalyst.aws/)에서 CodeCatalyst 콘솔을 엽니다.

1. `codecatalyst-artifact-project` 프로젝트로 이동합니다.

1. 탐색 창에서 **코드**를 선택한 다음 **소스 리포지토리**를 선택합니다.

1. **리포지토리 추가**를 선택하고 **리포지토리 생성**을 선택합니다.

1. **리포지토리 이름**에 다음과 같이 입력합니다.

   ```
   codecatalyst-artifact-source-repository
   ```

1. **생성(Create)**을 선택합니다.

이제 `codecatalyst-artifact-source-repository` 리포지토리를 생성했습니다.

## 4단계: 워크플로 생성
<a name="build-deploy-tut-workflow.title"></a>

이 단계에서는 순차적으로 실행되는 다음 구성 요소로 구성된 워크플로를 생성합니다.
+ 트리거 - 이 트리거는 소스 리포지토리에 변경 사항을 푸시할 때 워크플로 실행을 자동으로 시작합니다. 트리거에 대한 자세한 내용은 [트리거를 사용하여 워크플로 실행 자동 시작](workflows-add-trigger.md) 섹션을 참조하세요.
+ 빌드 작업 `GenerateFiles` - 트리거 시 `GenerateFiles` 작업은 두 개의 파일 `Hello.txt` 및 `Goodbye.txt`를 생성하고 출력 아티팩트 `codecatalystArtifact`에 패키징합니다.
+ 다른 빌드 작업 `Upload` - `GenerateFiles` 작업이 완료되면 `Upload` 작업이 AWS CLI 명령 `aws s3 sync`를 실행하여 소스 리포지토리의 `codecatalystArtifact` 및 소스 리포지토리에 있는 파일을 Amazon S3 버킷에 업로드합니다. 는 CodeCatalyst 컴퓨팅 플랫폼에 사전 설치 및 구성되어 AWS CLI 제공되므로 설치하거나 구성할 필요가 없습니다.

  CodeCatalyst 컴퓨팅 플랫폼의 사전 패키징된 소프트웨어에 대한 자세한 내용은 [런타임 환경 이미지 지정](build-images.md) 섹션을 참조하세요. AWS CLI명령에 대한 자세한 내용은 `aws s3 sync` 명령 참조의 [동기화](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html)를 *AWS CLI 참조*하세요.

이러한 빌드 작업에 대한 자세한 내용은 [워크플로로 빌드하기](build-workflow-actions.md) 섹션을 참조하세요.

**워크플로 생성**

1. 탐색 창에서 **CI/CD**를 선택한 다음 **워크플로**를 선택합니다.

1. **워크플로 생성**을 선택합니다.

1. YAML 샘플 코드를 삭제합니다.

1. 다음 YAML 코드를 추가합니다.
**참고**  
다음 YAML 코드에서 원하는 경우 `Connections:` 섹션을 생략할 수 있습니다. 이 섹션을 생략하는 경우 환경의 **기본 IAM 역할** 필드에 지정된 역할에 [1단계: AWS 역할 생성](#build-deploy-tut-role)에 설명된 권한 및 신뢰 정책이 포함되어 있는지 확인해야 합니다. 기본 IAM 역할이 있는 환경 설정에 대한 자세한 내용은 [환경 생성](deploy-environments-creating-environment.md) 섹션을 참조하세요.

   ```
   Name: codecatalyst-artifact-workflow
   SchemaVersion: 1.0
   
   Triggers:
     - Type: Push
       Branches:
         - main   
   Actions:
     GenerateFiles:
       Identifier: aws/build@v1
       Configuration: 
         Steps:
           # Create the output files.
           - Run: echo "Hello, World!" > "Hello.txt"
           - Run: echo "Goodbye!" > "Goodbye.txt"
       Outputs:
         Artifacts:
           - Name: codecatalystArtifact
             Files:
               - "**/*"
     Upload:
       Identifier: aws/build@v1
       DependsOn: 
         - GenerateFiles
       Environment:
         Name: codecatalyst-artifact-environment
         Connections:
           - Name: codecatalyst-account-connection
             Role: codecatalyst-s3-build-role
       Inputs:
         Artifacts:
           - codecatalystArtifact
       Configuration: 
         Steps:
           # Upload the output artifact to the S3 bucket.
           - Run: aws s3 sync . s3://codecatalyst-artifact-bucket
   ```

   위의 코드를 다음과 같이 변경합니다.
   + *codecatalyst-artifact-environment*를 [사전 조건](#build-deploy-tut-prereqs)에서 생성한 환경 이름으로 변경합니다.
   + *codecatalyst-account-connection*을 [사전 조건](#build-deploy-tut-prereqs)에서 생성한 계정 연결 이름으로 변경합니다.
   + *codecatalyst-s3-build-role*을 [1단계: AWS 역할 생성](#build-deploy-tut-role)에서 생성한 빌드 역할 이름으로 변경합니다.
   + *codecatalyst-artifact-bucket*을 [2단계: Amazon S3 버킷 생성](#build-deploy-tut-artifact)에서 생성한 Amazon S3 이름으로 변경합니다.

   이러한 파일의 속성에 대한 자세한 내용은 [빌드 및 테스트 작업 YAML](build-action-ref.md) 섹션을 참조하세요.

1. (선택 사항) 커밋하기 전에 YAML 코드가 유효한지 확인하려면 **검증**을 선택합니다.

1. **커밋**을 선택합니다.

1. **워크플로 커밋** 대화 상자에서 다음을 입력합니다.

   1. **워크플로 파일 이름**은 기본값인 `codecatalyst-artifact-workflow`를 그대로 사용합니다.

   1. **커밋 메시지**에 다음을 입력합니다.

      ```
      add initial workflow file
      ```

   1. **리포지토리**에서 **codecatalyst-artifact-source-repository**를 선택합니다.

   1. **브랜치 이름**에서 **기본**을 선택합니다.

   1. **커밋**을 선택합니다.

   이제 워크플로를 생성했습니다. 워크플로 상단에 정의된 트리거로 인해 워크플로 실행이 자동으로 시작됩니다. 특히 `codecatalyst-artifact-workflow.yaml` 파일을 소스 리포지토리에 커밋(및 푸시)할 때 트리거가 워크플로 실행을 시작했습니다.

**진행 중인 워크플로 실행을 보려면**

1. 탐색 창에서 **CI/CD**를 선택한 다음 **워크플로**를 선택합니다.

1. 방금 생성한 `codecatalyst-artifact-workflow` 워크플로를 선택합니다.

1. **GenerateFiles**를 선택하여 첫 번째 빌드 작업 진행 상황을 확인합니다.

1. **업로드**를 선택하여 두 번째 빌드 작업 진행 상황을 확인합니다.

1. **업로드** 작업이 완료되면 다음을 수행합니다.
   + 워크플로 실행에 성공한 경우 다음 절차로 이동합니다.
   + 워크플로 실행에 실패한 경우 **로그**를 선택하여 문제를 해결합니다.

## 5단계: 실험 결과 확인
<a name="build-deploy.s3.verify"></a>

워크플로가 실행된 후 Amazon S3 서비스로 이동하여 *codecatalyst-artifact-bucket* 버킷을 확인합니다. 이제 다음 파일과 폴더가 포함되어야 합니다.

```
.
|— .aws/
|— .git/
|Goodbye.txt
|Hello.txt
|REAME.md
```

`Goodbye.txt` 및 `Hello.txt` 파일은 `codecatalystArtifact` 아티팩트의 일부이므로 업로드되었습니다. `.aws/`, `.git/` 및 `README.md` 파일은 소스 리포지토리에 있었기 때문에 업로드되었습니다.

## 정리
<a name="deploy-tut-lambda-cfn-clean-up"></a>

이러한 서비스에 대한 요금이 부과되지 않도록 CodeCatalyst 및 AWS 에서 정리합니다.

**CodeCatalyst에서 정리하려면**

1. [https://codecatalyst.aws/](https://codecatalyst.aws/)에서 CodeCatalyst 콘솔을 엽니다.

1. `codecatalyst-artifact-source-repository` 소스 리포지토리를 삭제합니다.

1. `codecatalyst-artifact-workflow` 워크플로를 선택합니다.

**에서 정리하려면 AWS**

1. 다음과 같이 Amazon S3에서 정리합니다.

   1. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

   1. `codecatalyst-artifact-bucket` 버킷에서 파일을 삭제합니다.

   1. `codecatalyst-artifact-bucket` 버킷을 삭제합니다.

1. 다음과 같이 IAM에서 정리합니다.

   1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

   1. `codecatalyst-s3-build-policy`를 삭제합니다.

   1. `codecatalyst-s3-build-role`를 삭제합니다.