AWS CDK Workshop

AWS CDK ๋ง›๋ณด๊ธฐ!!

Before getting started

Workshop์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— AWS CDK๊ฐ€ ๋ญ”์ง€ ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ด…์‹œ๋‹น

AWS CDK๋ž€?

  • AWS CDK (Cloud Development Kit)๋Š” ํ˜„๋Œ€์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cloud Infra๋ฅผ code๋กœ ์ •์˜ํ•˜๊ณ , AWS CloudFormation ์„ ํ†ตํ•ด ๋ฐฐํฌํ•˜๋Š” opensource software ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ

AWS CDK CLI๋กœ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

: AWS CDK CLI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CDK application๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

  • CDK CLI๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด

    • CDK ์•ฑ์— ์ •์˜๋œ stack์„ ๋‚˜์—ดํ•˜๊ณ ,

    • Stack์„ CloudFormation ํ…œํ”Œ๋ฆฟ์— ํ•ฉ์„ฑํ•˜๊ณ ,

    • ์‹คํ–‰์ค‘์ธ stack instance์™€ CDK code์— ์ •์˜๋œ stack ๊ฐ„์˜ CDK code ์— ์ •์˜๋œ stack ๊ฐ„์˜ ์ฐจ์ด์ ์„ ํ™•์ธํ•˜๊ณ ,

    • ์›ํ•˜๋Š” Public AWS Region ์— stack์„ ๋ฐฐํฌ ํ•  ์ˆ˜ ์žˆ๋‹ค

AWS CDK๋Š” ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ• ๊นŒ?

  • AWS CDK ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ AWS CDK ํ”„๋กœ์ ํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹คํ–‰๋˜์–ด CloudFormation ํ…œํ”Œ๋ฆฟ์„ ์ƒ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค.

  • AWS CDK ํ”„๋กœ์ ํŠธ๋Š” AWS CDK CLI ๋‚˜ CD system์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค

0. Install AWS CDK

npm i -g aws-cdk

1. CDK INIT

CDK INIT

cdk init sample-app --language typescript
  • Typescript๋ฅผ ์‚ฌ์šฉํ•˜๋Š” CDK ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ

์‹คํ–‰ ๊ฒฐ๊ณผ

chloe@chloe-XPS-15-9570 ~/Workspace/aws-test/cdk-workshop
$ cdk init sample-app --language typescript
Applying project template sample-app for typescript
# Welcome to your CDK TypeScript project!

You should explore the contents of this project. It demonstrates a CDK app with an instance of a stack (`CdkWorkshopStack`)
which contains an Amazon SQS queue that is subscribed to an Amazon SNS topic.

The `cdk.json` file tells the CDK Toolkit how to execute your app.

## Useful commands

 * `npm run build`   compile typescript to js
 * `npm run watch`   watch for changes and compile
 * `npm run test`    perform the jest unit tests
 * `cdk deploy`      deploy this stack to your default AWS account/region
 * `cdk diff`        compare deployed stack with current state
 * `cdk synth`       emits the synthesized CloudFormation template

Initializing a new git repository...
Executing npm install...
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated request-promise-native@1.0.9: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^2.1.2 (node_modules/jest-haste-map/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN cdk-workshop@0.1.0 No repository field.
npm WARN cdk-workshop@0.1.0 No license field.

โœ… All done!
  • ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์€ ๋ช…๋ น์–ด๋“ค์ด ์ถœ๋ ฅ๋จ

Useful commands

  • npm run build compile typescript to js

  • npm run watch watch for changes and compile

  • npm run test perform the jest unit tests

  • cdk deploy deploy this stack to your default AWS account/region

  • cdk diff compare deployed stack with current state

  • cdk synth emits the synthesized CloudFormation template

2. npm run watch

TypesScript ์ฝ”๋“œ ์ปดํŒŒ์ผ๋ง

  • TypeScript ์ฝ”๋“œ๋Š” JavaScript๋กœ compile ๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†Œ์Šค ์ฝ”๋“œ ๋ณ€๊ฒฝ ๋ถ„์„ ํ™•์ธํ•˜๋ ค๋ฉด ๊ณ„์†ํ•ด์„œ .js ํŒŒ์ผ๋กœ complile์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค

    • ํ”„๋กœ์ ํŠธ์—๋Š” watch ๋ผ๋Š” ์ด๋ฆ„์˜ npm script๊ฐ€ ์ด๋ฏธ ์„ค์ •๋˜์–ด ์žˆ์–ด์„œ, ์ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋งค๋ฒˆ ์ˆ˜๋™์œผ๋กœ complie ํ•ด์ค„ ํ•„์š” ์—†์ด ์ž๋™์œผ๋กœ ๋ณ€๊ฒฝ๋ถ„์„ .js ํŒŒ์ผ๋กœ complie ํ•ด์ค€๋‹ค!

์ฝ”๋“œ ๋ณ€๊ฒฝ๋ถ„ watch ํ•˜๊ธฐ

ํ”„๋กœ์ ํŠธ Directory ๋กœ ์ด๋™

chloe@chloe-XPS-15-9570 ~
$ cd Workspace/aws-test/cdk-workshop/

watch script ์ˆ˜ํ–‰

npm run watch
  • ๊ทธ๋Ÿฌ๋ฉด ํ„ฐ๋ฏธ๋„ ์ฐฝ์˜ ๋‚ด์šฉ์ด ์ง€์›Œ์ง€๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค

  • ์ด script๋Š” TypeScript Compiler (tsc) ๋ฅผ watch ๋ชจ๋“œ๋กœ ์‹œ์ž‘ํ•ด์„œ, ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ monitoring ํ•˜์—ฌ .ts ํŒŒ์ผ์˜ ๋ณ€๊ฒฝ๋ถ„์„ .js ํŒŒ์ผ๋กœ ์ž๋™ complie ํ•ด์ค€๋‹ค!

    • ๋„˜๋‚˜ ์‹ ๊ธฐ

3. ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

Project Directory ํƒ์ƒ‰

  • lib/cdk-workshop-stack.ts

    • CDK application์˜ main stack์ด ์ €์žฅ๋˜๋Š” ๊ณณ

  • bin/cdk-workshop.ts

    • CDK application์˜ entry point

    • lib/cdk-workshop-stack.ts ์— ์ •์˜๋œ stack์„ load ํ•œ๋‹ค

  • cdk.json

    • toolkit์ด ์–ด๋–ป๊ฒŒ app์„ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ๋Š” ํŒŒ์ผ

      • ์ด ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ "npx ts-node bin/cdk-workshop.ts" ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค!

Entry Point

Entry point์ธ bin/cdk-workshop.ts ํŒŒ์ผ ์‚ดํŽด๋ณด๊ธฐ

#!/usr/bin/env node
import * as cdk from '@aws-cdk/core';
import { CdkWorkshopStack } from '../lib/cdk-workshop-stack';

const app = new cdk.App();
new CdkWorkshopStack(app, 'CdkWorkshopStack');
  • ์ด ์ฝ”๋“œ๋Š” CdkWorkshopStack ์„ loadํ•˜๊ณ  initiate ํ•œ๋‹ค

    • ์–ด๋–ค stack์„ loadํ•  ๊ฒƒ์ธ์ง€๋งŒ ์ •์˜๋˜๊ณ  ๋‚˜๋ฉด ๋” ์ด์ƒ ๋ณผ ์ผ์ด ์—†๋Š” ํŒŒ์ผ

Main Stack

์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด ์ •์˜๋˜๋Š” lib/cdk-workshop-stack.ts ํŒŒ์ผ ์‚ดํŽด๋ณด๊ธฐ

import * as cdk from '@aws-cdk/core';
import * as sns from '@aws-cdk/aws-sns';
import * as sqs from '@aws-cdk/aws-sqs';
import * as subs from '@aws-cdk/aws-sns-subscriptions';

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

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

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

    topic.addSubscription(new subs.SqsSubscription(queue));
  }
}
  • Application์ด sample CDK stack (CdkWorkshopStack) ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฒƒ ํ™•์ธ ๊ฐ€๋Šฅ

  • ์ด stack์—๋Š” ์•„๋ž˜์˜ ์„ธ ๊ฐ€์ง€ ์„œ๋น„์Šค ์ƒ์„ฑ์ด ํฌํ•จ๋œ๋‹ค

    1. SQS Queue

      • new sqs.Queue

    2. SNS Topoic

      • new sns.Topic

    3. SNS Topic์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ชจ๋“  message๋ฅผ ์ˆ˜์‹ ํ•˜๋„๋ก Queue ์„ค์ •

      • topic.addSubscription

4. CDK Synth

CDK ์•ฑ์—์„œ CloudFormation Template ์‚ฐ์ถœํ•˜๊ธฐ

  • AWS CDK ์•ฑ์€ code๋ฅผ ์ด์šฉํ•ด์„œ Infra๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ •์˜ํ•˜๋„๋ก ๋„์™€์ฃผ๋Š” ๋„๊ตฌ์ด๋‹ค

  • CDK ์•ฑ์ด ์‹ค์ œ๋กœ ์‹คํ–‰๋  ๋•Œ๋Š” AWS CloudFormation template์„ stack๋งˆ๋‹ค ์ƒ์„ฑํ•˜์—ฌ ์‹ค์ œ ๋ฐฐํฌ๋ฅผ ํ•œ๋‹ค

  • CDK ์•ฑ์—์„œ template์„ ์‚ฐ์ถœํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” cdk synth ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

    • CDK CLI๋Š” cdk.json ํŒŒ์ผ์ด ์žˆ๋Š” directory์—์„œ๋งŒ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ์  ์œ ์˜ํ•˜๊ธฐ!

Sample app์—์„œ ์ถ”์ถœ๋œ template ์‚ดํŽด๋ณด๊ธฐ

chloe@chloe-XPS-15-9570 ~/Workspace/aws-test/cdk-workshop
$ cdk synth
**************************************************
*** Newer version of CDK is available [1.62.0] ***
*** Upgrade recommended                        ***
**************************************************
Resources:
  CdkWorkshopQueue50D9D426:
    Type: AWS::SQS::Queue
    Properties:
      VisibilityTimeout: 300
    Metadata:
      aws:cdk:path: CdkWorkshopStack/CdkWorkshopQueue/Resource
  CdkWorkshopQueuePolicyAF2494A5:
    Type: AWS::SQS::QueuePolicy
    Properties:
      PolicyDocument:
        Statement:
          - Action: sqs:SendMessage
            Condition:
              ArnEquals:
                aws:SourceArn:
                  Ref: CdkWorkshopTopicD368A42F
            Effect: Allow
            Principal:
              Service: sns.amazonaws.com
            Resource:
              Fn::GetAtt:
                - CdkWorkshopQueue50D9D426
                - Arn
        Version: "2012-10-17"
      Queues:
        - Ref: CdkWorkshopQueue50D9D426
    Metadata:
      aws:cdk:path: CdkWorkshopStack/CdkWorkshopQueue/Policy/Resource
  CdkWorkshopQueueCdkWorkshopStackCdkWorkshopTopicD7BE96438B5AD106:
    Type: AWS::SNS::Subscription
    Properties:
      Protocol: sqs
      TopicArn:
        Ref: CdkWorkshopTopicD368A42F
      Endpoint:
        Fn::GetAtt:
          - CdkWorkshopQueue50D9D426
          - Arn
    Metadata:
      aws:cdk:path: CdkWorkshopStack/CdkWorkshopQueue/CdkWorkshopStackCdkWorkshopTopicD7BE9643/Resource
  CdkWorkshopTopicD368A42F:
    Type: AWS::SNS::Topic
    Metadata:
      aws:cdk:path: CdkWorkshopStack/CdkWorkshopTopic/Resource
  CDKMetadata:
    Type: AWS::CDK::Metadata
    Properties:
      Modules: aws-cdk=1.61.1,@aws-cdk/aws-cloudwatch=1.61.1,@aws-cdk/aws-iam=1.61.1,@aws-cdk/aws-kms=1.61.1,@aws-cdk/aws-sns=1.61.1,@aws-cdk/aws-sns-subscriptions=1.61.1,@aws-cdk/aws-sqs=1.61.1,@aws-cdk/cloud-assembly-schema=1.61.1,@aws-cdk/core=1.61.1,@aws-cdk/cx-api=1.61.1,@aws-cdk/region-info=1.61.1,jsii-runtime=node.js/v12.17.0
    Condition: CDKMetadataAvailable
Conditions:
  CDKMetadataAvailable:
    Fn::Or:
      - Fn::Or:
          - Fn::Equals:
              - Ref: AWS::Region
              - ap-east-1
          - Fn::Equals:
              - Ref: AWS::Region
              - ap-northeast-1
          - Fn::Equals:
              - Ref: AWS::Region
              - ap-northeast-2
          - Fn::Equals:
              - Ref: AWS::Region
              - ap-south-1
          - Fn::Equals:
              - Ref: AWS::Region
              - ap-southeast-1
          - Fn::Equals:
              - Ref: AWS::Region
              - ap-southeast-2
          - Fn::Equals:
              - Ref: AWS::Region
              - ca-central-1
          - Fn::Equals:
              - Ref: AWS::Region
              - cn-north-1
          - Fn::Equals:
              - Ref: AWS::Region
              - cn-northwest-1
          - Fn::Equals:
              - Ref: AWS::Region
              - eu-central-1
      - Fn::Or:
          - Fn::Equals:
              - Ref: AWS::Region
              - eu-north-1
          - Fn::Equals:
              - Ref: AWS::Region
              - eu-west-1
          - Fn::Equals:
              - Ref: AWS::Region
              - eu-west-2
          - Fn::Equals:
              - Ref: AWS::Region
              - eu-west-3
          - Fn::Equals:
              - Ref: AWS::Region
              - me-south-1
          - Fn::Equals:
              - Ref: AWS::Region
              - sa-east-1
          - Fn::Equals:
              - Ref: AWS::Region
              - us-east-1
          - Fn::Equals:
              - Ref: AWS::Region
              - us-east-2
          - Fn::Equals:
              - Ref: AWS::Region
              - us-west-1
          - Fn::Equals:
              - Ref: AWS::Region
              - us-west-2
  • cdk synth ๋ช…๋ น์–ด๋ฅผ cdk.json ํŒŒ์ผ์ด ์žˆ๋Š” directory์—์„œ ์‹คํ–‰ํ•˜๋ฉด ์œ„์™€ ๊ฐ™์ด CloudFormation template์ด ์ถœ๋ ฅ๋œ๋‹ค

  • ์ด template์€ ์•„๋ž˜์˜ 4๊ฐ€์ง€ ์ž์›์„ ์ƒ์„ฑํ•œ๋‹ค

  1. AWS::SQS::Queue

    • SQS ํ

  2. AWS::SNS::Topic

    • SNS ํ† ํ”ฝ

  3. AWS::SNS::Subscription

    • ํ์™€ ํ† ํ”ฝ ์‚ฌ์ด์˜ subscription ์ •์˜

  4. AWS::SQS::QueuePolicy

    • ํ† ํ”ฝ์—์„œ ํ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” IAM ์ •์ฑ…

  • AWS::CDK::Metadata ๋Š” CDK toolkit ์— ์˜ํ•ด ๋ชจ๋“  stack์— ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ์ž์›์ด๋‹ค

    • CDK ํŒ€์ด ๋ณด์•ˆ issue ํŒŒ์•… ๋ฐ ๋ถ„์„์„ ํ•˜๋Š”๋ฐ์— ์‚ฌ์šฉ๋œ๋‹ค๊ณ  ํ•จ!

5. CDK Deploy

ํ™˜๊ฒฝ Bootstrap

  • AWS CDK ์•ฑ์„ ํ™˜๊ฒฝ (๊ณ„์ก/region)์— ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € bootstrap stack ์„ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค

    • bootstrap stack์—๋Š” toolkit์˜ ์šด์˜์„ ์œ„ํ•ด ํ•„์š”ํ•œ ์ž์›๋“ค์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค

      • ex) CFN teamplate์„ ๋ณด๊ด€ํ•˜๊ณ , ๋ฐฐํฌ process ๋™์•ˆ ์ƒ์„ฑ๋˜๋Š” asset๋“ค์„ ์ €์žฅํ•˜๋Š” S3 bucket

  • cdk bootstrap ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด์„œ ํ•˜๋‚˜์˜ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ bootstrap stack์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค

chloe@chloe-XPS-15-9570 ~/Workspace/aws-test/cdk-workshop
$ cdk bootstrap
 โณ  Bootstrapping environment aws://213888382832/us-west-2...
CDKToolkit: creating CloudFormation changeset...
[โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ] (3/3)



 โœ…  Environment aws://213888382832/us-west-2 bootstrapped.
**************************************************
*** Newer version of CDK is available [1.62.0] ***
*** Upgrade recommended                        ***
**************************************************
  • ๋งŒ์•ฝ ์—ฌ๊ธฐ์—์„œ Access Denied error๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด,

    1. AWS CLI ๊ฐ€ ์ œ๋Œ€๋กœ ์„ค์ •๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜

    2. ์‚ฌ์šฉ์ค‘์ธ AWS profile ์ด cloudformation:CreateChangeSet ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๊ถŒํ•œ์ด ์—†๋Š” ๊ฒƒ

  • ์œ„์˜ ๋ช…๋ น์–ด๊ฐ€ ์„ฑ๊ณต์ •์œผ๋กœ ์ˆ˜ํ–‰๋˜๊ณ  ๋‚˜๋ฉด CDK ์•ฑ์„ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค!

๋ฐฐํฌํ•˜๊ธฐ

  • cdk deploy ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด์„œ CDK ์•ฑ์„ ๋ฐฐํฌํ•œ๋‹ค

chloe@chloe-XPS-15-9570 ~/Workspace/aws-test/cdk-workshop
$ cdk deploy
This deployment will make potentially sensitive changes according to your current security approval level (--require-approval broadening).
Please confirm you intend to make the following modifications:

IAM Statement Changes
โ”Œโ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   โ”‚ Resource                โ”‚ Effect โ”‚ Action          โ”‚ Principal               โ”‚ Condition               โ”‚
โ”œโ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ + โ”‚ ${CdkWorkshopQueue.Arn} โ”‚ Allow  โ”‚ sqs:SendMessage โ”‚ Service:sns.amazonaws.c โ”‚ "ArnEquals": {          โ”‚
โ”‚   โ”‚                         โ”‚        โ”‚                 โ”‚ om                      โ”‚   "aws:SourceArn": "${C โ”‚
โ”‚   โ”‚                         โ”‚        โ”‚                 โ”‚                         โ”‚ dkWorkshopTopic}"       โ”‚
โ”‚   โ”‚                         โ”‚        โ”‚                 โ”‚                         โ”‚ }                       โ”‚
โ””โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
(NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299)

Do you wish to deploy these changes (y/n)?
  • ์œ„์™€ ๊ฐ™์€ ๊ฒฝ๊ณ ๋Š” ๋ฐฐํฌํ•˜๋ ค๋Š” ์•ฑ์— ๋ณด์•ˆ ์ ๊ฒ€์ด ํ•„์š”ํ•œ ํ•ญ๋ชฉ์ด ๋™๋ฐ˜๋˜๋Š” ๊ฒฝ์šฐ ์ถœ๋ ฅ๋œ๋‹ค

    • Topic์—์„œ Queue๋กœ message๋ฅผ ๋ณด๋‚ด์ค˜์•ผ ํ•˜๋ฏ€๋กœ y๋ฅผ ์ž…๋ ฅํ•˜์—ฌ stack์„ ๋ฐฐํฌํ•˜๊ณ  ์ž์›์„ ์ƒ์„ฑํ•˜์ž!

CdkWorkshopStack: deploying...
CdkWorkshopStack: creating CloudFormation changeset...
[โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ] (6/6)






 โœ…  CdkWorkshopStack

Stack ARN:
arn:aws:cloudformation:us-west-2:213888382832:stack/CdkWorkshopStack/fa564140-f078-11ea-b665-0a050e07f862
  • ์‹คํ–‰ ๊ฒฐ๊ณผ ์„ค๋ช…

    • us-west-2 ๋Š” app์„ ์ƒ์„ฑํ•œ region ์ด๊ณ ,

    • 213888382832 ๋Š” account ID์ด๊ณ ,

    • fa564140-f078-11ea-b665-0a050e07f862 ๋Š” stack ID ์ด๋‹ค

CloudFormation Console

  • CDK ์•ฑ์€ AWS CloudFormation ์„ ํ†ตํ•ด ๋ฐฐํฌ๋œ๋‹ค

  • CDK stack์€ CloudFormation stack๊ณผ 1:1 ๋กœ ๋งคํ•‘๋œ๋‹ค

    • ์ฆ‰, Stack ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด CloudFormation์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค!

CloudFormation console

  • CdkWorkshopStack ์„ ์„ ํƒํ•˜๊ณ  ๋ฆฌ์†Œ์Šค ํƒญ์„ ํด๋ฆญํ•˜๋ฉด, ์ƒ์„ฑํ•œ ์ž์›์˜ ๋ฌผ๋ฆฌ์  ID๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค

๋ฌผ๋ฆฌ์  ID ํ™•์ธํ•˜๊ธฐ

Last updated