자습서: AWS CLI를 이용하여 AWS CodeStar에서 프로젝트 생성 - AWS CodeStar

2024년 7월 31일부터 Amazon Web Services (AWS) 는 프로젝트 생성 및 보기에 AWS CodeStar 대한 지원을 중단합니다. 2024년 7월 31일 이후에는 더 이상 AWS CodeStar 콘솔에 액세스하거나 새 프로젝트를 생성할 수 없습니다. 하지만 소스 리포지토리 AWS CodeStar, 파이프라인, 빌드를 포함하여 에서 생성한 AWS 리소스는 이번 변경의 영향을 받지 않고 계속 작동합니다. AWS CodeStar 연결 및 AWS CodeStar 알림은 이번 중단으로 인해 영향을 받지 않습니다.

 

작업을 추적하고, 코드를 개발하고, 애플리케이션을 구축, 테스트 및 배포하려는 경우 CodeCatalyst Amazon은 간소화된 시작 프로세스와 소프트웨어 프로젝트를 관리할 수 있는 추가 기능을 제공합니다. Amazon의 기능가격에 대해 자세히 알아보십시오 CodeCatalyst.

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

자습서: AWS CLI를 이용하여 AWS CodeStar에서 프로젝트 생성

이 자습서는 AWS CLI를 이용해 샘플 소스 코드와 샘플 도구 체인으로 AWS CodeStar 프로젝트를 만드는 방법을 설명합니다. AWS CodeStar는 AWS CloudFormation 도구 체인 템플릿에서 지정하는 AWS 인프라와 IAM 리소스를 제공합니다. 프로젝트는 사용자의 도구 체인 리소스를 관리해 소스 코드를 빌드하고 배포합니다.

AWS CodeStar는 AWS CloudFormation을 이용해 샘플 코드를 빌드하고 배포합니다. 이 샘플 코드는 AWS Lambda에서 호스트하는 웹 서비스를 생성하며 Amazon API Gateway를 통해 액세스할 수 있습니다.

사전 조건:

  • AWS CodeStar설정의 단계를 수행합니다.

  • 생성된 Amazon S3 스토리지 버킷이 있어야 합니다. 이번 자습서에서는 샘플 소스 코드와 도구 체인 템플릿을 이 위치에 업로드합니다.

참고

AWS 계정에는 AWS CodeStar에서 사용하는 AWS 서비스 비용을 포함한, 이 자습서와 관련된 비용이 청구될 수 있습니다. 자세한 내용은 AWS CodeStar 요금을 참조하세요.

1 단계: 샘플 소스 코드 다운로드 및 검토

이번 자습서에서는 zip 파일을 다운로드할 수 있습니다. 여기에는 Lambda 컴퓨팅 플랫폼의 Node.js 샘플 애플리케이션을 위한 샘플 소스 코드가 포함되어 있습니다. 소스 코드를 리포지토리에 배치하면, 폴더와 파일이 다음과 같이 표시됩니다.

tests/ app.js buildspec.yml index.js package.json README.md template.yml

다음 프로젝트 요소가 샘플 소스 코드에 표시됩니다:

  • tests/: 이 프로젝트의 CodeBuild 프로젝트에 대한 단위 테스트 설정입니다. 이 폴더는 샘플 코드에 포함되지만, 반드시 프로젝트를 생성할 필요는 없습니다.

  • app.js: 프로젝트에 대한 애플리케이션 소스 코드입니다.

  • buildspec.yml: CodeBuild 리소스의 빌드 단계에 대한 빌드 지침입니다. 이 파일은 CodeBuild 리소스가 있는 도구 체인 템플릿에 필요합니다.

  • package.json: 애플리케이션 소스 코드의 종속성 정보입니다.

  • README.md: 모든 AWS CodeStar 프로젝트에 포함되는 프로젝트 readme 파일입니다. 이 파일은 샘플 코드에 포함되지만, 반드시 프로젝트를 생성할 필요는 없습니다.

  • template.yml: 모든 AWS CodeStar 프로젝트에 포함되는 인프라 템플릿 파일 또는 SAM 템플릿 파일입니다. 이번 자습서 후반에 업로드하는 도구 체인 템플릿인 template.yml과는 다른 파일입니다. 이 파일은 샘플 코드에 포함되지만, 반드시 프로젝트를 생성할 필요는 없습니다.

단계 2: 샘플 도구 체인 템플릿 다운로드

이 자습서에 제공된 샘플 도구 체인 템플릿은 리포지토리(CodeCommit), 파이프라인(CodePipeline), 빌드 컨테이너(CodeBuild)를 생성하며 AWS CloudFormation을 이용해 소스 코드를 Lambda 플랫폼에 배포합니다. 이러한 리소스 외에도, 실행 시간 환경 권한의 범위를 결정하는 데 사용하는 IAM 역할, CodePipeline이 배포 아티팩트를 저장하는 데 사용하는 Amazon S3 버킷, 코드를 리포지토리로 푸시할 때 파이프라인 배포를 트리거하는 데 사용하는 CloudWatch Events 규칙 등이 존재합니다. AWS IAM 모범 사례와 부합하도록, 이번 예제에서 정의된 도구 체인 역할의 정책 규모를 축소하십시오.

샘플 AWS CloudFormation 템플릿을 YAML 형식으로 다운로드하고 압축을 풉니다.

이번 자습서 후반부에서 create-project명령어를 실행하면, 이 템플릿은 AWS CloudFormation에 다음과 같은 사용자 지정 도구 체인 리소스를 생성합니다. 이 자습서에서 생성한 리소스에 대한 자세한 내용은 AWS CloudFormation 사용 설명서에 있는 다음 주제를 참조하십시오.

  • AWS::CodeCommit::Repository AWS CloudFormation 리소스는 CodeCommit 리포지토리를 생성합니다.

  • AWS::CodeBuild::Project AWS CloudFormation 리소스는 CodeBuild 빌드 프로젝트를 생성합니다.

  • AWS::CodeDeploy::Application AWS CloudFormation 리소스는 CodeDeploy 애플리케이션을 생성합니다.

  • AWS::CodePipeline::Pipeline AWS CloudFormation 리소스는 CodePipeline 파이프라인을 생성합니다.

  • AWS::S3::Bucket AWS CloudFormation 리소스는 파이프라인의 아티팩트 버킷을 생성합니다.

  • AWS::S3::BucketPolicy AWS CloudFormation 리소스는 파이프라인의 아티팩트 버킷을 위한 아티팩트 버킷 정책을 생성합니다.

  • AWS::IAM::Role AWS CloudFormation 리소스는 CodeBuild 빌드 프로젝트 관리를 위한 AWS CodeStar 권한을 제공하는 CodeBuild IAM 작업자 역할을 생성합니다.

  • AWS::IAM::Role AWS CloudFormation 리소스는 파이프라인 생성을 위한 AWS CodeStar 권한을 제공하는 CodePipeline IAM 작업자 역할을 생성합니다.

  • AWS::IAM::Role AWS CloudFormation 리소스는 리소스 스택 생성을 위한 AWS CodeStar 권한을 제공하는 AWS CloudFormation IAM 작업자 역할을 생성합니다.

  • AWS::IAM::Role AWS CloudFormation 리소스는 리소스 스택 생성을 위한 AWS CodeStar 권한을 제공하는 AWS CloudFormation IAM 작업자 역할을 생성합니다.

  • AWS::IAM::Role AWS CloudFormation 리소스는 리소스 스택 생성을 위한 AWS CodeStar 권한을 제공하는 AWS CloudFormation IAM 작업자 역할을 생성합니다.

  • AWS::Events::Rule AWS CloudFormation 리소스는 리포지토리의 푸시 이벤트를 모니터링하는 CloudWatch 규칙을 생성합니다.

  • AWS::IAM::Role AWS CloudFormation 리소스는 CloudWatch Events IAM Role 리소스를 생성합니다.

단계 3: AWS CloudFormation의 도구 체인 템플릿 테스트

도구 체인 템플릿을 업로드하기 전에, AWS CloudFormation의 도구 체인 템플릿을 테스트하고 오류를 수정할 수 있습니다.

  1. 업데이트된 템플릿을 로컬 컴퓨터에 저장하고 AWS CloudFormation 콘솔을 엽니다. 스택 생성을 선택합니다. 목록에 새로운 리소스가 표시됩니다.

  2. 스택을 보면서 스택 성성 오류가 있는지 확인합니다.

  3. 테스트가 끝나면, 스택을 삭제하십시오.

    참고

    스택과 AWS CloudFormation에서 생성한 리소스를 모두 삭제했는지 확인하십시오. 모두 삭제하지 않으면, 프로젝트 생성 시 이미 사용 중인 리소스 이름 때문에 오류가 발생할 수 있습니다.

단계 4: 소스 코드 및 도구 체인 템플릿 업로드

AWS CodeStar 프로젝트를 생성하려면, 소스 코드를 .zip 파일로 압축한 다음 Amazon S3로 옮겨야 합니다. AWS CodeStar는 이러한 콘텐츠로 리포지토리를 초기화합니다. 이 위치는 AWS CLI에서 프로젝트를 생성하는 명령을 실행할 때 입력 파일에서 지정합니다.

toolchain.yml 파일도 업로드하고 Amazon S3로 옮겨야 합니다. 이 위치는 AWS CLI에서 프로젝트를 생성하는 명령을 실행할 때 입력 파일에서 지정합니다.

소스 코드 및 도구 체인 템플릿을 업로드하려면
  1. 다음 샘플 파일 구조는 압축 및 업로드할 준비가 끝난 소스 파일과 도구 체인 템플릿을 보여줍니다. 샘플 코드에는 template.yml 파일이 포함됩니다. 명심하십시오. 이 파일은 toolchain.yml 파일과는 다른 파일입니다.

    ls src toolchain.yml ls src/ README.md app.js buildspec.yml index.js package.json template.yml tests
  2. 소스 코드 파일의 .zip 파일을 생성합니다.

    cd src; zip -r "../src.zip" *; cd ../
  3. cp 명령을 사용하고 파일을 파라미터로 포함합니다.

    다음 명령어는 .zip 파일과 toolchain.yml을 Amazon S3로 업로드합니다.

    aws s3 cp src.zip s3://MyBucket/src.zip aws s3 cp toolchain.yml s3://MyBucket/toolchain.yml
소스 코드 공유를 위해 Amazon S3 버킷을 업로드하려면
  • 소스 코드와 도구 체인을 Amazon S3에 저장하므로, Amazon S3 버킷 정책과 객체 ACL을 이용해 다른 IAM 사용자나 AWS 계정이 샘플에서 프로젝트를 생성하게 할 수 있습니다. AWS CodeStar를 이용하면 사용자 지정 프로젝트를 생성한 모든 사용자는 사용하고 싶은 도구 체인과 소스에 액세스할 수 있습니다.

    다른 사람이 샘플을 사용하게 하려면, 다음 명령을 실행하십시오.

    aws s3api put-object-acl --bucket MyBucket --key toolchain.yml --acl public-read aws s3api put-object-acl --bucket MyBucket --key src.zip --acl public-read

5단계: AWS CodeStar에서 프로젝트 만들기

이상의 단계를 따라 프로젝트를 생성하십시오.

중요

AWS CLI에서 원하는 AWS 리전을 구성했는지 확인하십시오. 프로젝트는 AWS CLI에서 구성한 AWS 리전에 생성됩니다.

  1. create-project 명령을 실행하고 --generate-cli-skeleton 파라미터를 포함하십시오.

    aws codestar create-project --generate-cli-skeleton

    JSON 형식 데이터가 출력에 표시됩니다. AWS CLI가 설치된 로컬 컴퓨터 또는 인스턴스의 위치에 있는 파일(예: input.json)에 데이터를 복사합니다. 복사된 데이터를 다음과 같이 수정하고 결과를 저장합니다. 이 입력 파일은 버킷 이름이 myBucketMyProject라는 프로젝트에 대해 구성되었습니다.

    • roleArn 파라미터를 입력했는지 확인하십시오. 이 자습서의 샘플 템플릿과 같은 사용자 지정 템플릿의 경우 역할을 입력해야 합니다. 이 역할은 단계 2: 샘플 도구 체인 템플릿 다운로드에 지정된 모든 리소스를 생성할 수 있는 권한이 있어야 합니다.

    • stackParametersProjectId를 입력했는지 확인하십시오. 이 자습서에서 제공하는 샘플 템플릿은 이 파라미터를 요구합니다.

    { "name": "MyProject", "id": "myproject", "description": "Sample project created with the CLI", "sourceCode": [ { "source": { "s3": { "bucketName": "MyBucket", "bucketKey": "src.zip" } }, "destination": { "codeCommit": { "name": "myproject" } } } ], "toolchain": { "source": { "s3": { "bucketName": "MyBucket", "bucketKey": "toolchain.yml" } }, "roleArn": "role_ARN", "stackParameters": { "ProjectId": "myproject" } } }
  2. 방금 저장한 파일이 들어 있는 디렉터리로 전환한 다음, create-project 명령을 다시 실행합니다. --cli-input-json 파라미터를 포함합니다.

    aws codestar create-project --cli-input-json file://input.json
  3. 이 명령이 제대로 실행되면 다음과 비슷한 데이터가 출력에 표시됩니다.

    { "id": "project-ID", "arn": "arn" }
    • 출력에는 새 프로젝트에 대한 정보가 들어 있습니다.

      • id 값은 프로젝트 ID를 나타냅니다.

      • arn 값은 프로젝트의 ARN을 나타냅니다.

  4. describe-project 명령을 이용해 프로젝트 생성 상태를 확인하십시오. --id 파라미터를 포함합니다.

    aws codestar describe-project --id <project_ID>

    다음과 비슷한 데이터가 결과에 나타납니다.

    { "name": "MyProject", "id": "myproject", "arn": "arn:aws:codestar:us-east-1:account_ID:project/myproject", "description": "", "createdTimeStamp": 1539700079.472, "stackId": "arn:aws:cloudformation:us-east-1:account_ID:stack/awscodestar-myproject/stack-ID", "status": { "state": "CreateInProgress" } }
    • 출력에는 새 프로젝트에 대한 정보가 들어 있습니다.

      • id 값은 고유 프로젝트 ID를 나타냅니다.

      • state 값은 프로젝트 생성 상태(CreateInProgress 또는 CreateComplete 등)를 나타냅니다.

프로젝트를 만드는 중에 팀원을 추가하거나 명령줄 또는 선호하는 IDE에서 프로젝트 리포지토리에 대한 액세스를 구성할 수 있습니다.