AWS CDK 요약, TIPS

6470 단어 TypeScriptAWSCDK

개요


2019년 7월 AWS CDK가 GA(generally available)가 되면서 많은 사람들이 신경을 쓰고 있다고 생각합니다.저는 최근에 갑자기 AWS CDK를 사용하기 시작했기 때문에 입문 지식부터 요점까지 정리해 보려고 합니다.주변 엔지니어들의 소감을 살펴보면'너무 좋다'는 의견도 많으니 꼭 한번 시도해 보세요.
참고로 각 자원에 대한 기술방법은 여러 가지 기사가 나왔기 때문에 생략하였습니다. 본 기사는 개관과 TIPS를 기재하였습니다.

AWS CDK

  • AWS 인프라 인코딩을 위한 도구
  • 진정한 의미의 추상적인 IaC
  • 를 실현할 수 있다
  • 는 기본적으로 TypeScript로 설명됩니다.Python 등도 기술할 수 있지만 내부는 node입니다.js를 시작하는 중입니다.
  • CDK를 실행할 때 코드에서 CloudFormation 템플릿을 만들고 실행하기 때문에 블랙박스가 어려운 동작도 매력이다.
  • 다른 AWS DevDay의 자료 등은 모두 잘 정리되어 있다.

  • 세션 자료·애니메이션 일람 - AWS DevDay Tokyo 2019|AWS의 B-3
  • hello world

    $ npm i -g aws-cdk // cdkコマンドをインストール
    $ mkdir hello-cdk
    $ cd hello-cdk
    $ cdk init sample-app --language=typescript
    
    이렇게 하면 응용 프로그램의 모형을 생성할 수 있다.

    파일 계층


    상당히 간단하다.
    helle-cdk
    binlib에 정의된 창고를 불러오고 초기화합니다.
    | - 모든 lib 창고에 따라 파일을 분리해서 정의합니다.
    |-- test
    |-- cdk.json
    |-- tsconfig.json
    |-- jest.config.js
    cdk.json은 deploy의 행동을 설명합니다.
    {
      "app": "npx ts-node bin/hello.ts"
    }
    
    ts-node 같은 tsc나 웹 팩 등 컴파일하지 않고'node'처럼 실행하는 도구, bin/hello를 사용합니다.ts를 실행하고 있습니다.

    배치

    $ cdk deploy
    
    그리고
    $ cdk synth
    
    에서 클라우드 형식 템플릿 생성

    개발


    개발의 추진 방법을 설명하다.

    전제 지식


    구조 함수


    최초로 생성된lib/hello-stack.ts는 이런 느낌이에요.
    lib/hello-stack.ts
    export class HelloStack extends cdk.Stack {
      constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
        super(scope, id, props);
    
        const queue = new sqs.Queue(this, 'HelloQueue', {
          visibilityTimeout: cdk.Duration.seconds(300)
        });
    
        const topic = new sns.Topic(this, 'HelloTopic');
    
        topic.addSubscription(new subs.SqsSubscription(queue));
      }
    }
    
    예를 들어, SNS Queue는 new sqs.Queue... 에서 생성됩니다.구조 함수의 매개 변수는 기본적으로 1this(cdk.Stack), 2id:string, 3개의 매개 변수입니다.참고로 이때 이동하는 구조 함수를 hight-level 구조라고 합니다.이것은 기본 설정, 일반적으로 이렇게 하는 최선의 실천 설정, 기본 IAM 정책 등을 포함한 다기능 일체형 소프트웨어 패키지와 같다.따라서 visibilityTimeout만 지정되지만 양호한 SQL::Queue가 생성됩니다.
    다른 한편, 저급 구축도 존재한다. 클래스 이름의 시작에는 반드시'Cfn'이 있어야 한다.그것은 구름 형식과 일일이 대응하는 속성을 제공한다.해보다CfnQueue 매개 변수에 설정된 "visibility Timeout"의 정의는 다음과 같습니다. 여기에는 일대일로 대응하는 CloudFormation 템플릿 속성에 대한 링크가 열거되어 있습니다.(완전 친절)
    /**
    * `AWS::SQS::Queue.VisibilityTimeout`
    * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-visiblitytimeout
    */
    readonly visibilityTimeout?: number;
    
    고급 구축은 저급 구축과 결합하여 실현된 것이다.두 가지 용도로 기본적으로 높은 등급을 사용하지만, 대응하지 않는 새로운 자원을 설정하거나 상세한 설정을 할 때 낮은 등급의 구축을 사용해야 할 수도 있다.

    문서 보기


    공식 문서를 훑어보다.
    AWS CDK · AWS CDK Reference Documentation
    왼쪽 네비게이션 시스템에서 자원의 분류가 일렬로 배열되어 있으니 필요한 부분을 참조하십시오.처음 사용하는 자원에 대해 "overview"를 확인하면 이해하기 쉬우며 코드 단계에서 대체적으로 사용 방법이 쓰여 있다.
    スクリーンショット 2019-11-16 17.45.51.png
    그리고 구축에서 필요한 자원에 대한 상세한 정보를 보십시오.

    TIPS


    작법은 여러 가지가 있다


    여러 자원 간의 의존 관계를 정의할 때, 왕왕 여러 개의 문법이 존재한다.예를 들어 S3에서 트리거 이벤트를 설정할 때, S3에서 트리거 이벤트를 정의할 수도 있고, S3에서 호출된 Lambda의 이벤트 원본에서 S3를 지정할 수도 있다.따라서 방법을 망설일 때 너무 구애받지 말고 응용 프로그램에 따라 어떤 사고가 이해하기 쉬운지 판단하는 것이 좋다.

    필요한 리소스 직접 추가


    이번 한스톤에는 설치하지 않은 자원이 많다.필요한 물건
    npm i --save @aws-cdk/aws-lambda
    
    버려진 함수에 대한 지원이 부족합니다.
    이때 내 환경 문제일 수도 있지만, 때로는 유형 오류가 발생할 수도 있다.이 경우 다음 명령을 실행하여 해결합니다.
    cd node_modules/@aws-cdk
    rm -rf */node_modules
    

    구린내가 많다


    2019년 7월에야 가가 됐기 때문에 곧 버그라고 할 수 있는 증상이 뚜렷하게 나타날 것이다. 현재 Issue도 많이 상승했다.
    그러나 비교적 작은 설정까지 실용적인 수준으로 사용하기 쉬운 도구이기 때문에 코드에 모든 것을 표현하고 싶은 과격파 사상과 합의를 잘 하면서 가능한 범위 내에서 사용하는 것이 좋다고 생각합니다.

    좋은 웹페이지 즐겨찾기