자습서: 구성 가능한 PDK 블루프린트를 사용하여 풀 스택 애플리케이션 생성 - Amazon CodeCatalyst

자습서: 구성 가능한 PDK 블루프린트를 사용하여 풀 스택 애플리케이션 생성

Amazon CodeCatalyst는 프로젝트를 빠르게 시작하는 데 도움이 되는 다양한 블루프린트를 제공합니다. 블루프린트로 생성된 프로젝트에는 소스 리포지토리, 샘플 소스 코드, CI/CD 워크플로, 빌드 및 테스트 보고서, 통합 문제 추적 도구를 포함하여 필요한 리소스가 포함됩니다. 그러나 프로젝트를 점진적으로 빌드하거나 블루프린트를 통해 생성된 기존 프로젝트에 기능을 추가하려는 경우가 있습니다. 블루프린트로도 이 작업을 수행할 수 있습니다. 이 자습서에서는 기반을 설정하고 모든 프로젝트 코드를 단일 리포지토리에 저장할 수 있는 단일 블루프린트를 시작하는 방법을 보여줍니다. 이제 편의에 따라 초기 블루프린트 위에 다른 블루프린트를 추가하여 추가 리소스와 인프라를 유연하게 통합할 수 있습니다. 이 빌딩 블록 메서드를 통해 여러 프로젝트의 특정 요구 사항을 해결할 수 있습니다.

이 자습서에서는 여러 AWS Project Development Kit(AWS PDK) 블루프린트를 함께 구성하여 React 웹 사이트, Smithy API 및 AWS에 배포하기 위한 지원 CDK 인프라로 구성된 애플리케이션을 생성하는 방법을 보여줍니다. AWS PDK는 프로젝트를 관리하고 빌드하기 위한 개발 도구와 함께 일반적인 패턴의 구성 요소를 제공합니다. 자세한 내용은 AWS PDK GitHub 소스 리포지토리를 참조하세요.

다음 PDK 블루프린트는 구성 가능한 방식으로 애플리케이션을 빌드할 때 서로 함께 사용하도록 설계되었습니다.

  • 모노 리포지토리 - 모노 리포지토리 내의 프로젝트 간의 상호 의존성을 관리하는 루트 수준 프로젝트를 생성합니다. 또한 프로젝트는 빌드 캐싱 및 종속성 시각화를 제공합니다.

  • Type Safe API - Smithy 또는 OpenAPI v3에서 정의할 수 있는 API를 생성하고, type-safe 방식으로 API를 구현하고 상호 작용할 수 있도록 빌드 타임 코드 생성을 관리합니다. API를 API Gateway에 배포하는 것을 관리하고 자동 입력 검증을 구성하는 CDK 구문을 제공합니다.

  • Cloudscape React 웹 사이트 - Cognito Auth 및 생성된 API(선택 사항)와 사전 통합된 Cloudscape를 사용하여 구축된 React 기반 웹 사이트를 생성하며, API를 안전하게 직접적으로 호출할 수 있는 기능을 제공합니다.

  • 인프라 - 애플리케이션을 배포하는 데 필요한 모든 CDK 관련 인프라를 설정하는 프로젝트를 생성합니다. 또한 빌드할 때마다 CDK 코드를 기반으로 다이어그램을 생성하도록 사전 구성되어 있습니다.

  • DevOps - AWS Project Development Kit(AWS PDK)에 있는 구문과 호환되는 DevOps 워크플로를 생성합니다.

또한 자습서에는 배포된 애플리케이션을 보고, 다른 사용자를 초대하여 작업하도록 하고, 풀 요청이 병합될 때 연결된 AWS 계정의 리소스에 자동으로 빌드되고 배포되는 풀 요청을 사용하여 코드를 변경하는 방법에 대한 단계가 포함되어 있습니다.

PDK 블루프린트로 구성된 프로젝트를 생성하면 CodeCatalyst 프로젝트에서 다음 리소스로 프로젝트가 생성됩니다.

  • 모노 리포지토리로 구성된 소스 리포지토리입니다.

  • 정적 코드 분석 및 라이선스 검사를 실행하고 기본 브랜치를 변경할 때마다 샘플 코드를 빌드 및 배포하는 워크플로입니다. 코드를 변경할 때마다 아키텍처 다이어그램이 생성됩니다.

  • 작업을 계획하고 추적하는 데 사용할 수 있는 문제 보드 및 백로그

  • 자동 보고서가 있는 테스트 보고서 제품군입니다.

사전 조건

프로젝트를 생성하고 업데이트하려면 CodeCatalyst 설정 및 로그인에서 다음과 같이 작업을 완료해야 합니다.

1단계: 모노 리포지토리 프로젝트 생성

PDK - 모노 리포지토리 블루프린트로 시작하여 기반 역할을 하는 모노 리포지토리 코드베이스를 생성하여 PDK 블루프린트를 추가할 수 있습니다.

PDK - 모노 리포지토리 블루프린트를 사용하여 프로젝트를 생성하려면

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

  2. CodeCatalyst 콘솔에서 프로젝트를 생성하려는 스페이스로 이동합니다.

  3. 스페이스 대시보드에서 프로젝트 생성을 선택합니다.

  4. 블루프린트로 시작을 선택합니다.

  5. PDK - 모노 리포지토리 블루프린트를 선택한 다음 다음을 선택합니다.

  6. 프로젝트 이름 지정에 프로젝트에 할당할 이름과 관련 리소스 이름을 입력합니다. 이름은 스페이스 내에서 고유해야 합니다.

  7. 프로젝트 리소스에서 다음 작업을 수행합니다.

    1. 기본 프로그래밍 언어에서 프로젝트 코드를 개발할 언어를 선택합니다. TypeScript, Java 또는 Python 중에서 선택할 수 있습니다.

    2. 코드 구성을 선택합니다.

    3. 소스 리포지토리 텍스트 입력 필드에 새 리포지토리를 생성할 소스 리포지토리의 이름을 입력하거나, 기존에 연결한 리포지토리에서 선택합니다. 기존 리포지토리는 비어 있어야 합니다. 자세한 내용은 소스 리포지토리 연결 섹션을 참조하세요.

    4. (선택 사항) 패키지 관리자 드롭다운 메뉴에서 패키지 관리자를 선택합니다. 이는 TypeScript를 기본 프로그래밍 언어로 선택한 경우에만 필요합니다.

  8. (선택 사항) 선택한 프로젝트 파라미터에 따라 생성될 코드를 미리 보려면 프로젝트 미리 보기 생성에서 코드 보기를 선택합니다.

  9. (선택 사항) 블루프린트의 아키텍처 개요, 필수 연결 및 권한, 블루프린트가 생성하는 리소스 유형 등 블루프린트에 대한 특정 세부 정보를 보려면 블루프린트 카드에서 세부 정보 보기를 선택합니다.

  10. 모노 리포지토리 프로젝트를 생성하려면 프로젝트 생성을 선택합니다. 생성된 루트 수준 프로젝트는 모노 리포지토리 내의 프로젝트 간 상호 종속성을 관리하고 빌드 캐싱 및 종속성 관리를 제공합니다.

    프로젝트 블루프린트에 대한 자세한 내용은 CodeCatalyst 블루프린트를 사용하여 포괄적인 프로젝트 생성 섹션을 참조하세요.

PDK - 모노 레포지토리 블루프린트는 프로젝트의 기반만 생성합니다. 블루프린트를 사용하여 실행 가능한 애플리케이션을 생성하려면 Type Safe API, Cloudscape React 웹사이트, 인프라 또는 DevOps와 같은 다른 PDK 블루프린트를 추가해야 합니다. 다음 단계에서는 프로젝트에 Type Safe API를 추가합니다.

2단계: 프로젝트에 Type Safe API 추가

PDK - Type Safe API 블루프린트를 사용하면 Smithy 또는 OpenAI v3를 사용하여 API를 정의할 수 있습니다. API 정의에서 런타임 패키지를 생성합니다. 여기에는 API와 상호 작용하기 위한 클라이언트와 API를 구현하기 위한 서버 측 코드가 포함됩니다. 또한 블루프린트는 모든 API 작업에 대한 타입 안정성을 갖춘 CDK 구문을 생성합니다. 기존 PDK 모노 리포지토리 프로젝트에 블루프린트를 추가하여 프로젝트에 API 기능을 추가할 수 있습니다.

PDK - Type Safe API 블루프린트를 추가하려면

  1. 모노 리포지토리 탐색 창에서 블루프린트를 선택한 다음 블루프린트 추가를 선택합니다.

  2. PDK - Type Safe API 블루프린트를 선택한 다음 다음을 선택합니다.

  3. 블루프린트 구성에서 블루프린트 파라미터를 구성합니다.

    • 모델 언어에서 API 모델이 정의된 언어를 선택합니다.

    • 네임스페이스 텍스트 입력 필드에 API의 네임스페이스를 입력합니다.

    • API 이름 텍스트 입력 필드에 API의 이름을 입력합니다.

    • CDK 언어에서 API를 배포할 CDK 인프라를 작성할 기본 설정 언어를 선택합니다.

    • 핸들러 언어 드롭다운 메뉴를 선택한 다음 API 작업을 위해 핸들러를 구현할 언어를 선택합니다.

    • 설명서 형식 드롭다운 메뉴를 선택한 다음 API 설명서를 생성할 형식을 선택합니다.

  4. 코드 변경 탭에서 제안된 변경 사항을 검토합니다. 풀 요청에 표시된 차이는 풀 요청이 생성된 시점의 프로젝트 변경 사항을 보여줍니다.

  5. 블루프린트가 적용될 때 제안된 변경 사항에 만족하면 블루프린트 추가를 선택합니다.

    풀 요청이 생성된 후 설명을 추가할 수 있습니다. 풀 요청 또는 파일의 개별 줄 및 풀 요청 전반에 설명을 추가할 수 있습니다. @ 기호와 파일 이름을 사용하여 파일과 같은 리소스에 대한 링크를 추가할 수 있습니다.

    참고

    풀 요청이 승인되고 병합될 때까지 블루프린트가 적용되지 않습니다. 자세한 내용은 풀 요청 검토풀 요청 병합 섹션을 참조하세요.

  6. 상태 열에서 PDK - Type Safe API 블루프린트 행의 보류 중인 풀 요청을 선택한 다음 열린 풀 요청의 링크를 선택합니다.

  7. 병합을 선택하고, 원하는 병합 전략을 선택한 다음 병합을 선택하여 적용된 블루프린트의 변경 사항을 통합합니다.

    풀 요청이 병합되면 모노 리포지토리 프로젝트 내에 구성된 Type Safe API의 모든 API 관련 소스 코드가 포함된 새 packages/apis/mypdkapi 폴더가 생성됩니다.

  8. 탐색 창에서 블루프린트를 선택하여 PDK - Type Safe API상태최신으로 표시되는지 확인합니다.

3단계: 프로젝트에 대한 Cloudscape React 웹사이트 추가

PDK - Cloudscape React 웹 사이트 블루프린트는 웹사이트를 생성합니다. 선택적 파라미터(Type Safe API)를 연결하여 웹사이트를 자동으로 구성하여 다양한 API를 테스트하는 대화형 API 탐색기와 함께 인증된 유형 안전 클라이언트를 설정할 수 있습니다.

PDK - Cloudscape React 웹사이트 블루프린트를 추가하려면

  1. 모노 리포지토리 탐색 창에서 블루프린트를 선택한 다음 블루프린트 추가를 선택합니다.

  2. PDK - Cloudscape React 웹사이트 블루프린트를 선택한 다음 다음을 선택합니다.

  3. 블루프린트 구성에서 블루프린트 파라미터를 구성합니다.

    • 웹사이트 이름 텍스트 입력 필드에 웹사이트의 이름을 입력합니다.

    • Type Safe API 드롭다운 메뉴를 선택한 다음 웹사이트 내에 통합할 API 블루프린트를 선택합니다. API을 전달하면 인증된 클라이언트가 설정되고 필요한 종속성, API 탐색기 및 기타 기능이 추가됩니다.

  4. 코드 변경 탭에서 제안된 변경 사항을 검토합니다. 풀 요청에 표시된 차이는 풀 요청이 생성된 시점의 프로젝트 변경 사항을 보여줍니다.

  5. 블루프린트가 적용될 때 제안된 변경 사항에 만족하면 블루프린트 추가를 선택합니다.

    풀 요청이 생성된 후 설명을 추가할 수 있습니다. 풀 요청 또는 파일의 개별 줄 및 풀 요청 전반에 설명을 추가할 수 있습니다. @ 기호와 파일 이름을 사용하여 파일과 같은 리소스에 대한 링크를 추가할 수 있습니다.

    참고

    풀 요청이 승인되고 병합될 때까지 블루프린트가 적용되지 않습니다. 자세한 내용은 풀 요청 검토풀 요청 병합 섹션을 참조하세요.

  6. 상태 열에서 PDK - Cloudscape React 웹 사이트 블루프린트 행의 보류 중인 풀 요청을 선택한 다음 열린 풀 요청의 링크를 선택합니다.

  7. 병합을 선택하고, 원하는 병합 전략을 선택한 다음 병합을 선택하여 적용된 블루프린트의 변경 사항을 통합합니다.

    풀 요청이 병합되면 모노 리포지토리 프로젝트 내에 새 packages/websites/my-website-name 폴더가 생성되며, 여기에는 새 웹사이트의 모든 소스 코드가 포함됩니다.

  8. 탐색 창에서 블루프린트를 선택하여 PDK - Cloudscape React 웹사이트상태최신으로 표시되는지 확인합니다.

다음으로 PDK - 인프라 블루프린트를 추가하여 웹사이트를 AWS 클라우드에 배포하는 인프라를 생성합니다.

4단계: 애플리케이션을 AWS 클라우드에 배포하기 위한 인프라 생성

PDK - 인프라 블루프린트는 웹사이트 및 API를 배포하기 위해 모든 CDK 코드가 포함된 패키지를 설정합니다. 또한 기본적으로 다이어그램 생성 및 프로토타입 nag 팩에 대한 적합성을 제공합니다.

PDK - 인프라 블루프린트를 추가하려면

  1. 모노 리포지토리 탐색 창에서 블루프린트를 선택한 다음 블루프린트 추가를 선택합니다.

  2. PDK - 인프라 블루프린트를 선택한 다음 다음을 선택합니다.

  3. 블루프린트 구성에서 블루프린트 파라미터를 구성합니다.

    • CDK 언어에서 인프라를 개발할 언어를 선택합니다.

    • 스택 이름 텍스트 입력 필드에 블루프린트에 대해 생성된 CloudFormation 스택의 이름을 입력합니다.

      참고

      DevOps 워크플로를 설정할 다음 단계의 스택 이름을 기록해 둡니다.

    • Type Safe API 드롭다운 메뉴를 선택한 다음 웹사이트 내에 통합할 API 블루프린트를 선택합니다.

    • Cloudscape React TS 웹사이트 드롭다운 메뉴를 선택한 다음, 인프라 내에 배포하려는 웹사이트 블루프린트(예: PDK - Cloudscape React 웹사이트)를 선택합니다.

  4. 코드 변경 탭에서 제안된 변경 사항을 검토합니다. 풀 요청에 표시된 차이는 풀 요청이 생성된 시점의 프로젝트 변경 사항을 보여줍니다.

  5. 블루프린트가 적용될 때 제안된 변경 사항에 만족하면 블루프린트 추가를 선택합니다.

    풀 요청이 생성된 후 설명을 추가할 수 있습니다. 풀 요청 또는 파일의 개별 줄 및 풀 요청 전반에 설명을 추가할 수 있습니다. @ 기호와 파일 이름을 사용하여 파일과 같은 리소스에 대한 링크를 추가할 수 있습니다.

    참고

    풀 요청이 승인되고 병합될 때까지 블루프린트가 적용되지 않습니다. 자세한 내용은 풀 요청 검토풀 요청 병합 섹션을 참조하세요.

  6. 상태 열에서 PDK - 인프라 블루프린트 행의 보류 중인 풀 요청을 선택한 다음 열린 풀 요청의 링크를 선택합니다.

  7. 병합을 선택하고, 원하는 병합 전략을 선택한 다음 병합을 선택하여 적용된 블루프린트의 변경 사항을 통합합니다.

    풀 요청이 병합되면 프로젝트를 AWS 클라우드에 배포하는 인프라가 포함된 모노 리포지토리 프로젝트 내에 새 packages/infra 폴더가 생성됩니다.

  8. 탐색 창에서 블루프린트를 선택하여 PDK - 인프라상태최신으로 표시되는지 확인합니다.

다음으로 PDK - DevOps 블루프린트를 추가하여 애플리케이션을 배포합니다.

5단계: 프로젝트를 배포하기 위한 DevOps 워크플로 설정

PDK - DevOps 블루프린트를 구성에 지정된 AWS 계정 및 역할을 사용하여 프로젝트를 빌드하고 배포하는 데 필요한 DevOps 워크플로를 생성합니다.

PDK - DevOps 블루프린트를 추가하려면

  1. 모노 리포지토리 탐색 창에서 블루프린트를 선택한 다음 블루프린트 추가를 선택합니다.

  2. PDK - DevOps 블루프린트를 선택한 다음 다음을 선택합니다.

  3. 블루프린트 구성에서 블루프린트 파라미터를 구성합니다.

    • 현재 환경에서 Bootstrap CDK를 선택합니다.

    • 스택 이름 텍스트 입력 필드에 배포하려는 CloudFormation 스택의 이름을 입력합니다. 이는 PDK - 인프라 블루프린트에 대해 4단계: 애플리케이션을 AWS 클라우드에 배포하기 위한 인프라 생성에 구성된 스택 이름과 일치해야 합니다.

    • AWS 계정 연결 드롭다운 메뉴를 선택한 다음 리소스에 사용할 AWS 계정을 선택합니다. 자세한 내용은 스페이스에 AWS 계정 추가 섹션을 참조하세요.

    • 애플리케이션 배포에 사용할 역할 드롭다운 메뉴를 선택한 다음 프로젝트 애플리케이션 배포에 사용할 IAM 역할을 선택합니다.

      참고

      IAM 역할을 생성할 때 SourceArn을 프로젝트 설정에 있는 현재 ProjectID로 제한합니다. 자세한 내용은 CodeCatalystWorkflowDevelopmentRole-spaceName 서비스 역할 이해 섹션을 참조하세요.

    • 리전 드롭다운 메뉴를 선택한 다음 모노 리포지토리 프로젝트를 배포할 리전을 선택합니다. 배포는 필수 AWS 서비스가 있는 리전에서만 작동합니다. 자세한 내용은 리전별 AWS 서비스를 참조하세요.

  4. 코드 변경 탭에서 제안된 변경 사항을 검토합니다. 풀 요청에 표시된 차이는 풀 요청이 생성된 시점의 프로젝트 변경 사항을 보여줍니다.

  5. 블루프린트가 적용될 때 제안된 변경 사항에 만족하면 블루프린트 추가를 선택합니다.

    풀 요청이 생성된 후 설명을 추가할 수 있습니다. 풀 요청 또는 파일의 개별 줄 및 풀 요청 전반에 설명을 추가할 수 있습니다. @ 기호와 파일 이름을 사용하여 파일과 같은 리소스에 대한 링크를 추가할 수 있습니다.

    참고

    풀 요청이 승인되고 병합될 때까지 블루프린트가 적용되지 않습니다. 자세한 내용은 풀 요청 검토풀 요청 병합 섹션을 참조하세요.

  6. 상태 열에서 PDK - 인프라 블루프린트 행의 보류 중인 풀 요청을 선택한 다음 열린 풀 요청의 링크를 선택합니다.

  7. 병합을 선택하고, 원하는 병합 전략을 선택한 다음 병합을 선택하여 적용된 블루프린트의 변경 사항을 통합합니다.

    풀 요청이 병합되면 모노 리포지토리 프로젝트 내에 새 .codecatalyst/workflows 폴더가 생성됩니다.

  8. 탐색 창에서 블루프린트를 선택하여 PDK - DevOps상태최신으로 표시되는지 확인합니다.

참고

PDK - DevOps 블루프린트와 PDK 블루프린트에 대한 모든 후속 변경 사항은 향후 빌드 및 배포를 반복할 수 있도록 하기 위해 백그라운드에서 잠금 파일이 생성되므로 이 시점보다 훨씬 느려집니다. 지원되는 모든 언어의 모든 패키지에 대해 잠금 파일을 생성합니다.

6단계: 릴리스 워크플로 확인 및 웹 사이트 보기

이전 단계를 완료하면 릴리스 워크플로를 확인하여 프로젝트가 빌드되고 있는지 확인할 수 있습니다.

릴리스 워크플로를 확인하고 웹 사이트를 보려면

  1. 모노 리포지토리 프로젝트의 탐색 창에서 CI/CD를 선택한 다음 워크플로를 선택합니다.

  2. 릴리스 워크플로에서 세부 정보를 보려면 최신 워크플로 실행을 선택합니다. 자세한 내용은 단일 실행의 상태 및 세부 정보 보기 섹션을 참조하세요.

  3. 워크플로 실행이 성공적으로 완료되면 워크플로의 마지막 작업(예: Deploy-Beta-ap-souteast-2)을 선택한 다음 변수를 선택합니다.

    PDK 블루프린트 워크플로
  4. 변수 테이블에 있는 링크(예: MyPDKApiwebsiteDistributionDomainNameXXXXX)를 복사하여 새 브라우저 창에 붙여넣어 배포된 웹사이트를 봅니다.

    워크플로 작업의 변수 테이블

    웹사이트에 로그인하려면 Amazon Cognito 계정이 필요합니다. 기본적으로 사용자 풀은 자체 등록을 허용하도록 설정되어 있지 않습니다.

    1. AWS Cognito 콘솔로 이동합니다.

    2. 사용자 풀 표에서 변수 표에서 있는 PDK - DevOps 블루프린트에서 생성된 사용자 풀과 일치하는 사용자 풀 이름 선택합니다(예: infracalculatebetaUserIdentityinfracalculatebetaUserIdentityIdentityPoolIdXXXXX). 자세한 내용은 사용자 풀 시작하기를 참조하세요.

      PDK - DevOps 블루프린트에서 생성한 사용자 풀
    3. 사용자 생성을 선택합니다.

    4. 사용자 정보 파라미터를 구성합니다.

      • 초대 메시지에서 이메일 초대 전송을 선택합니다.

      • 사용자 이름 텍스트 입력 필드에 사용자 이름을 입력합니다.

      • 이메일 주소 텍스트 입력 필드에 사용자 이름을 입력합니다.

      • 임시 암호에서 암호 생성을 선택합니다.

    5. 사용자 생성을 선택합니다.

    6. 사용자 정보 파라미터에 대해 입력한 이메일 계정으로 이동하여 임시 암호가 포함된 이메일을 엽니다. 암호를 기록해 둡니다.

    7. 배포된 웹 사이트로 돌아가 생성한 사용자 이름과 받은 임시 암호를 입력한 다음 로그인을 선택합니다.

  5. (선택 사항) 워크플로 실행이 성공적으로 완료되면 생성된 다이어그램을 볼 수도 있습니다. CodeCatalyst에서 아티팩트 탭을 선택하고 다이어그램 행에서 다운로드를 선택한 다음 다운로드한 파일을 엽니다.

    워크플로의 아티팩트 탭
    PDK 블루프린트로 생성된 다이어그램

PDK 프로젝트에서 협업 및 반복 작업

프로젝트를 설정한 후, 소스 코드를 변경할 수 있습니다. 다른 스페이스 멤버를 초대하여 프로젝트 작업을 할 수도 있습니다. PDK 블루프린트를 사용하면, 각 블루프린트의 구성을 완전히 제어하면서 필요한 것만 필요할 때 추가하여, 애플리케이션을 반복적으로 구축할 수 있습니다.

1단계: 프로젝트에 멤버 초대

콘솔을 사용하여 사용자를 프로젝트에 초대할 수 있습니다. 스페이스 외부에서 스페이스 멤버로 초대하거나 이름을 추가할 수 있습니다.

사용자를 프로젝트에 초대하려면 프로젝트 관리자 또는 스페이스 관리자 역할로 로그인해야 합니다.

스페이스 관리자 역할을 가진 사용자는 이미 스페이스의 모든 프로젝트에 대한 암시적 액세스 권한이 있으므로 프로젝트에 초대할 필요가 없습니다.

사용자를 (스페이스 관리자 역할을 할당하지 않고) 프로젝트에 초대하면, 사용자는 프로젝트의 프로젝트 멤버 표와 스페이스의 프로젝트 멤버 표에 표시됩니다.

프로젝트 설정 탭에서 프로젝트에 멤버를 초대하려면
  1. 프로젝트로 이동합니다.

    작은 정보

    상단 탐색 모음에서 보려는 프로젝트를 선택할 수 있습니다.

  2. 탐색 창에서 프로젝트 설정을 선택합니다.

  3. 구성원 탭을 선택합니다.

  4. 프로젝트 멤버에서 새 멤버 초대를 선택합니다.

  5. 새 멤버의 이메일 주소를 입력하고 이 멤버의 역할을 선택한 다음 초대를 선택합니다. 역할에 대한 자세한 내용은 사용자 역할로 액세스 권한 부여 섹션을 참조하세요.

프로젝트 개요 페이지에서 프로젝트에 멤버를 초대하려면
  1. 프로젝트로 이동합니다.

    작은 정보

    상단 탐색 모음에서 보려는 프로젝트를 선택할 수 있습니다.

  2. 멤버 + 버튼을 선택합니다.

  3. 새 멤버의 이메일 주소를 입력하고 이 멤버의 역할을 선택한 다음 초대를 선택합니다. 역할에 대한 자세한 내용은 사용자 역할로 액세스 권한 부여 섹션을 참조하세요.

2단계: 협업 및 작업 추적을 위한 문제 생성

CodeCatalyst는 프로젝트와 관련된 기능, 작업, 버그 및 기타 작업과 문제를 추적하는 데 도움이 됩니다. 문제를 생성하여 필요한 작업과 아이디어를 추적할 수 있습니다. 기본적으로 문제를 생성하면 백로그에 추가됩니다. 진행 중인 작업을 추적하는 보드로 문제를 이동할 수 있습니다. 특정 프로젝트 멤버에게 문제를 할당할 수도 있습니다. 이 단계에서는 문제를 생성하여 PDK 프로젝트를 변경합니다.

문제를 생성하려면

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

  2. 문제를 생성하려는 모노 리포지토리 프로젝트로 이동합니다.

  3. 프로젝트 홈 페이지에서 문제 생성을 선택합니다. 또는 탐색 창에서 문제를 선택합니다.

  4. 문제 생성을 선택합니다.

    참고

    그리드 보기를 사용할 때 문제를 인라인으로 추가할 수도 있습니다.

  5. 문제의 제목을 입력합니다.

  6. (선택 사항) 설명을 입력합니다. 문제에 다음 a change in the src/mysfit_data.json file. 설명을 입력합니다. 마크다운을 사용하여 서식 지정을 추가할 수 있습니다.

  7. (선택 사항) 문제에 대한 상태, 우선순위, 추정을 선택합니다.

  8. (선택 사항) 기존 레이블을 추가하거나 새 레이블을 생성하고 + 레이블 추가를 선택하여 추가합니다.

    1. 기존 레이블을 추가하려면 목록에서 레이블을 선택합니다. 필드에 검색어를 입력하여 프로젝트에 해당 용어가 포함된 모든 레이블을 검색할 수 있습니다.

    2. 새 레이블을 생성하고 추가하려면 검색 필드에 생성하려는 레이블의 이름을 입력하고 Enter 키를 누릅니다.

  9. (선택 사항) + 담당자 추가를 선택하여 담당자를 추가합니다. + 나를 추가를 선택하여 자신을 담당자로 빠르게 추가할 수 있습니다.

    작은 정보

    Amazon Q가 문제를 해결하도록 Amazon Q에 문제를 할당할 수 있습니다. 자세한 내용은 자습서: CodeCatalyst 생성형 AI 기능을 사용하여 개발 작업 속도 향상 섹션을 참조하세요.

    이 기능을 사용하려면 스페이스에 생성형 AI 기능을 활성화해야 합니다. 자세한 내용은 생성형 AI 기능 관리를 참조하세요.

  10. (선택 사항) 기존 사용자 지정 필드를 추가하거나 새 사용자 지정 필드를 생성합니다. 문제에는 여러 사용자 지정 필드가 있을 수 있습니다.

    1. 기존 사용자 지정 필드를 추가하려면 목록에서 사용자 지정 필드를 선택합니다. 필드에 검색어를 입력하여 프로젝트에 해당 용어가 포함된 모든 사용자 지정 필드를 검색할 수 있습니다.

    2. 새 사용자 지정 필드를 생성하고 추가하려면, 검색 필드에 생성하려는 사용자 지정 필드의 이름을 입력하고 Enter 키를 누릅니다. 그런 다음 생성하려는 사용자 지정 필드 유형을 선택하고 값을 설정합니다.

  11. 문제 생성을 선택합니다. 오른쪽 하단 모서리에 알림이 나타납니다. 문제가 성공적으로 생성된 경우 문제가 성공적으로 생성되었다는 확인 메시지가 나타납니다. 문제가 성공적으로 생성되지 않은 경우 실패 이유와 함께 오류 메시지가 나타납니다. 이런 경우 재시도를 선택하여 문제를 편집하고 다시 생성하거나 취소를 선택하여 문제를 폐기할 수 있습니다. 두 옵션 모두 알림을 무시합니다.

    참고

    문제를 생성할 때는 풀 요청을 문제에 연결할 수 없습니다. 그러나 문제를 생성한 후에는 풀 요청에 연결하는 링크를 추가하기 위해 문제를 편집할 수 있습니다.

자세한 내용은 CodeCatalyst의 문제 처리 추적 및 구성 섹션을 참조하세요.

3단계: 소스 리포지토리 보기

Amazon CodeCatalyst에서 프로젝트와 연결된 소스 리포지토리를 볼 수 있습니다. CodeCatalyst의 소스 리포지토리의 경우 리포지토리의 개요 페이지에서는 다음을 포함하여 해당 리포지토리의 정보 및 활동에 대한 간략한 개요를 제공합니다.

  • 리포지토리에 대한 설명(있을 경우)

  • 리포지토리의 브랜치 수

  • 리포지토리에 대한 열린 풀 요청 수

  • 리포지토리에 대한 관련 워크플로 수

  • 기본 브랜치의 파일 및 폴더 또는 선택한 브랜치

  • 표시된 브랜치에 대한 마지막 커밋의 제목, 작성자 및 날짜

  • README.md 파일이 포함된 경우 마크다운에 렌더링된 README.md 파일의 내용

또한 이 페이지에서는 리포지토리에 대한 커밋, 브랜치 및 풀 요청에 연결하는 링크와 개별 파일을 빠르게 열고 보고 편집할 수 있는 방법을 제공합니다.

참고

CodeCatalyst 콘솔에서는 연결된 리포지토리에 대한 이 정보를 볼 수 없습니다. 연결된 리포지토리에 대한 정보를 보려면, 리포지토리 목록에서 링크를 선택하여 리포지토리를 호스팅하는 서비스에서 해당 리포지토리를 엽니다.

프로젝트의 소스 리포지토리로 이동하려면
  1. 프로젝트로 이동하여 다음 중 하나를 수행합니다.

    • 프로젝트의 요약 페이지에서 목록에서 원하는 리포지토리를 선택한 다음 리포지토리 보기를 선택합니다.

    • 탐색 창에서 코드를 선택한 다음 소스 리포지토리를 선택합니다. 소스 리포지토리의 경우 목록에서 리포지토리의 이름을 선택합니다. 필터 표시줄에 리포지토리 이름의 일부를 입력하여 리포지토리 목록을 필터링할 수 있습니다.

  2. 리포지토리의 홈 페이지에서 리포지토리의 내용과 풀 요청 수 및 워크플로와 같은 관련 리소스에 대한 정보를 확인합니다. 기본적으로 기본 브랜치의 내용이 표시됩니다. 드롭다운 목록에서 다른 브랜치를 선택하여 보기를 변경할 수 있습니다.

작은 정보

프로젝트 요약 페이지에서 프로젝트 코드 보기를 선택하여 프로젝트의 리포지토리로 빠르게 이동할 수도 있습니다.

4단계: 개발 환경 생성 및 코드 변경

이 단계에서는 개발 환경을 생성하고 코드를 변경한 다음 메인 브랜치로 병합합니다. 이 자습서에서는 간단한 AWS PDK 프로젝트를 안내하지만 AWS PDK GitHub 리포지토리에 제공된 더 복잡한 예시를 따를 수도 있습니다.

새 브랜치로 개발 환경을 생성하려면

  1. 모노 리포지토리 프로젝트의 탐색 창에서 다음 중 하나를 수행합니다.

    • 개요를 선택한 다음 내 개발 환경 섹션으로 이동합니다.

    • 코드를 선택한 후 개발 환경을 선택합니다.

    • 코드를 선택하고 소스 리포지토리를 선택한 다음 개발 환경을 생성할 모노 리포지토리를 선택합니다.

  2. 드롭다운 메뉴에서 지원되는 IDE를 선택합니다. 자세한 정보는 개발 환경에 지원되는 통합 개발 환경을 참조하세요.

  3. 리포지토리 복제를 선택합니다.

  4. 복제할 리포지토리를 선택하고, 새 브랜치에서 작업을 선택하고, 브랜치 이름 필드에 브랜치 이름을 입력하고, 다음에서 브랜치 생성 드롭다운 메뉴에서 새 브랜치를 만들 브랜치를 선택합니다.

    참고

    소스 리포지토리 페이지 또는 특정 소스 리포지토리에서 개발 환경을 생성하는 경우 리포지토리를 선택할 필요가 없습니다. 개발 환경은 소스 리포지토리 페이지에서 선택한 소스 리포지토리에서 생성됩니다.

  5. (선택 사항) 별칭 - 선택 사항에서 개발 환경의 별칭을 입력합니다.

  6. (선택 사항) 개발 환경 구성 편집 버튼을 선택하여 개발 환경의 컴퓨팅, 스토리지 또는 제한 시간 구성을 편집합니다.

  7. (선택 사항) Amazon Virtual Private Cloud(Amazon VPC) - 선택 사항에서 드롭다운 메뉴에서 개발 환경에 연결할 VPC 연결을 선택합니다.

    스페이스에 기본 VPC가 설정된 경우 개발 환경이 해당 VPC에 연결된 상태로 실행됩니다. 다른 VPC 연결을 연결하여 이를 재정의할 수 있습니다. 또한 VPC로 연결된 개발 환경은 AWS Toolkit을 지원하지 않습니다.

    참고

    VPC 연결로 개발 환경을 생성하면 VPC 내에 새 네트워크 인터페이스가 생성됩니다. CodeCatalyst는 연결된 VPC 역할을 사용하여 이 인터페이스와 상호 작용합니다. 또한 IPv4 CIDR 블록이 172.16.0.0/12 IP 주소 범위로 구성되지 않았는지 확인합니다.

  8. 생성을 선택합니다. 개발 환경이 생성되는 동안 개발 환경 상태 열에 시작 중이 표시되고, 개발 환경이 생성되면 상태 열에 실행 중이 표시됩니다.

개발 환경이 실행된 후 풀 요청이 병합될 때 연결된 AWS 계정의 리소스에 자동으로 빌드되고 배포되는 풀 요청으로 코드를 변경하여 CodeCatalyst에서 생성된 샘플 애플리케이션으로 작업할 수 있습니다. 모노 리포지토리는 필요한 모든 전역 종속성과 런타임이 자동으로 표시되도록 devfile을 제공합니다.

프로젝트의 코드를 변경하려면

  1. 개발 환경의 작동 터미널에서 모노 리포지토리 프로젝트로 이동한 뒤, 다음 명령을 실행하여 프로젝트 종속성을 설치합니다.

    npx projen install
  2. 예시 API 작업을 정의하는 packages/apis/mypdkapi/model/src/main/smithy/operations/say-hello.smithy로 이동합니다. 이 자습서에서는 두 개의 숫자를 함께 추가하는 간단한 Calculate 작업을 빌드합니다. 코드를 변경하여 입력 및 출력을 포함해 이 작업을 정의합니다.

    예시:

    $version: "2" namespace com.aws @http(method: "POST", uri: "/calculate") @handler(language: "typescript") operation Calculate { input := { @required numberA: Integer @required numberB: Integer } output := { @required result: Integer } }

    @handler 특성은 TypeScript로 작성된 AWS Lambda 핸들러로 이 작업을 구현할 것임을 Type Safe API에 알립니다. Type Safe API는 TypeScript에서 구현할 수 있도록 이 작업에 대한 스텁을 생성합니다. @required 특성이 추가되었습니다. 즉, 배포되는 API 게이트웨이에서 런타임에 적용됩니다. 자세한 내용은 Smithy 설명서를 참조하세요.

  3. /say-hello.smithy 파일 이름을 코드 변경 사항과 일치하는 이름(예: calculate.smithy)으로 변경합니다.

  4. packages/apis/mypdkapi/model/src/main/smithy/main.smithy로 이동하여 작업을 연결하기 위해 코드를 변경합니다. 이 파일의 operations 필드에 나열하여 /calculate.smithy에 정의된 Calculate 작업을 노출할 수 있습니다.

    예시:

    $version: "2" namespace com.aws use aws.protocols#restJson1 /// A sample smithy api @restJson1 service MyPDKApi { version: "1.0" operations: [Calculate] errors: [ BadRequestError NotAuthorizedError InternalFailureError ] }
  5. 다음 명령을 실행하여 변경 사항을 빌드합니다.

    npx projen build
    참고

    필요에 따라 --parallel X 플래그를 전달할 수 있으며, 이로 인해 빌드가 X 코어에 분산됩니다.

    @handler 특성이 추가되었으므로 빌드가 완료된 후 다음 파일이 생성됩니다.

    • /packages/apis/mypdkapi/handlers/typescript/src/calculate.ts

    • /packages/apis/mypdkapi/handlers/typescript/test/calculate.test.ts

  6. packages/apis/mypdkapi/handlers/typescript/src/calculate.ts로 이동하여 코드를 변경합니다. 이 파일은 API에 대해 간접적으로 호출되는 서버 핸들러입니다.

    import { calculateHandler, CalculateChainedHandlerFunction, INTERCEPTORS, Response, LoggingInterceptor, } from 'mypdkapi-typescript-runtime'; /** * Type-safe handler for the Calculate operation */ export const calculate: CalculateChainedHandlerFunction = async (request) => { LoggingInterceptor.getLogger(request).info('Start Calculate Operation'); const { input } = request; return Response.success({ result: input.body.numberA + input.body.numberB, }); }; /** * Entry point for the AWS Lambda handler for the Calculate operation. * The calculateHandler method wraps the type-safe handler and manages marshalling inputs and outputs */ export const handler = calculateHandler(...INTERCEPTORS, calculate);
  7. /packages/apis/mypdkapi/handlers/typescript/test/calculate.test.ts 파일로 이동하여 단위 테스트를 업데이트하기 위해 코드를 변경합니다.

    예시:

    import { CalculateChainedRequestInput, CalculateResponseContent, } from 'mypdkapi-typescript-runtime'; import { calculate, } from '../src/calculate'; // Common request arguments const requestArguments = { chain: undefined as never, event: {} as any, context: {} as any, interceptorContext: { logger: { info: jest.fn(), }, }, } satisfies Omit<CalculateChainedRequestInput, 'input'>; describe('Calculate', () => { it('should return correct sum', async () => { const response = await calculate({ ...requestArguments, input: { requestParameters: {}, body: { numberA: 1, numberB: 2 } }, }); expect(response.statusCode).toBe(200); expect((response.body as CalculateResponseContent).result).toEqual(3); }); });
  8. /packages/infra/main/src/constructs/apis/mypdkapi.ts 파일로 이동하여 CDK 인프라에서 Calculate 작업에 대한 통합을 추가하기 위해 코드를 변경합니다. API 구문에는 이전에 추가한 구현을 전달할 수 있는 통합 속성이 있습니다. Calculate 작업에 Smithy 모델의 @handler 특성을 사용하므로, 사전에 구성되어 생성된 CalculateFunction CDK 구문을 사용하여 핸들러 구현을 가리킬 수 있습니다.

    예시:

    import { UserIdentity } from "@aws/pdk/identity"; import { Authorizers, Integrations } from "@aws/pdk/type-safe-api"; import { Stack } from "aws-cdk-lib"; import { Cors } from "aws-cdk-lib/aws-apigateway"; import { AccountPrincipal, AnyPrincipal, Effect, PolicyDocument, PolicyStatement, } from "aws-cdk-lib/aws-iam"; import { Construct } from "constructs"; import { Api, CalculateFunction } from "calculateapi-typescript-infra"; /** * Api construct props. */ export interface CalculateApiProps { /** * Instance of the UserIdentity. */ readonly userIdentity: UserIdentity; } /** * Infrastructure construct to deploy a Type Safe API. */ export class CalculateApi extends Construct { /** * API instance */ public readonly api: Api; constructor(scope: Construct, id: string, props?: CalculateApiProps) { super(scope, id); this.api = new Api(this, id, { defaultAuthorizer: Authorizers.iam(), corsOptions: { allowOrigins: Cors.ALL_ORIGINS, allowMethods: Cors.ALL_METHODS, }, integrations: { calculate: { integration: Integrations.lambda(new CalculateFunction(this, "CalculateFunction")) } }, policy: new PolicyDocument({ statements: [ // Here we grant any AWS credentials from the account that the prototype is deployed in to call the api. // Machine to machine fine-grained access can be defined here using more specific principals (eg roles or // users) and resources (ie which api paths may be invoked by which principal) if required. // If doing so, the cognito identity pool authenticated role must still be granted access for cognito users to // still be granted access to the API. new PolicyStatement({ effect: Effect.ALLOW, principals: [new AccountPrincipal(Stack.of(this).account)], actions: ["execute-api:Invoke"], resources: ["execute-api:/*"], }), // Open up OPTIONS to allow browsers to make unauthenticated preflight requests new PolicyStatement({ effect: Effect.ALLOW, principals: [new AnyPrincipal()], actions: ["execute-api:Invoke"], resources: ["execute-api:/*/OPTIONS/*"], }), ], }), }); // Grant authenticated users access to invoke the api props?.userIdentity.identityPool.authenticatedRole.addToPrincipalPolicy( new PolicyStatement({ effect: Effect.ALLOW, actions: ["execute-api:Invoke"], resources: [this.api.api.arnForExecuteApi("*", "/*", "*")], }), ); } }
  9. 다음 명령을 실행하여 변경 사항을 빌드합니다.

    npx projen build

프로젝트 구축이 완료되면 /packages/infra/main/cdk.out/cdkgraph/diagram.png에서 업데이트되어 생성된 다이어그램을 볼 수 있습니다. 다이어그램은 생성된 API에 함수를 추가하고 연결한 모습을 보여줍니다. CDK 코드가 수정되면 이 다이어그램도 업데이트됩니다.

이제 변경 사항을 리포지토리의 메인 브랜치에 푸시하고 병합하여 배포할 수 있습니다.

5단계: 코드 변경 사항 푸시 및 병합

코드 변경 사항을 커밋하고 푸시하면 소스 리포지토리의 메인 브랜치에 병합할 수 있습니다.

기능 브랜치에 변경 사항을 푸시하려면

  • 다음 명령을 실행하여 기능 브랜치에 변경 사항을 커밋하고 푸시합니다.

    git add .
    git commit -m "my commit message"
    git push

변경 사항을 푸시하면 CodeCatalyst 콘솔에서 볼 수 있는 기능 브랜치에 대한 새 워크플로 실행이 트리거됩니다. 그런 다음 풀 요청을 생성하여 변경 사항을 소스 리포지토리의 메인 브랜치에 병합할 수 있습니다. 기능 브랜치를 메인 브랜치에 병합하면 릴리스 워크플로가 트리거됩니다. 풀 요청을 문제에 연결할 수도 있습니다.

풀 요청을 생성하고 문제에 연결하려면

  1. 모노 리포지토리 프로젝트에서 다음 중 하나를 수행합니다.

    • 탐색 창에서 코드를 선택하고 풀 요청을 선택한 다음 풀 요청 생성을 선택합니다.

    • 리포지토리 홈 페이지에서 추가를 선택한 다음 풀 요청 생성을 선택합니다.

    • 프로젝트 페이지에서 풀 요청 생성을 선택합니다.

  2. 소스 리포지토리에서 지정된 소스 리포지토리가 커밋된 코드가 포함된 리포지토리인지 확인합니다. 이 옵션은 리포지토리의 메인 페이지에서 풀 요청을 생성하지 않은 경우에만 나타납니다.

  3. 대상 브랜치에서 코드를 검토한 후 병합할 메인 브랜치를 선택합니다.

  4. 소스 브랜치에서 커밋된 코드가 포함된 기능 브랜치를 선택합니다.

  5. 풀 요청 제목에 다른 사용자가 검토해야 할 사항과 이유를 이해하는 데 도움이 되는 제목을 입력합니다.

  6. (선택 사항) 풀 요청 설명에서 문제에 대한 연결 또는 변경 사항에 대한 설명과 같은 정보를 제공합니다.

    작은 정보

    CodeCatalyst가 풀 요청에 포함된 변경 사항에 대한 설명을 자동으로 생성하도록 설명 쓰기를 선택할 수 있습니다. 자동으로 생성된 설명은 풀 요청에 추가한 후에 변경할 수 있습니다.

    이 기능을 사용하려면 스페이스에 생성형 AI 기능을 활성화해야 합니다. 자세한 내용은 Amazon CodeCatalyst의 생성형 AI 기능 관리를 참조하세요.

  7. 문제에서 문제 연결을 선택한 다음 2단계: 협업 및 작업 추적을 위한 문제 생성에서 생성한 문제를 선택합니다. 문제를 연결 해제하려면 연결 해제 아이콘을 선택합니다.

  8. (선택 사항) 필수 검토자에서 필수 검토자 추가를 선택합니다. 프로젝트 멤버 목록에서 추가할 멤버를 선택합니다. 필수 검토자는 풀 요청을 대상 브랜치에 병합하기 전에 변경 사항을 승인해야 합니다.

    참고

    한 명의 검토자를 동시에 필수 검토자이자 선택적 검토자로 추가할 수 없습니다. 자신을 검토자로 추가할 수 없습니다.

  9. (선택 사항) 선택적 검토자에서 선택적 검토자 추가를 선택합니다. 프로젝트 멤버 목록에서 추가할 멤버를 선택합니다. 선택적 검토자는 풀 요청을 대상 브랜치에 병합하기 전에 변경 사항을 요구 사항으로 승인할 필요가 없습니다.

  10. 풀 요청은 검토자 또는 사용자가 검토하고 메인 브랜치에 병합해야 합니다. 자세한 내용은 풀 요청 병합 섹션을 참조하세요.

    변경 사항이 소스 리포지토리의 메인 브랜치에 병합되면 새 워크플로가 자동으로 트리거됩니다.

  11. 병합이 완료되면 문제를 완료로 이동할 수 있습니다.

    1. 탐색 창에서 문제를 선택합니다.

    2. 2단계: 협업 및 작업 추적을 위한 문제 생성에서 생성된 문제를 선택하고 상태 드롭다운 메뉴를 선택한 다음 완료를 선택합니다.

릴리스 워크플로는 성공적으로 실행된 후 애플리케이션을 배포하므로 변경 사항을 볼 수 있습니다.

릴리스 워크플로를 확인하고 웹 사이트를 보려면

  1. 모노 리포지토리 프로젝트의 탐색 창에서 CI/CD를 선택한 다음 워크플로를 선택합니다.

  2. 릴리스 워크플로에서 세부 정보를 보려면 최신 워크플로 실행을 선택합니다. 자세한 내용은 단일 실행의 상태 및 세부 정보 보기 섹션을 참조하세요.

  3. 워크플로 실행이 성공적으로 완료되면 워크플로의 마지막 작업(Deploy-Beta-ap-souteast-2)을 선택한 다음 변수를 선택합니다.

  4. MyPDKApiwebsiteDistributionDomainNameXXXXX행의 링크를 복사하여 새 브라우저 창에 붙여넣어 배포된 웹 사이트를 봅니다.

  5. 6단계: 릴리스 워크플로 확인 및 웹 사이트 보기에서 생성한 사용자 이름과 암호를 입력하고 로그인을 선택합니다.

  6. (선택 사항) 애플리케이션의 변경 사항을 테스트합니다.

    1. POST 드롭다운 메뉴를 선택합니다.

    2. numberAnumber B에 대한 두 값을 입력한 다음 실행을 선택합니다.

    3. 응답 본문에서 결과를 확인합니다.

시간이 지남에 따라 PDK 블루프린트의 카탈로그 버전이 변경될 수 있습니다. 프로젝트의 블루프린트를 카탈로그 버전으로 변경하여 최신 변경 사항을 반영한 최신 상태로 유지할 수 있습니다. 프로젝트의 블루프린트 버전을 변경하기 전에 코드 변경 사항과 영향을 받는 환경을 볼 수 있습니다. 자세한 내용은 프로젝트의 블루프린트 버전 변경 섹션을 참조하세요.