AWS CDK 에 대한 자습서 AWS Cloud9 - AWS Cloud9

AWS Cloud9 는 더 이상 신규 고객이 사용할 수 없습니다. AWS Cloud9 의 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세히 알아보기

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

AWS CDK 에 대한 자습서 AWS Cloud9

이 자습서에서는 AWS Cloud Development Kit (AWS CDK) AWS Cloud9 개발 환경에서 를 사용하는 방법을 보여줍니다. AWS CDK 는 개발자가 AWS 인프라 구성 요소를 코드로 모델링하는 데 사용할 수 있는 소프트웨어 도구 및 라이브러리 세트입니다.

에는 에서 많은 작업을 빠르게 해결하는 데 사용할 수 있는 AWS 구성 라이브러리가 AWS CDK 포함되어 있습니다 AWS. 예를 들면 Fleet 생성문을 사용하여 코드를 호스트 집합에 코드를 완전하고 안전하게 배포할 수 있습니다. 고유의 생성문을 작성하여 아키텍처의 다양한 요소를 모델링하거나 다른 사람과 공유하거나 커뮤니티에 게시할 수 있습니다. 자세한 내용은 AWS Cloud Development Kit 개발자 안내서를 참조하십시오.

이 자습서를 따르고 이 샘플을 생성하면 AWS 계정에 요금이 발생할 수 있습니다. 여기에는 Amazon EC2, Amazon SNS, Amazon 등의 서비스에 대해 발생할 수 있는 요금이 포함됩니다SQS. 자세한 내용은 Amazon EC2 요금 , Amazon SNS 요금Amazon SQS 요금 섹션을 참조하세요.

사전 조건

이 샘플을 사용하기 전에 설정이 다음 요구 사항을 충족하는지 확인하세요.

  • 기존 AWS Cloud9 EC2 개발 환경이 있어야 합니다. 이 샘플에서는 Amazon Linux 또는 를 실행하는 Amazon EC2 인스턴스에 연결된 EC2 환경이 이미 있다고 가정합니다.Ubuntu 서버. 다른 환경 또는 운영 시스템이라면 이 샘플 지침을 관련 도구를 설치하는 데에 적용해야 합니다. 자세한 내용은 에서 환경 생성 AWS Cloud9 단원을 참조하십시오.

  • 기존 환경에 대한 AWS Cloud9 IDE가 이미 열려 있습니다. 환경을 열면 웹 브라우저에서 해당 환경에 IDE 대한 가 AWS Cloud9 열립니다. 자세한 내용은 AWS Cloud9에서 환경 열기 단원을 참조하십시오.

1단계: 필수 도구 설치

이 단계에서는 가 TypeScript 프로그래밍 언어로 작성된 샘플을 실행 AWS CDK 해야 하는 모든 도구를 사용자 환경에 설치합니다.

  1. 노드 버전 관리자 또는 nvm - 나중에 Node.js를 설치하는 데 사용합니다.

  2. 샘플에 필요하고 Node Package Manager를 포함하는 Node.js 또는 TypeScript 및 AWS CDK 이후 npm 버전을 설치하는 데 사용하는 .

  3. TypeScript, 이 샘플에 필요합니다. ( AWS CDK 또한 는 여러 다른 프로그래밍 언어를 지원합니다.)

  4. . AWS CDK

1.1단계: 노드 버전 관리자(nvm) 설치

  1. 의 터미널 세션에서 최신 보안 업데이트 및 버그 수정이 설치되어 있는지 AWS Cloud9 IDE확인합니다. 이를 수행하려면 yum update (Amazon Linux) 또는 apt update 명령(Ubuntu Server)을 실행합니다. (터미널 세션을 새로 시작하려면 메뉴 모음에서 Window(창), New Terminal(새 터미널)을 선택합니다.)

    Amazon Linux의 경우:

    sudo yum -y update

    Ubuntu Server:

    sudo apt update
  2. nvm이 이미 설치되었는지 확인합니다. 이렇게 하려면 --version 옵션을 사용하여 nvm 명령을 실행합니다.

    nvm --version

    명령이 성공적으로 실행되면 출력에 nvm 버전 번호가 포함되며, 1.2단계: Node.js 설치로 이동할 수 있습니다.

  3. nvm을 다운로드하여 설치합니다. 이렇게 하려면 설치 스크립트를 실행하십시오. 이 예에서는 v0.33.0이 설치되어 있지만 최신 버전의 nvm여기에서 확인할 수 있습니다.

    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
  4. nvm 사용을 시작합니다. 터미널 세션을 닫고 나서 다시 시작하거나 명령을 포함하는 ~/.bashrc 파일을 소싱하여 nvm을 로드합니다.

    . ~/.bashrc

1.2단계: Node.js 설치

  1. Node.js 설치 여부를 확인하고, 설치한 경우 설치된 버전이 16.17.0 이상인지 확인합니다. 이 샘플은 Node.js 16.17.0에서 테스트되었습니다. 확인하려면 에서 터미널 세션이 아직 열려 있는 상태에서 --version 옵션을 사용하여 node 명령을 IDE실행합니다.

    node --version

    Node.js를 설치했으면 출력에 버전 번호가 포함됩니다. 버전 번호가 v16.17.0이면 1.3단계: 설치 TypeScript 섹션으로 이동합니다.

  2. nvm 명령을 install 작업과 함께 실행하여 Node.js 16을 설치합니다.

    참고

    를 실행nvm install node하여 Node.js. AWS Cloud9 support의 장기 지원(LTS) 버전을 설치할 수도 있습니다. LTS

    nvm install v16
  3. Node.js 16 사용을 시작합니다. 이렇게 하려면 다음과 같이 alias 작업, 별칭을 지정할 버전 번호 및 해당 별칭에 사용할 버전을 사용하여 nvm 명령을 실행합니다.

    nvm alias default 16
    참고

    이전 명령은 Node.js 16을 기본 Node.js 버전으로 설정합니다. 또는 alias 작업 대신 use 작업과 함께 nvm 명령을 실행할 수 있습니다(예: nvm use 16.17.0 ). 하지만 use 작업을 지정하면 현재 터미널 세션이 실행 중인 동안에만 Node.js 버전이 실행됩니다.

  4. Node.js 16을 사용 중인지 확인하려면 node --version 명령을 다시 실행합니다. 올바른 버전이 설치된 경우 출력에 버전 v16이 포함됩니다.

1.3단계: 설치 TypeScript

  1. 이미 를 TypeScript 설치했는지 확인합니다. 이렇게 하려면 에서 터미널 세션이 여전히 열려 있는 상태에서 --version 옵션을 사용하여 명령줄 TypeScript 컴파일러를 IDE실행합니다.

    tsc --version

    를 TypeScript 설치한 경우 출력에 TypeScript 버전 번호가 포함됩니다. TypeScript 가 설치된 경우 로 건너뜁니다1.4단계: 설치 AWS CDK.

  2. 를 설치합니다 TypeScript. 이렇게 하려면 install 작업, -g 옵션 및 TypeScript 패키지 이름을 사용하여 npm 명령을 실행합니다. 이는 환경에 글로벌 패키지 TypeScript 로 설치됩니다.

    npm install -g typescript
  3. TypeScript 이 설치되어 있는지 확인합니다. 이렇게 하려면 --version 옵션을 사용하여 명령줄 TypeScript 컴파일러를 실행합니다.

    tsc --version

    TypeScript 가 설치된 경우 출력에는 TypeScript 버전 번호가 포함됩니다.

1.4단계: 설치 AWS CDK

  1. 가 이미 AWS CDK 설치되어 있는지 확인합니다. 이렇게 하려면 에서 터미널 세션이 여전히 열려 있는 상태에서 --version 옵션을 사용하여 cdk 명령을 IDE실행합니다.

    cdk --version

    AWS CDK 이 설치된 경우 출력에는 AWS CDK 버전 및 빌드 번호가 포함됩니다. 2단계: 코드 추가 단원으로 이동합니다.

  2. install 작업, 설치할 AWS CDK 패키지 이름, 환경에 패키지를 전역적으로 설치하는 -g 옵션과 함께 npm 명령을 실행 AWS CDK 하여 를 설치합니다.

    npm install -g aws-cdk
  3. 이 설치되고 올바르게 참조 AWS CDK 되었는지 확인합니다. 이렇게 하려면 --version 옵션을 사용하여 cdk 명령을 실행합니다.

    cdk --version

    성공하면 AWS CDK 버전 및 빌드 번호가 표시됩니다.

2단계: 코드 추가

이 단계에서는 가 AWS CloudFormation 스택을 프로그래밍 방식으로 배포 AWS CDK 하는 데 필요한 모든 소스 코드가 포함된 샘플 TypeScript 프로젝트를 생성합니다. 이 스택은 AWS 계정에 Amazon SNS 주제와 Amazon SQS 대기열을 생성한 다음 해당 주제에 대한 대기열을 구독합니다.

  1. 에서 터미널 세션이 아직 열려 있는 상태에서 환경의 디렉터리와 같이 프로젝트의 소스 코드를 저장할 ~/environment/hello-cdk 디렉터리를 IDE생성합니다. 그런 다음 해당 디렉터리로 전환합니다.

    rm -rf ~/environment/hello-cdk # Remove this directory if it already exists. mkdir ~/environment/hello-cdk # Create the directory. cd ~/environment/hello-cdk # Switch to the directory.
  2. 디렉터리를 의 TypeScript 언어 프로젝트로 설정합니다 AWS CDK. 이렇게 하려면 init 작업, sample-app 템플릿, --language 옵션을 프로그래밍 언어의 이름과 함께 사용하여 cdk 명령을 실행합니다.

    cdk init sample-app --language typescript

    그러면 다음 파일 및 하위 디렉터리가 해당 디렉터리에 생성됩니다.

    • 숨은 .git 하위 디렉터리와 숨은 .gitignore 파일 - Git와 같은 소스 제어 도구와 호환되는 프로젝트를 만듭니다.

    • lib 하위 디렉터리 - hello-cdk-stack.ts 파일을 포함합니다. 이 파일에는 AWS CDK 스택의 코드가 포함되어 있습니다. 이 코드는 이 절차의 다음 단계에 설명되어 있습니다.

    • bin 하위 디렉터리 - hello-cdk.ts 파일을 포함합니다. 이 파일에는 AWS CDK 앱의 진입점이 포함되어 있습니다.

    • node_modules 하위 디렉터리 - 필요 시 앱과 스택에서 사용할 수 있는 지원 코드 패키지가 들어 있습니다.

    • 숨은 .npmignore 파일 - 코드 빌드 시 npm에 필요하지 않은 하위 디렉터리 및 파일 유형을 나열합니다.

    • cdk.json 파일 - cdk 명령을 보다 쉽게 실행할 수 있도록 하는 정보가 들어 있습니다.

    • package-lock.json 파일 - npm에서 발생 가능한 빌드 및 실행 오류를 줄이는 데 사용할 수 있는 정보가 들어 있습니다.

    • package.json 파일 - npm 명령을 좀 더 쉽게 실행하고 빌드 및 실행 오류가 거의 발생하지 않도록 하는 정보가 들어 있습니다.

    • npm 및 로 실행할 수 있는 유용한 명령을 나열하는 README.md 파일입니다 AWS CDK.

    • tsconfig.json 파일 - tsc 명령을 좀 더 쉽게 실행하고 빌드 및 실행 오류가 거의 발생하지 않도록 하는 정보가 들어 있습니다.

  3. Environment(환경) 창에서 lib/hello-cdk-stack.ts 파일을 열고 해당 파일에서 다음 코드를 찾아봅니다.

    import sns = require('@aws-cdk/aws-sns'); import sqs = require('@aws-cdk/aws-sqs'); import cdk = require('@aws-cdk/cdk'); export class HelloCdkStack extends cdk.Stack { constructor(parent: cdk.App, name: string, props?: cdk.StackProps) { super(parent, name, props); const queue = new sqs.Queue(this, 'HelloCdkQueue', { visibilityTimeoutSec: 300 }); const topic = new sns.Topic(this, 'HelloCdkTopic'); topic.subscribeQueue(queue); } }
    • Stack, App, StackPropsQueue, 및 Topic 클래스는 AWS CloudFormation 스택 및 해당 속성, 실행 프로그램, Amazon SQS 대기열 및 Amazon SNS 주제를 각각 나타냅니다.

    • HelloCdkStack 클래스는 이 애플리케이션의 AWS CloudFormation 스택을 나타냅니다. 이 스택에는 이 애플리케이션의 새 Amazon SQS 대기열과 Amazon SNS 주제가 포함되어 있습니다.

  4. Environment(환경) 창에서 bin/hello-cdk.ts 파일을 열고 해당 파일에서 다음 코드를 찾아봅니다.

    #!/usr/bin/env node import cdk = require('@aws-cdk/cdk'); import { HelloCdkStack } from '../lib/hello-cdk-stack'; const app = new cdk.App(); new HelloCdkStack(app, 'HelloCdkStack'); app.run();

    이 코드는 lib/hello-cdk-stack.ts 파일에서 HelloCdkStack 클래스를 로드하고 인스턴스화한 후 실행합니다.

  5. npm 를 사용하여 TypeScript 컴파일러를 실행하여 코딩 오류를 확인한 다음 가 프로젝트 bin/hello-cdk.js 파일을 실행 AWS CDK 하도록 활성화합니다. 이렇게 하려면 프로젝트의 루트 디렉터리에서 다음과 같이 package.json 파일에 build 명령 값을 지정하고 run 작업을 사용하여 npm 명령을 실행합니다.

    npm run build

    앞의 명령은 TypeScript 컴파일러를 실행하여 지원 bin/hello-cdk.d.tslib/hello-cdk-stack.d.ts 파일을 추가합니다. 이 컴파일러는 hello-cdk.tshello-cdk-stack.ts 파일을 hello-cdk.jshello-cdk-stack.js 파일로 트랜스컴파일합니다.

3단계: 코드 실행

이 단계에서는 bin/hello-cdk.js 파일의 코드를 기반으로 AWS CloudFormation 스택 템플릿을 생성 AWS CDK 하도록 에 지시합니다. 그런 다음 에 스택을 배포 AWS CDK 하도록 지시합니다. 그러면 Amazon SNS 주제와 Amazon SQS 대기열이 생성된 다음 해당 주제에 대한 대기열을 구독합니다. 그런 다음 주제의 메시지를 대기열로 전송하여 주제 및 대기열이 성공적으로 배포되었는지 확인할 수 있습니다.

  1. AWS CloudFormation 스택 템플릿을 AWS CDK 생성하도록 합니다. 이렇게 하려면 에서 터미널 세션이 열려 있는 상태에서 프로젝트의 루트 디렉터리IDE에서 synth 작업 및 스택 이름으로 cdk 명령을 실행합니다.

    cdk synth HelloCdkStack

    성공하면 출력에 AWS CloudFormation 스택 템플릿의 Resources 섹션이 표시됩니다.

  2. 특정 AWS 계정 및 AWS 리전 조합의 환경에 AWS CDK 앱을 처음 배포할 때는 부트스트랩 스택 을 설치해야 합니다. 이 스택에는 이 다양한 작업을 완료하는 데 AWS CDK 필요한 다양한 리소스가 포함되어 있습니다. 예를 들어 이 스택에는 이 배포 프로세스 중에 템플릿과 자산을 저장하는 데 AWS CDK 사용하는 Amazon S3 버킷이 포함되어 있습니다. 부트스트랩 스택을 설치하려면 bootstrap 작업을 사용하여 cdk 명령을 실행합니다.

    cdk bootstrap
    참고

    옵션을 지정cdk bootstrap하지 않고 를 실행하면 기본 AWS 계정과 AWS 리전이 사용됩니다. 프로필과 계정/리전 조합을 지정하여 특정 환경을 부트스트랩할 수도 있습니다. 예:

    cdk bootstrap --profile test 123456789012/us-east-1
  3. 가 AWS CloudFormation 스택 템플릿을 AWS CDK 실행하여 스택을 배포하도록 합니다. 이렇게 하려면 deploy 작업 및 스택의 이름을 사용하여 프로젝트의 루트 디렉터리에서 cdk 명령을 실행합니다.

    cdk deploy HelloCdkStack

    성공하면 출력에 HelloCdkStack 스택이 오류 없이 배포되었다는 메시지가 표시됩니다.

    참고

    출력에 스택이 환경을 정의하지 않고 표준 위치에서 AWS 자격 증명을 가져올 수 없거나 리전이 구성되지 않았다는 메시지가 표시되면 에서 자격 AWS 증명이 올바르게 설정되었는지 IDE확인한 다음 cdk deploy 명령을 다시 실행합니다. 자세한 내용은 AWS 서비스 의 환경에서 호출 AWS Cloud9 단원을 참조하십시오.

  4. Amazon SNS 주제와 Amazon SQS 대기열이 성공적으로 배포되었는지 확인하려면 주제에 메시지를 보낸 다음 대기열에서 수신된 메시지를 확인합니다. 이렇게 하려면 AWS Command Line Interface (AWS CLI) 또는 와 같은 도구를 사용할 수 있습니다 AWS CloudShell. 이러한 도구에 대한 자세한 내용은 AWS CLI 및 aws-shell 자습서 AWS Cloud9 단원을 참조하십시오.

    예를 들어, 에서 터미널 세션이 열려 있는 상태에서 주제에 메시지를 보내려면 IDE를 사용하여 Amazon SNS publish 명령을 실행 AWS CLI 하고 메시지의 주제와 본문, 주제의 AWS 리전 및 주제의 Amazon 리소스 이름()을 제공합니다ARN.

    aws sns publish --subject "Hello from the AWS CDK" --message "This is a message from the AWS CDK." --topic-arn arn:aws:sns:us-east-2:123456789012:HelloCdkStack-HelloCdkTopic1A234567-8BCD9EFGHIJ0K

    앞의 명령에서 주제에 AWS CloudFormation 할당ARN하는 arn:aws:sns:us-east-2:123456789012:HelloCdkStack-HelloCdkTopic1A234567-8BCD9EFGHIJ0K로 를 바꿉니다. ID를 가져오려면 Amazon SNS list-topics 명령을 실행할 수 있습니다.

    aws sns list-topics --output table --query 'Topics[*].TopicArn'

    성공하면 publish 명령의 출력에 게시된 메시지에 대한 MessageId 값이 표시됩니다.

    수신된 메시지의 대기열을 확인하려면 대기열의 를 제공하여 Amazon SQS receive-message 명령을 실행합니다URL.

    aws sqs receive-message --queue-url https://queue.amazonaws.com/123456789012/HelloCdkStack-HelloCdkQueue1A234567-8BCD9EFGHIJ0K

    앞의 명령에서 대기열에 AWS CloudFormation 할당ARN하는 https://queue.amazonaws.com/123456789012/HelloCdkStack-HelloCdkQueue1A234567-8BCD9EFGHIJ0K로 를 바꿉니다. 를 가져오려면 Amazon SQS list-queues 명령을 실행할 URL수 있습니다.

    aws sqs list-queues --output table --query 'QueueUrls[*]'

    성공하면 receive-message 명령의 출력에 수신된 메시지에 대한 정보가 표시됩니다.

4단계: 정리

이 샘플 사용을 완료한 후 AWS 계정에 대한 지속적인 요금을 방지하려면 AWS CloudFormation 스택을 삭제해야 합니다. 그러면 Amazon SNS 주제와 Amazon SQS 대기열이 삭제됩니다. 또한 환경도 삭제해야 합니다.

4.1단계: 스택 삭제

에서 터미널 세션이 열려 있는 상태에서 프로젝트의 루트 디렉터리IDE에서 destroy 작업 및 스택 이름으로 cdk 명령을 실행합니다.

cdk destroy HelloCdkStack

스택을 삭제할지 묻는 메시지가 표시되면 y를 입력하고 나서 Enter를 누릅니다.

성공하면 출력에 HelloCdkStack 스택이 오류 없이 삭제되었다는 메시지가 표시됩니다.

4.2단계: 환경 삭제

환경을 삭제하려면 AWS Cloud9에서 환경 삭제 섹션을 참조하세요.