자습서: Amazon S3에 아티팩트 업로드
이 자습서에서는 몇 가지 빌드 작업이 포함된 Amazon CodeCatalyst 워크플로를 사용하여 Amazon S3 버킷에 아티팩트를 업로드하는 방법을 알아봅니다. 이러한 작업은 워크플로가 시작될 때 직렬로 실행됩니다. 첫 번째 빌드 작업은 두 개의 파일 Hello.txt
및 Goodbye.txt
를 생성하고 이를 빌드 아티팩트에 번들링합니다. 두 번째 빌드 작업은 아티팩트를 Amazon S3에 업로드합니다. 커밋을 소스 리포지토리로 푸시할 때마다 워크플로가 실행되도록 구성합니다.
사전 조건
시작하려면 다음이 필요합니다.
-
연결된 AWS 계정이 있는 CodeCatalyst 스페이스가 필요합니다. 자세한 내용은 스페이스 생성 섹션을 참조하세요.
-
스페이스에는 다음과 같은 빈 프로젝트가 필요합니다.
codecatalyst-artifact-project
처음부터 시작 옵션을 사용하여 이 프로젝트를 생성합니다.
자세한 내용은 Amazon CodeCatalyst에서 빈 프로젝트 생성 섹션을 참조하세요.
-
프로젝트에는 다음과 같은 CodeCatalyst 환경이 필요합니다.
codecatalyst-artifact-environment
다음과 같이 이 환경을 구성합니다.
-
개발 등 유형을 선택합니다.
-
AWS 계정에 연결합니다.
-
기본 IAM 역할의 경우 아무 역할이나 선택합니다. 나중에 다른 역할을 지정합니다.
자세한 내용은 AWS 계정 및 VPC에 배포 섹션을 참조하십시오.
-
1단계: AWS 역할 생성
이 단계에서는 나중에 워크플로의 빌드 작업에 할당할 AWS IAM 역할을 생성합니다. 이 역할은 CodeCatalyst 빌드 작업에게 AWS 계정에 액세스하고 아티팩트가 저장될 Amazon S3에 쓸 수 있는 권한을 부여합니다. 이 역할을 빌드 역할이라고 합니다.
참고
다른 자습서를 위해 생성한 빌드 역할이 이미 있는 경우 이 자습서에도 사용할 수 있습니다. 다음 절차에 표시된 권한 및 신뢰 정책이 있는지 확인하세요.
자세한 내용은 AWS AWS Identity and Access Management 사용자 가이드의 IAM 역할을 참조하세요.
빌드 역할을 생성하려면
-
역할에 대한 정책을 다음과 같이 생성합니다.
-
AWS에 로그인합니다.
https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
탐색 창에서 Policies를 선택합니다.
-
정책 생성을 선택합니다.
-
JSON 탭을 선택합니다.
-
기존 코드를 삭제합니다.
-
다음 코드를 붙여넣습니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListBucket" ], "Resource": "*" } ] }
참고
역할을 처음 사용하여 워크플로 작업을 실행할 때 리소스 정책 문에서 와일드카드를 사용한 다음, 사용 가능한 리소스 이름으로 정책 범위를 좁힙니다.
"Resource": "*"
-
다음: 태그를 선택합니다.
-
다음: 검토를 선택합니다.
-
이름에 다음과 같이 입력합니다.
codecatalyst-s3-build-policy
-
정책 생성을 선택합니다.
이제 권한 정책을 생성했습니다.
-
-
다음과 같이 빌드 역할을 생성합니다.
-
탐색 창에서 역할을 선택한 후 역할 생성을 선택합니다.
-
사용자 지정 신뢰 정책을 선택합니다.
-
기존 사용자 지정 신뢰 정책을 삭제합니다.
-
다음 사용자 지정 신뢰 정책을 추가합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
-
Next(다음)를 선택합니다.
-
권한 정책에서
codecatalyst-s3-build-policy
를 검색하고 해당 확인란을 선택합니다. -
Next(다음)를 선택합니다.
-
역할 이름에 다음과 같이 입력합니다.
codecatalyst-s3-build-role
-
역할 설명에 다음과 같이 입력합니다.
CodeCatalyst build role
-
역할 생성을 선택합니다.
이제 신뢰 정책 및 권한 정책으로 빌드 역할을 생성했습니다.
-
2단계: Amazon S3 버킷 생성
이 단계에서는 Hello.txt
및 Goodbye.txt
아티팩트가 업로드되는 Amazon S3 버킷을 생성합니다.
Amazon S3 버킷을 생성하려면
https://console.aws.amazon.com/s3/
에서 Amazon S3 콘솔을 엽니다. -
기본 창에서 버킷 생성을 선택합니다.
-
버킷 이름에 다음과 같이 입력합니다.
codecatalyst-artifact-bucket
-
AWS 리전에서 리전을 선택합니다. 이 자습서에서는 미국 서부(오리건) us-west-2를 선택했다고 가정합니다. Amazon S3에서 지원되는 리전에 대한 자세한 내용은 AWS 일반 참조의 Amazon Simple Storage Service 엔드포인트 및 할당량을 참조하세요.
-
페이지 맨 아래에 있는 버킷 생성 버튼을 선택합니다.
-
방금 생성한 버킷의 이름을 복사합니다. 예시:
codecatalyst-artifact-bucket
이제 미국 서부(오리건) us-west-2 리전에 codecatalyst-artifact-bucket
버킷을 생성했습니다.
3단계: 소스 리포지토리 생성
이 단계에서는 CodeCatalyst에 소스 리포지토리를 생성합니다. 이 리포지토리는 자습서의 워크플로 정의 파일을 저장하는 데 사용됩니다.
소스 리포지토리에 대한 자세한 정보는 소스 리포지토리 생성 섹션을 참조하세요.
소스 리포지토리를 생성하려면
https://codecatalyst.aws/
에서 CodeCatalyst 콘솔을 엽니다. -
codecatalyst-artifact-project
프로젝트로 이동합니다. -
탐색 창에서 코드를 선택한 다음 소스 리포지토리를 선택합니다.
-
리포지토리 추가를 선택하고 리포지토리 생성을 선택합니다.
-
리포지토리 이름에 다음과 같이 입력합니다.
codecatalyst-artifact-source-repository
-
생성(Create)을 선택합니다.
이제 codecatalyst-artifact-source-repository
리포지토리를 생성했습니다.
4단계: 워크플로 생성
이 단계에서는 순차적으로 실행되는 다음 구성 요소로 구성된 워크플로를 생성합니다.
-
트리거 - 이 트리거는 소스 리포지토리에 변경 사항을 푸시할 때 워크플로 실행을 자동으로 시작합니다. 트리거에 대한 자세한 내용은 트리거를 사용하여 워크플로 실행 자동 시작 섹션을 참조하세요.
-
빌드 작업
GenerateFiles
- 트리거 시GenerateFiles
작업은 두 개의 파일Hello.txt
및Goodbye.txt
를 생성하고 출력 아티팩트codecatalystArtifact
에 패키징합니다. -
다른 빌드 작업
Upload
-GenerateFiles
작업이 완료되면Upload
작업이 AWS CLI 명령aws s3 sync
를 실행하여 소스 리포지토리의codecatalystArtifact
및 소스 리포지토리에 있는 파일을 Amazon S3 버킷에 업로드합니다. AWS CLI는 CodeCatalyst 컴퓨팅 플랫폼에 사전 설치 및 구성되어 제공되므로 설치 또는 구성할 필요가 없습니다.CodeCatalyst 컴퓨팅 플랫폼의 사전 패키징된 소프트웨어에 대한 자세한 내용은 런타임 환경 이미지 지정 섹션을 참조하세요. AWS CLI의
aws s3 sync
명령에 대한 자세한 내용은 AWS CLI 명령 참조의 sync를 참조하세요.
이러한 빌드 작업에 대한 자세한 내용은 워크플로로 빌드하기 섹션을 참조하세요.
워크플로 생성 방법
-
탐색 창에서 CI/CD를 선택한 다음 워크플로를 선택합니다.
-
워크플로 생성을 선택합니다.
-
YAML 샘플 코드를 삭제합니다.
-
다음 YAML 코드를 추가합니다.
참고
다음 YAML 코드에서 원하는 경우
Connections:
섹션을 생략할 수 있습니다. 이 섹션을 생략하는 경우 환경의 기본 IAM 역할 필드에 지정된 역할에 1단계: AWS 역할 생성에 설명된 권한 및 신뢰 정책이 포함되어 있는지 확인해야 합니다. 기본 IAM 역할이 있는 환경 설정에 대한 자세한 내용은 환경 생성 섹션을 참조하세요.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
를 사전 조건에서 생성한 환경 이름으로 변경합니다. -
codecatalyst-account-connection
을 사전 조건에서 생성한 계정 연결 이름으로 변경합니다. -
codecatalyst-s3-build-role
을 1단계: AWS 역할 생성에서 생성한 빌드 역할 이름으로 변경합니다. -
codecatalyst-artifact-bucket
을 2단계: Amazon S3 버킷 생성에서 생성한 Amazon S3 이름으로 변경합니다.
이러한 파일의 속성에 대한 자세한 내용은 빌드 및 테스트 작업 YAML 섹션을 참조하세요.
-
-
(선택 사항) 커밋하기 전에 YAML 코드가 유효한지 확인하려면 검증을 선택합니다.
-
커밋을 선택합니다.
-
워크플로 커밋 대화 상자에서 다음을 입력합니다.
-
워크플로 파일 이름은 기본값인
codecatalyst-artifact-workflow
를 그대로 사용합니다. -
커밋 메시지에 다음을 입력합니다.
add initial workflow file
-
리포지토리에서 codecatalyst-artifact-source-repository를 선택합니다.
-
브랜치 이름에서 기본을 선택합니다.
-
커밋을 선택합니다.
이제 워크플로를 생성했습니다. 워크플로 상단에 정의된 트리거로 인해 워크플로 실행이 자동으로 시작됩니다. 특히
codecatalyst-artifact-workflow.yaml
파일을 소스 리포지토리에 커밋(및 푸시)할 때 트리거가 워크플로 실행을 시작했습니다. -
진행 중인 워크플로 실행을 보려면
-
탐색 창에서 CI/CD를 선택한 다음 워크플로를 선택합니다.
-
방금 생성한
codecatalyst-artifact-workflow
워크플로를 선택합니다. -
GenerateFiles를 선택하여 첫 번째 빌드 작업 진행 상황을 확인합니다.
-
업로드를 선택하여 두 번째 빌드 작업 진행 상황을 확인합니다.
-
업로드 작업이 완료되면 다음을 수행합니다.
-
워크플로 실행에 성공한 경우 다음 절차로 이동합니다.
-
워크플로 실행에 실패한 경우 로그를 선택하여 문제를 해결합니다.
-
5단계: 실험 결과 확인
워크플로가 실행된 후 Amazon S3 서비스로 이동하여 codecatalyst-artifact-bucket
버킷을 확인합니다. 이제 다음 파일과 폴더가 포함되어야 합니다.
. |— .aws/ |— .git/ |Goodbye.txt |Hello.txt |REAME.md
Goodbye.txt
및 Hello.txt
파일은 codecatalystArtifact
아티팩트의 일부이므로 업로드되었습니다. .aws/
, .git/
및 README.md
파일은 소스 리포지토리에 있었기 때문에 업로드되었습니다.
정리
이러한 서비스에 대한 요금이 부과되지 않도록 CodeCatalyst 및 AWS에서 정리합니다.
CodeCatalyst에서 정리하려면
https://codecatalyst.aws/
에서 CodeCatalyst 콘솔을 엽니다. -
codecatalyst-artifact-source-repository
소스 리포지토리를 삭제합니다. -
codecatalyst-artifact-workflow
워크플로를 선택합니다.
AWS에서 정리하려면
-
다음과 같이 Amazon S3에서 정리합니다.
https://console.aws.amazon.com/s3/
에서 Amazon S3 콘솔을 엽니다. -
codecatalyst-artifact-bucket
버킷에서 파일을 삭제합니다. -
codecatalyst-artifact-bucket
버킷을 삭제합니다.
-
다음과 같이 IAM에서 정리합니다.
https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
codecatalyst-s3-build-policy
를 삭제합니다. -
codecatalyst-s3-build-role
를 삭제합니다.