SlideShare a Scribd company logo
1 of 36
Download to read offline
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
2019.07.17
AWSのインフラはプログラミングコード
で構築!
AWS Cloud Development Kit 入門
Atsushi Fukui
Solutions Architect
DevOps Specialist
Amazon Web Services Japan K.K.
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
自己紹介
名前
福井 厚(ふくい あつし)fatsushi@
所属
アマゾン ウェブ サービス ジャパン株式会社
技術統括本部デベロッパーアドボカシー部
ソリューション アーキテクト
モダンアプリケーション開発スペシャリスト
前職
エンタープライズ アプリケーション開発コンサルタント
好きなAWSサービス
AWS Code シリーズ、AWS Cloud9、AWS CDK、AWS Lambda
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
このセッションの内容
• AWS Cloud Development Kitとは
• サンプルコーディング
• まとめ
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
インフラ構築の歴史
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
マニュアル作成(管理コンソール)
� 始めるのは簡単
� 繰り返し可能ではない
� エラーが起きやすい
� 時間がかかる
High
level
Low levelManual
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
スクリプト
� APIコールが失敗したら何が起こる?
� どうやってアップデートする?
� リソースが準備完了なのはどうやって知る?
� どうやってロールバックする?
Scripted
Manual
High
level
Low level
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
リソース プロビジョニング エンジン
AWS CloudFormation
template
(JSON/YAML)
HashiCorp
Configuration
Language (HCL)
望ましい状態の設定
Declarative
Scripted
Manual
High
level
Low
level
� 自動化が容易
� 再生成可能
� 設定の文法
� 抽象化なし、多数の詳細
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Document Object Models (DOMs)
Troposphere Python
SparkleFormation Ruby
GoFormation Go
…
if文、for ループ、IDE利用可能
例えば、TroposphereでVPCを作成するには128行必要
AWS
CloudFormati
on Template
� リアルコード ♥️
� 望ましい状態
� 抽象化は組み込まれていない
DOMs
Declarative
Scripted
Manual
High
level
Low
level
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Cloud Development Kit(AWS CDK) とは
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS CDK
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS CloudFormation
template
AWS CDK application
Stack(s)
Construct Construct
AWS CDK
Componentized
DOMs
Declarative
Scripted
Manual
High
level
Low
level
Resources
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS CDKは複数言語で利用可能
TypeScript、Python
Generally Available
Developer Preview
Java、C#
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
事前要件
• Node.js (>= 8.11.x)
• TypeScript >= 2.7
• Java 8 and Maven 3.5.4
• C# (.NET Core >= 2.0, .NET Framework >= 4.6.1
Mono >= 5.4)
• Python >= 3.6
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Demo
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
npm install -g aws-cdk
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
cdk init app --language
typescript
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
bin/cdk-worKshop.ts
#!/usr/bin/env node
import cdk = require('@aws-cdk/core');
import { CdkWorkshopStack } from '../lib/cdk-workshop-stack';
const app = new cdk.App();
new CdkWorkshopStack(app, 'CdkWorkshopStack');
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
lib/cdk-workshop-stack.ts
import sns = require('@aws-cdk/aws-sns');
import subs = require('@aws-cdk/aws-sns-subscriptions');
import sqs = require('@aws-cdk/aws-sqs');
import cdk = require('@aws-cdk/core');
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)
});
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
lib/cdk-workshop-stack.ts
const topic = new sns.Topic(this, 'CdkWorkshopTopic');
topic.addSubscription(new subs.SqsSubscription(queue));
}
}
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
package.json
"name": "cdk-workshop",
"version": "0.1.0",
"bin": {
"cdk-workshop": "bin/cdk-
workshop.js"
},
"scripts": {
"build": "tsc",
"watch": "tsc -w",
"cdk": "cdk"
},
"devDependencies": {
"@types/node": "8.10.45",
"typescript": "^3.3.3333",
"ts-node": "^8.1.0",
"aws-cdk": "^1.0.0"
},
"dependencies": {
"@aws-cdk/aws-sns": "^1.0.0",
"@aws-cdk/aws-sns-subscriptions":
"^1.0.0",
"@aws-cdk/aws-sqs": "^1.0.0",
"@aws-cdk/core": "^1.0.0"
}
}
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
cdk.json
{
"app": "npx ts-node bin/cdk-workshop.ts"
}
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
tsconfig.json
{
"compilerOptions": {
"target":"ES2018",
"module": "commonjs",
"lib": ["es2016", "es2017.object",
"es2017.string"],
"declaration": true,
"strict": true,
"noImplicitAny": true,
"strictNullChecks": true,
"noImplicitThis": true,
"alwaysStrict": true,
"noUnusedLocals": false,
"noUnusedParameters": false,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": false,
”inlineSourceMap": true,
"inlineSources": true,
"experimentalDecorators": true,
"strictPropertyInitialization":false
},
"exclude": ["cdk.out"]
}
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
cdk synth
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
出力されるCloudFormation Template
Resources:
CdkWorkshopQueue50D9D426:
Type: AWS::SQS::Queue
Properties:
VisibilityTimeout: 300
Metadata:
aws:cdk:path: CdkWorkshopStack/CdkWorkshopQueue/Resource
CdkWorkshopQueuePolicyAF2494A5:
Type: AWS::SQS::QueuePolicy
Properties:
PolicyDocument:
...
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS::CDK::Metadata
• AWS::CDK::MetadataリソースはToolkitによってすべてのス
タックに自動的に追加される
• これは生成されたスタックが利用しているCDKや利用してい
るライブラリのバージョンを分析するために、CDK チームに
よって利用される
• これによって、例えばセキュリティー上の問題などが発生し
た場合に重要な情報を利用者に通知することが可能になる
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
cdk bootstrap
cdk bootstrap
Bootstrapping environment aws://xxxxxxxxxxxx/ap-
northeast-1...
CDKToolkit: creating CloudFormation changeset...
Environment aws://xxxxxxxxxxxx/ap-northeast-1
bootstrapped (no changes).
• AWS CDKアプリを初めて環境(アカウント/リージョン)にデプロイする前
に、”bootstrap stack”をインストールする必要がある
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
cdk deploy
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
CloudFormationスタックを実行しリソースを作成
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
cdk diff
cdk diff
Stack CdkWorkshopStack
IAM Statement Changes
┌───┬─────────────────────────────────┬────────┬─────────────────┬─────────────────
────────────────┬──────────────────────────────────┐
│ │ Resource │ Effect │ Action │ Principal │
Condition │
├───┼─────────────────────────────────┼────────┼─────────────────┼─────────────────
────────────────┼──────────────────────────────────┤
│ - │ ${CdkWorkshopQueue50D9D426.Arn} │ Allow │ sqs:SendMessage │ Service:sns.amazonaws.com │ "ArnEquals":
{ │
│ │ │ │ │ │ "aws:SourceArn":
"${CdkWorksho │
│ │ │ │ │ │
pTopicD368A42F}" │
│ │ │ │ │ │ }
│
└───┴─────────────────────────────────┴────────┴─────────────────┴─────────────────
────────────────┴──────────────────────────────────┘
(NOTE: There may be security-related changes not in this list. See http://bit.ly/cdk-2EhF7Np)
Resources
[-] AWS::SQS::Queue CdkWorkshopQueue50D9D426 destroy
[-] AWS::SQS::QueuePolicy CdkWorkshopQueuePolicyAF2494A5 destroy
[-] AWS::SNS::Subscription CdkWorkshopQueueCdkWorkshopStackCdkWorkshopTopicD7BE96438B5AD106 destroy
[-] AWS::SNS::Topic CdkWorkshopTopicD368A42F destroy
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS CDK Concepts
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Cloud Development Kit
App
• 実行可能プログラム
• CloudFormationテンプレートの
生成とデプロイに利用
Stack
• デプロイ可能な単位
• リージョンとアカウントを保持
Construct
• AWSリソースを表現
• 階層的な木構造を構成可能
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Construct
• AWS CDK アプリの基本ビルディングブロック
• Cloudコンポーネントを表し、CloudFormationが作成に必要
なすべてをカプセル化
• 単一のリソースを表現したり(Amazon S3 Bucketなど)、複
数のAWS CDKリソースをまたがるハイレベル コンポーネン
トを表現することも可能(モニタリングリソースとダッシュボー
ドを伴うクローンジョブなど)
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Construct Library
• low-level constructs – CFN リソース
• CloudFormationで利用可能なすべてのAWSリソース
• CfnXXX (例:s3.CfnBucketはAWS::S3::Bucketリソースを表す)
• CFNリソースを利用する場合は、すべてのリソースプロパティを明示的に
設定する必要がある
• High-level constructs – intent-based API
• AWSリソースを表すが、便利なデフォルト値や便利なメソッドを提供
• s3.Bucket.addLifeCycleRule()など
• Patterns
• 複数のリソースを含むAWSの一般的なタスクの実行
• aws-esc-patterns.LoadBalancedFargateServiceなど
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Composition
• Constructを通じて高度に抽象化されたパターンは
Compositionと呼ばれる
• CDK.AppをルートとしたConstructの階層構造を構築可能
• 再利用の単位として利用可能
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Constructに特定の機能がない場合の回避策
• CloudFormation Constructsを直接利用する
• すべてのCloudFormationリソース、プロパティと1:1で対応する自動
生成されたCFNリソース(S3.CfnBucketなど)を利用可能
• 対応するCFNリソースがまだ作成されていない場合
• cdk.CfnResourceクラスを利用する
• Constructsの背後にあるCFNリソースを変更する
• addOverride、addDeleteOverrideメソッドで直接上書きする
• CloudFormationカスタムリソースを実装する
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
参考資料
• AWS Cloud Development Kit (AWS CDK) Developer Guild
https://docs.aws.amazon.com/cdk/latest/guide/home.html
• CDK Tools
https://docs.aws.amazon.com/cdk/latest/guide/tools.html
• AWS CDK API Reference
https://docs.aws.amazon.com/cdk/api/latest/docs/aws-construct-library.html
• aws-cdk-samples
https://github.com/aws-samples/aws-cdk-examples#TypeScript
• Workshop
https://cdkworkshop.com/

More Related Content

What's hot

What's hot (20)

20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
 
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
 
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic BeanstalkAWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
 
20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager
 
20200826 AWS Black Belt Online Seminar AWS CloudFormation
20200826 AWS Black Belt Online Seminar AWS CloudFormation 20200826 AWS Black Belt Online Seminar AWS CloudFormation
20200826 AWS Black Belt Online Seminar AWS CloudFormation
 
20191002 AWS Black Belt Online Seminar Amazon EC2 Auto Scaling and AWS Auto S...
20191002 AWS Black Belt Online Seminar Amazon EC2 Auto Scaling and AWS Auto S...20191002 AWS Black Belt Online Seminar Amazon EC2 Auto Scaling and AWS Auto S...
20191002 AWS Black Belt Online Seminar Amazon EC2 Auto Scaling and AWS Auto S...
 
AWS CLIでAssumeRole
AWS CLIでAssumeRoleAWS CLIでAssumeRole
AWS CLIでAssumeRole
 
20190731 Black Belt Online Seminar Amazon ECS Deep Dive
20190731 Black Belt Online Seminar Amazon ECS Deep Dive20190731 Black Belt Online Seminar Amazon ECS Deep Dive
20190731 Black Belt Online Seminar Amazon ECS Deep Dive
 
[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策
[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策
[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策
 
AWS Blackbelt 2015シリーズ RDS
AWS Blackbelt 2015シリーズ RDSAWS Blackbelt 2015シリーズ RDS
AWS Blackbelt 2015シリーズ RDS
 
202106 AWS Black Belt Online Seminar 小売現場のデータを素早くビジネス に活用するAWSデータ基盤
202106 AWS Black Belt Online Seminar 小売現場のデータを素早くビジネス に活用するAWSデータ基盤202106 AWS Black Belt Online Seminar 小売現場のデータを素早くビジネス に活用するAWSデータ基盤
202106 AWS Black Belt Online Seminar 小売現場のデータを素早くビジネス に活用するAWSデータ基盤
 
20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...
20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...
20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...
 
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
20190514 AWS Black Belt Online Seminar Amazon API Gateway
20190514 AWS Black Belt Online Seminar Amazon API Gateway 20190514 AWS Black Belt Online Seminar Amazon API Gateway
20190514 AWS Black Belt Online Seminar Amazon API Gateway
 
20210526 AWS Expert Online マルチアカウント管理の基本
20210526 AWS Expert Online マルチアカウント管理の基本20210526 AWS Expert Online マルチアカウント管理の基本
20210526 AWS Expert Online マルチアカウント管理の基本
 
AWSからのメール送信
AWSからのメール送信AWSからのメール送信
AWSからのメール送信
 
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
 
AWS Black Belt Online Seminar 2017 Deployment on AWS
AWS Black Belt Online Seminar 2017 Deployment on AWSAWS Black Belt Online Seminar 2017 Deployment on AWS
AWS Black Belt Online Seminar 2017 Deployment on AWS
 
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
 

Similar to AWSのインフラはプログラミングコードで構築!AWS Cloud Development Kit 入門

[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
Amazon Web Services Japan
 
Realm platform2019
Realm platform2019Realm platform2019
Realm platform2019
昌桓 李
 

Similar to AWSのインフラはプログラミングコードで構築!AWS Cloud Development Kit 入門 (20)

(AWS DevOps祭り 2018) AWS Management Toolsサービスアプデートのご紹介
(AWS DevOps祭り 2018) AWS Management Toolsサービスアプデートのご紹介(AWS DevOps祭り 2018) AWS Management Toolsサービスアプデートのご紹介
(AWS DevOps祭り 2018) AWS Management Toolsサービスアプデートのご紹介
 
Gaming cicd-pipeline gaming-technight-2
Gaming cicd-pipeline gaming-technight-2Gaming cicd-pipeline gaming-technight-2
Gaming cicd-pipeline gaming-technight-2
 
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
 
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
 
20190619 AWS Black Belt Online Seminar Dive Deep into AWS Chalice
20190619 AWS Black Belt Online Seminar Dive Deep into AWS Chalice20190619 AWS Black Belt Online Seminar Dive Deep into AWS Chalice
20190619 AWS Black Belt Online Seminar Dive Deep into AWS Chalice
 
20180221 AWS Black Belt Online Seminar AWS Lambda@Edge
20180221 AWS Black Belt Online Seminar AWS Lambda@Edge20180221 AWS Black Belt Online Seminar AWS Lambda@Edge
20180221 AWS Black Belt Online Seminar AWS Lambda@Edge
 
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
 
[CTO Night & Day 2019] CTO のためのセキュリティ for Seed ~ Mid Stage #ctonight
[CTO Night & Day 2019] CTO のためのセキュリティ for Seed ~ Mid Stage #ctonight[CTO Night & Day 2019] CTO のためのセキュリティ for Seed ~ Mid Stage #ctonight
[CTO Night & Day 2019] CTO のためのセキュリティ for Seed ~ Mid Stage #ctonight
 
KDDIにおけるAWS×アジャイル開発
KDDIにおけるAWS×アジャイル開発KDDIにおけるAWS×アジャイル開発
KDDIにおけるAWS×アジャイル開発
 
20190226 AWS Black Belt Online Seminar Amazon WorkSpaces
20190226 AWS Black Belt Online Seminar Amazon WorkSpaces20190226 AWS Black Belt Online Seminar Amazon WorkSpaces
20190226 AWS Black Belt Online Seminar Amazon WorkSpaces
 
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
 
20190410 AWS Black Belt Online Seminar Amazon Elastic Container Service for K...
20190410 AWS Black Belt Online Seminar Amazon Elastic Container Service for K...20190410 AWS Black Belt Online Seminar Amazon Elastic Container Service for K...
20190410 AWS Black Belt Online Seminar Amazon Elastic Container Service for K...
 
AWS re:Invent 2019 Recap IoT アップデート
AWS re:Invent 2019 Recap IoT アップデートAWS re:Invent 2019 Recap IoT アップデート
AWS re:Invent 2019 Recap IoT アップデート
 
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
 
Cloud9で試すAWS IoT Greengrass V2
Cloud9で試すAWS IoT Greengrass V2Cloud9で試すAWS IoT Greengrass V2
Cloud9で試すAWS IoT Greengrass V2
 
Realm platform2019
Realm platform2019Realm platform2019
Realm platform2019
 
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
 
[JAWS Days 2020] AWS Well-Architected フレームワークのご紹介
[JAWS Days 2020] AWS Well-Architected フレームワークのご紹介[JAWS Days 2020] AWS Well-Architected フレームワークのご紹介
[JAWS Days 2020] AWS Well-Architected フレームワークのご紹介
 
2019年9月18日開催AWS Japan × Atlassianセミナー_セッション2「AmazonカルチャーとDevOps」
2019年9月18日開催AWS Japan × Atlassianセミナー_セッション2「AmazonカルチャーとDevOps」2019年9月18日開催AWS Japan × Atlassianセミナー_セッション2「AmazonカルチャーとDevOps」
2019年9月18日開催AWS Japan × Atlassianセミナー_セッション2「AmazonカルチャーとDevOps」
 
AWS Black Belt Online Seminar 2018 AWS Well-Architected Framework
AWS Black Belt Online Seminar 2018 AWS Well-Architected FrameworkAWS Black Belt Online Seminar 2018 AWS Well-Architected Framework
AWS Black Belt Online Seminar 2018 AWS Well-Architected Framework
 

More from Amazon Web Services Japan

More from Amazon Web Services Japan (20)

202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
 
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
 
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
 
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
 
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
 
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデートAmazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
 
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
 
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
 
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
 
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDDAmazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDD
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
 
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するためにAmazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
 
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
 
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
 
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
 
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
 
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
202112 AWS Black Belt Online Seminar 店内の「今」をお届けする小売業向けリアルタイム配信基盤のレシピ
 
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
20211209 Ops-JAWS Re invent2021re-cap-cloud operations20211209 Ops-JAWS Re invent2021re-cap-cloud operations
20211209 Ops-JAWS Re invent2021re-cap-cloud operations
 

Recently uploaded

Recently uploaded (10)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

AWSのインフラはプログラミングコードで構築!AWS Cloud Development Kit 入門

  • 1. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 2019.07.17 AWSのインフラはプログラミングコード で構築! AWS Cloud Development Kit 入門 Atsushi Fukui Solutions Architect DevOps Specialist Amazon Web Services Japan K.K.
  • 2. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 自己紹介 名前 福井 厚(ふくい あつし)fatsushi@ 所属 アマゾン ウェブ サービス ジャパン株式会社 技術統括本部デベロッパーアドボカシー部 ソリューション アーキテクト モダンアプリケーション開発スペシャリスト 前職 エンタープライズ アプリケーション開発コンサルタント 好きなAWSサービス AWS Code シリーズ、AWS Cloud9、AWS CDK、AWS Lambda
  • 3. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. このセッションの内容 • AWS Cloud Development Kitとは • サンプルコーディング • まとめ
  • 4. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. インフラ構築の歴史
  • 5. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. マニュアル作成(管理コンソール) � 始めるのは簡単 � 繰り返し可能ではない � エラーが起きやすい � 時間がかかる High level Low levelManual
  • 6. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. スクリプト � APIコールが失敗したら何が起こる? � どうやってアップデートする? � リソースが準備完了なのはどうやって知る? � どうやってロールバックする? Scripted Manual High level Low level
  • 7. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. リソース プロビジョニング エンジン AWS CloudFormation template (JSON/YAML) HashiCorp Configuration Language (HCL) 望ましい状態の設定 Declarative Scripted Manual High level Low level � 自動化が容易 � 再生成可能 � 設定の文法 � 抽象化なし、多数の詳細
  • 8. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Document Object Models (DOMs) Troposphere Python SparkleFormation Ruby GoFormation Go … if文、for ループ、IDE利用可能 例えば、TroposphereでVPCを作成するには128行必要 AWS CloudFormati on Template � リアルコード ♥️ � 望ましい状態 � 抽象化は組み込まれていない DOMs Declarative Scripted Manual High level Low level
  • 9. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Cloud Development Kit(AWS CDK) とは
  • 10. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS CDK
  • 11. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS CloudFormation template AWS CDK application Stack(s) Construct Construct AWS CDK Componentized DOMs Declarative Scripted Manual High level Low level Resources
  • 12. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS CDKは複数言語で利用可能 TypeScript、Python Generally Available Developer Preview Java、C#
  • 13. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 事前要件 • Node.js (>= 8.11.x) • TypeScript >= 2.7 • Java 8 and Maven 3.5.4 • C# (.NET Core >= 2.0, .NET Framework >= 4.6.1 Mono >= 5.4) • Python >= 3.6
  • 14. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Demo
  • 15. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. npm install -g aws-cdk
  • 16. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. cdk init app --language typescript
  • 17. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. bin/cdk-worKshop.ts #!/usr/bin/env node import cdk = require('@aws-cdk/core'); import { CdkWorkshopStack } from '../lib/cdk-workshop-stack'; const app = new cdk.App(); new CdkWorkshopStack(app, 'CdkWorkshopStack');
  • 18. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. lib/cdk-workshop-stack.ts import sns = require('@aws-cdk/aws-sns'); import subs = require('@aws-cdk/aws-sns-subscriptions'); import sqs = require('@aws-cdk/aws-sqs'); import cdk = require('@aws-cdk/core'); 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) });
  • 19. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. lib/cdk-workshop-stack.ts const topic = new sns.Topic(this, 'CdkWorkshopTopic'); topic.addSubscription(new subs.SqsSubscription(queue)); } }
  • 20. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. package.json "name": "cdk-workshop", "version": "0.1.0", "bin": { "cdk-workshop": "bin/cdk- workshop.js" }, "scripts": { "build": "tsc", "watch": "tsc -w", "cdk": "cdk" }, "devDependencies": { "@types/node": "8.10.45", "typescript": "^3.3.3333", "ts-node": "^8.1.0", "aws-cdk": "^1.0.0" }, "dependencies": { "@aws-cdk/aws-sns": "^1.0.0", "@aws-cdk/aws-sns-subscriptions": "^1.0.0", "@aws-cdk/aws-sqs": "^1.0.0", "@aws-cdk/core": "^1.0.0" } }
  • 21. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. cdk.json { "app": "npx ts-node bin/cdk-workshop.ts" }
  • 22. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. tsconfig.json { "compilerOptions": { "target":"ES2018", "module": "commonjs", "lib": ["es2016", "es2017.object", "es2017.string"], "declaration": true, "strict": true, "noImplicitAny": true, "strictNullChecks": true, "noImplicitThis": true, "alwaysStrict": true, "noUnusedLocals": false, "noUnusedParameters": false, "noImplicitReturns": true, "noFallthroughCasesInSwitch": false, ”inlineSourceMap": true, "inlineSources": true, "experimentalDecorators": true, "strictPropertyInitialization":false }, "exclude": ["cdk.out"] }
  • 23. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. cdk synth
  • 24. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 出力されるCloudFormation Template Resources: CdkWorkshopQueue50D9D426: Type: AWS::SQS::Queue Properties: VisibilityTimeout: 300 Metadata: aws:cdk:path: CdkWorkshopStack/CdkWorkshopQueue/Resource CdkWorkshopQueuePolicyAF2494A5: Type: AWS::SQS::QueuePolicy Properties: PolicyDocument: ...
  • 25. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS::CDK::Metadata • AWS::CDK::MetadataリソースはToolkitによってすべてのス タックに自動的に追加される • これは生成されたスタックが利用しているCDKや利用してい るライブラリのバージョンを分析するために、CDK チームに よって利用される • これによって、例えばセキュリティー上の問題などが発生し た場合に重要な情報を利用者に通知することが可能になる
  • 26. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. cdk bootstrap cdk bootstrap Bootstrapping environment aws://xxxxxxxxxxxx/ap- northeast-1... CDKToolkit: creating CloudFormation changeset... Environment aws://xxxxxxxxxxxx/ap-northeast-1 bootstrapped (no changes). • AWS CDKアプリを初めて環境(アカウント/リージョン)にデプロイする前 に、”bootstrap stack”をインストールする必要がある
  • 27. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. cdk deploy
  • 28. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. CloudFormationスタックを実行しリソースを作成
  • 29. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. cdk diff cdk diff Stack CdkWorkshopStack IAM Statement Changes ┌───┬─────────────────────────────────┬────────┬─────────────────┬───────────────── ────────────────┬──────────────────────────────────┐ │ │ Resource │ Effect │ Action │ Principal │ Condition │ ├───┼─────────────────────────────────┼────────┼─────────────────┼───────────────── ────────────────┼──────────────────────────────────┤ │ - │ ${CdkWorkshopQueue50D9D426.Arn} │ Allow │ sqs:SendMessage │ Service:sns.amazonaws.com │ "ArnEquals": { │ │ │ │ │ │ │ "aws:SourceArn": "${CdkWorksho │ │ │ │ │ │ │ pTopicD368A42F}" │ │ │ │ │ │ │ } │ └───┴─────────────────────────────────┴────────┴─────────────────┴───────────────── ────────────────┴──────────────────────────────────┘ (NOTE: There may be security-related changes not in this list. See http://bit.ly/cdk-2EhF7Np) Resources [-] AWS::SQS::Queue CdkWorkshopQueue50D9D426 destroy [-] AWS::SQS::QueuePolicy CdkWorkshopQueuePolicyAF2494A5 destroy [-] AWS::SNS::Subscription CdkWorkshopQueueCdkWorkshopStackCdkWorkshopTopicD7BE96438B5AD106 destroy [-] AWS::SNS::Topic CdkWorkshopTopicD368A42F destroy
  • 30. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS CDK Concepts
  • 31. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Cloud Development Kit App • 実行可能プログラム • CloudFormationテンプレートの 生成とデプロイに利用 Stack • デプロイ可能な単位 • リージョンとアカウントを保持 Construct • AWSリソースを表現 • 階層的な木構造を構成可能
  • 32. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Construct • AWS CDK アプリの基本ビルディングブロック • Cloudコンポーネントを表し、CloudFormationが作成に必要 なすべてをカプセル化 • 単一のリソースを表現したり(Amazon S3 Bucketなど)、複 数のAWS CDKリソースをまたがるハイレベル コンポーネン トを表現することも可能(モニタリングリソースとダッシュボー ドを伴うクローンジョブなど)
  • 33. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Construct Library • low-level constructs – CFN リソース • CloudFormationで利用可能なすべてのAWSリソース • CfnXXX (例:s3.CfnBucketはAWS::S3::Bucketリソースを表す) • CFNリソースを利用する場合は、すべてのリソースプロパティを明示的に 設定する必要がある • High-level constructs – intent-based API • AWSリソースを表すが、便利なデフォルト値や便利なメソッドを提供 • s3.Bucket.addLifeCycleRule()など • Patterns • 複数のリソースを含むAWSの一般的なタスクの実行 • aws-esc-patterns.LoadBalancedFargateServiceなど
  • 34. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Composition • Constructを通じて高度に抽象化されたパターンは Compositionと呼ばれる • CDK.AppをルートとしたConstructの階層構造を構築可能 • 再利用の単位として利用可能
  • 35. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Constructに特定の機能がない場合の回避策 • CloudFormation Constructsを直接利用する • すべてのCloudFormationリソース、プロパティと1:1で対応する自動 生成されたCFNリソース(S3.CfnBucketなど)を利用可能 • 対応するCFNリソースがまだ作成されていない場合 • cdk.CfnResourceクラスを利用する • Constructsの背後にあるCFNリソースを変更する • addOverride、addDeleteOverrideメソッドで直接上書きする • CloudFormationカスタムリソースを実装する
  • 36. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 参考資料 • AWS Cloud Development Kit (AWS CDK) Developer Guild https://docs.aws.amazon.com/cdk/latest/guide/home.html • CDK Tools https://docs.aws.amazon.com/cdk/latest/guide/tools.html • AWS CDK API Reference https://docs.aws.amazon.com/cdk/api/latest/docs/aws-construct-library.html • aws-cdk-samples https://github.com/aws-samples/aws-cdk-examples#TypeScript • Workshop https://cdkworkshop.com/