AWS CDK를 해봤어요.

https://catalog.us-east-1.prod.workshops.aws/v2/workshops/99731164-1d19-4d2e-9319-727a130e2d57/ja-JP

install


설치 가능한 버전 확인
work $ npm info aws-cdk versions
CDK는 버전이 완비되지 않으면 원활하게 설치할 수 없으므로 지정된 버전으로 설치
work $ npm install -g [email protected]
work $ cdk --version
1.134.0 (build dd5e12d)

init


work $ cdk init sample-app --language typescript
생성된 상태의 파일 내용
두 파일을 편집하여 구성
작업 디렉터리의work와 관련된 이름입니다
bin/work.ts
#!/usr/bin/env node
import * as cdk from '@aws-cdk/core';
import { WorkStack } from '../lib/work-stack';

const app = new cdk.App();
new WorkStack(app, 'WorkStack');
lib/work-stack.ts
import * as sns from '@aws-cdk/aws-sns';
import * as subs from '@aws-cdk/aws-sns-subscriptions';
import * as sqs from '@aws-cdk/aws-sqs';
import * as cdk from '@aws-cdk/core';

export class WorkStack extends cdk.Stack {
  constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    const queue = new sqs.Queue(this, 'WorkQueue', {
      visibilityTimeout: cdk.Duration.seconds(300)
    });

    const topic = new sns.Topic(this, 'WorkTopic');

    topic.addSubscription(new subs.SqsSubscription(queue));
  }
}

diff


cdk diff
이 명령을 통해 로컬 환경과 AWS의 차이를 확인할 수 있습니다.
기본 상태에서 CDKMetadata의 차이가 매우 뚜렷하다
이걸 잃어버리기 위해 한 줄 설정을 추가합니다.
https://docs.aws.amazon.com/ja_jp/cdk/v2/guide/cli.html#version_reporting
cdk.json
{
  "app": "npx ts-node --prefer-ts-exts bin/work.ts",
  "versionReporting": false,  <- この行追加
  "watch": {
    "include": [
      "**"
    ],
    "exclude": [
      "README.md",
      "cdk*.json",
      "**/*.d.ts",
      "**/*.js",
      "tsconfig.json",
      "package*.json",
      "yarn.lock",
      "node_modules",
      "test"
    ]
  },
  "context": {
    "@aws-cdk/aws-apigateway:usagePlanKeyOrderInsensitiveId": true,
    "@aws-cdk/core:enableStackNameDuplicates": true,
    "aws-cdk:enableDiffNoFail": true,
    "@aws-cdk/core:stackRelativeExports": true,
    "@aws-cdk/aws-ecr-assets:dockerIgnoreSupport": true,
    "@aws-cdk/aws-secretsmanager:parseOwnedSecretName": true,
    "@aws-cdk/aws-kms:defaultKeyPolicies": true,
    "@aws-cdk/aws-s3:grantWriteWithoutAcl": true,
    "@aws-cdk/aws-ecs-patterns:removeDefaultDesiredCount": true,
    "@aws-cdk/aws-rds:lowercaseDbIdentifier": true,
    "@aws-cdk/aws-efs:defaultEncryptionAtRest": true,
    "@aws-cdk/aws-lambda:recognizeVersionProps": true,
    "@aws-cdk/aws-cloudfront:defaultSecurityPolicyTLSv1.2_2021": true
  }
}

deploy


CloudFormation 형식으로 변환할 수 있으므로 의도에 맞는지 확인할 수 있습니다
work $ cdk synth
프로그램을 풀 때 임시로 저장된 S3을 만드는 명령을 처음 실행하면 됩니다
CloudFormation에서 CDKtoolKit 스택이 생성됨
cdtoolkit-stagingbucket-xxxx라는 S3 공정이 만들어졌습니다.
work $ cdk bootstrap
해제가 실행되면 클라우드Formation 스택을 생성하여 해제 처리
work $ cdk bootstrap

clean


CloudFormation 스택이 삭제되고 depro 스택이 모두 사라짐(S3 등 잔류)
컴퓨터의 파일은 원형을 유지한다
work $ cdk ls
WorkStack
work $ cdk destroy WorkStack
Are you sure you want to delete: WorkStack (y/n)? y

좋은 웹페이지 즐겨찾기