Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
第158回 雲勉 AWS CDK 入門 ~ プログラミング言語で書くインフラ Python 編 ~
Search
iret.kumoben
March 27, 2025
Technology
260
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
第158回 雲勉 AWS CDK 入門 ~ プログラミング言語で書くインフラ Python 編 ~
下記、勉強会での資料です。
https://youtu.be/ONK1osWVtT0
iret.kumoben
March 27, 2025
Transcript
42 slides
第158回 雲勉 〜プログラミング言語で書くインフラ Python編〜 AWS CDK 入門
講師自己紹介 2 ◼ 西川 真由 • 所属:クラウドインテグレーション事業部 ソリューション開発セクション 第二開発グループ •
経歴: 2年、アイレット歴: 2年 • 一言: 最近春めいてきて嬉しい • ご質問は YouTubeのコメント欄で受け付けております。 後日回答させていただきます!
アジェンダ 3 1. 本日のゴール 2. AWS CDKについて 3. AWS CDKを書いてみる
4. まとめ
1. 本日のゴール 4
1.本日のゴール 5 CDKが出来る気がする! と思えるようになること お気づきでしょうか... C D K CDKが 出来る
気がする!
1.本日のゴール 6 話すこと・話さないこと 話すこと 話さないこと • AWS CDKとは何か • IaCツールを使うメリット
• AWS CDKの仕組み • AWS CDKの構成概念 • コード例 • 値の設定についての詳細な説明 • AWS CloudFormationとの記述の比較
2. AWS CDKについて 7
2. AWS CDKについて 8 ◼ AWS CDKとは 1. AWS Cloud
Development Kit AWS環境におけるクラウド開発で使用するツール
2. AWS CDKについて 9 ◼ AWS CDKとは 2. AWSが提供するInfrastructure as
Code(IaC)ツールの1つ • インフラ構成をコードで管理し、プロビジョニングまで行うプロセス • 手順書代わりになる。また、変更内容の手順書への反映漏れなどにより実環境と 手順書の内容が異なるといった人的なミスやブラックボックス化を防げる。 • Gitなどでバージョン管理することが出来る。 • コード化することで同じ構成を使い回しすることができる。 • 一度作った構成を共有しやすいのでチームや会社の資産となる。 • IaCを使うメリット • CI/CDには欠かせないツール
2. AWS CDKについて 10 ◼ AWS CDKとは 3.プログラミング言語でAWSリソースを定義できるのが最大の特徴 • 使用可能な言語
⋯ TS, JS, Python, Java, .NET, Go つまり • 開発者にとっては普段使っている言語でリソースを定義できるので学習コストが低い • プログラミング言語なので、IDEのコード補完や型チェックなどが使える • YAMLなどより短く書ける。ソースの可読性が高い • 抽象化されたライブラリを組み合わせることで、複雑な構成も構築可能
2. AWS CDKについて 11 ◼ AWS CDKを使うメリットは… • 手順書代わりになる。また、変更内容の手順書への反映漏れなどにより実環境と手順 書の内容が異なるといった人的なミスやブラックボックス化を防げる
• Gitなどでバージョン管理することが出来る • コード化することで同じ構成を使い回しすることができる • 一度作った構成を共有しやすいのでチームや会社の資産となる • 使用可能な言語 ⋯ TS, JS, Python, Java, .NET, Go • 開発者にとっては普段使っている言語でリソースを定義できるので学習コストが低い • プログラミング言語なので、IDEのコード補完や型チェックなどが使える • YAMLなどより短く書ける。ソースの可読性が高い • 抽象化されたライブラリを組み合わせることで、複雑な構成も構築可能 IaCのメリット AWS CDKの付加価値
2. AWS CDKについて 12 ◼ プロビジョニングまでの流れ 1. インフラ構成をプログラミング言語で定義 開発者が実行することはたった2つだけ 2.
デプロイコマンドの実行
2. AWS CDKについて 13 もう少し詳しく
2. AWS CDKについて 14 ◼ プロビジョニングまでの流れ https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AWS-CDK-Basic-1-Overview_0731_v1.pdf 1. インフラ構成をプログラミング言語で定義 コンストラクトライブラリ
TSで書かれた単一のコー ドベースを各言語にコンパ イルして提供されている
2. AWS CDKについて 15 ◼ プロビジョニングまでの流れ https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AWS-CDK-Basic-1-Overview_0731_v1.pdf 2. デプロイコマンドの実行 a.
AWS CDK CLIがAWS CloudFormationのテンプ レートを合成(Synthesize) し、テンプレートを実行 b. AWS CDK CLIがアセッ トをバンドル
2. AWS CDKについて 16 ◼ プロビジョニングまでの流れ https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AWS-CDK-Basic-1-Overview_0731_v1.pdf 2. デプロイコマンドの実行 a.
AWS CloudFormationが 各リソースのAPIを呼び出 し、テンプレートの状態に 収束するよう操作する b. CDK CLIがアセットをデ プロイ デプロイ完了
2. AWS CDKについて 17 ◼ プロビジョニングまでの流れ(おさらい) 1. インフラ構成をプログラミング言語で定義 開発者が実行することはたった2つだけ 2.
デプロイコマンドの実行
3. AWS CDKを書いてみる 18
3. AWS CDKを書いてみる 19 まずはコードの構成概念の理解から
3.AWS CDKを書いてみる 20 ◼ 構成概念 https://docs.aws.amazon.com/cdk/v2/guide/home.html Construct ・AWS CDKにおける 基本的なビルディングブロック
・AWS CloudFormationリソースと その設定を表すコンポーネント ・ユーザーにより定義・配布が可能 ・ConstructにはL1、L2、L3という レベル分けがある。 L1…AWS CloudFormationテンプレートをそのまま コード化したもの L2…適切な初期値が設定されたもの。リソースごとに 設定されているメソッドが利用可能になり、可読性が 上がる。一番よく使われる。 L3…よくあるパターンをより簡略化したもの
3.AWS CDKを書いてみる 21 ◼ 構成概念 https://docs.aws.amazon.com/cdk/v2/guide/home.html Stack ・AWS CloudFormationの スタックに該当
・デプロイ可能な最小単位 ・関連するリソースを1つの グループとして管理しやすくなる ・AWS CloudFormationで複数スタッ クのアプリを一括デプロイする場合、 依存関係を考慮し順番を shell script などで指定する必要があったが、 AWS CDKでは自動解決してくれる ・Stageを継承し複数のスタックを まとめることで環境の複製も可能
3.AWS CDKを書いてみる 22 ◼ 構成概念 https://docs.aws.amazon.com/cdk/v2/guide/home.html App ・アプリケーション全体 ・複数アカウント・リージョンを 跨ぐことができる
3. AWS CDKを書いてみる 23 次に開発環境の準備
3.AWS CDKを書いてみる 24 ◼ 準備 • AWS CDK CLIをインストール
3.AWS CDKを書いてみる 25 ◼ 準備 Pythonの場合、仮想環境をactivateしてAWS CDK関連のライブラリをpip installする。 • AWS
CDK プロジェクトの作成
3.AWS CDKを書いてみる 26 ◼ 準備 hello-cdk ├── .venv ├── hello_cdk
│ ├── __init__.py │ └── hello_cdk_stack.py ├── tests │ └── __init__.py │ └──unit │ ├── __init__.py │ └── hello_cdk_stack.py ├── .git ├── .gitignore ├── app.py ├── cdk.json ├── README.md ├── requirements-dev.txt ├── requirements.txt └── source.bat • AWS CDK プロジェクトの作成 hello-cdkディレクトリにプロジェクトが作成される スタックを定義するファイル スタッククラス内に1〜複数コンストラクトを定義 エントリーポイントとなるファイル appを作成し、appにスタックを追加する。
3.AWS CDKを書いてみる 27 ◼ 準備 アカウントidとregionは以下コマンドで調べられます(your-profile-nameの部分には各自環境 に合うものを指定) 実稼働環境では対象環境の取 り違えによるデプロイミスを 防ぐ意味でもハードコードを
勧める • app.pyにAWS CDKスタックがデプロイされる環境を指定する
3.AWS CDKを書いてみる 28 ◼ 準備 ここまでで準備は完了。 あとはスタックにConstructを定義したりアセットを準備するだけ! • 環境をbootstrapする
3. AWS CDKを書いてみる 29 いよいよコードを書いていきます!
3.AWS CDKを書いてみる 30 ◼ デモ • AWS LambdaでAmazon DynamoDBに格納されているユーザーデータを取得す る構成
• Stageでdev環境とprd環境を複製
3.AWS CDKを書いてみる 31 ◼ デモ • ディレクトリ構成 hello-cdk ├── .venv
├── backend │ ├──api │ │ ├── runtime │ │ │ └── lambda_handler.py │ │ ├── __init__.py │ │ └── api_stack.py │ ├── database │ │ ├── __init__.py │ │ └── database_stack.py │ └── component.py ├── app.py ├── cdk.json ├── README.md ├── requirements-dev.txt ├── requirements.txt └── source.bat コンポーネントの論理ユニットに基づいてプロジェクトディレ クトリ構造を整理することが推奨されている 今回はapiとdatabaseという論理ユニットでスタックを分離 環境の複製のために、Stageを継承したクラスにapi_stack.py、 database_stack.pyで定義したスタックのインスタンスを追加 実行するLambda関数のソースを配置
3.AWS CDKを書いてみる 32 ◼ デモ • /backend/api/api_stack.py AWS LambdaとAmazon API
Gatewayのリソースを定義
3.AWS CDKを書いてみる 33 ◼ デモ • /backend/database/database _stack.py Amazon DynamoDBのリソー
スを定義
3.AWS CDKを書いてみる 34 ◼ デモ • /backend/component.py Stageを継承したMyAppStage クラスに、DatabaseStackクラ ス・ApiStackクラスのインスタ
ンスを追加
3.AWS CDKを書いてみる 35 ◼ デモ • /app.py Stageを継承したMyAppStage クラスのインスタンスを作成。 この時、環境ごとに識別子と
envを割り当てる
3. AWS CDKを書いてみる 36 コードを書き終えたのであとはデプロイ
3.AWS CDKを書いてみる 37 ◼ デモ • デプロイコマンドの実行 cdk deploy …
全てのスタックをデプロイする cdk deploy “MyStackName” … 特定のスタックのみをデプロイする → cdk list で作成したスタックを一覧で確認することができる
3.AWS CDKを書いてみる 38 ◼ デモ • デプロイコマンドの実行 今回のデモではdev環境とprd環境を分けたので”cdk deploy “Dev/*”でデプロイします
この内容でデプロイするか聞かれるので、問題なければyesでデプロイへ進む
3.AWS CDKを書いてみる 39 ◼ デモ • プロビジョニング完了 デプロイが完了するとリソースが作成されます。Amazon DynamoDBに”testuser”という 項目を追加しLambda関数を実行すると、以下のように”testuser”を取得することができま
す。
4. まとめ 40
4.まとめ 41 • オブジェクト指向プログラミングの良いところをIaCに落とし込んだツール • シンプルでわかりやすくリソースを定義することができる • 環境の複製がかなり簡単にできる • デモでは実施しなかったですが、パラメータを指定してあげることで開発環境と本番環
境でAWS Lambdaの同時実行数やAmazon DynamoDBの課金モードを各々設定するこ とも出来る • AWS CDKすごいのに簡単で使いやすそう!と思っていただけたら嬉しいです
ご清聴いただきありがとうございました 42
More Decks by iret.kumoben
See All by iret.kumoben
第182回 雲勉 【Gemini 3.0 Pro】AI ベンチマーク徹底比較!他モデルに比べ優れている点まとめ
iret
0
150
第181回 雲勉 WEB制作者のちょっとした面倒をAWSで解決!Amazon S3とAWS Lambda活用術
iret
0
120
第180回 雲勉 Abuse report の調査・確認方法について
iret
0
150
第179回 雲勉 AI を活用したサポートデスク業務の改善
iret
0
190
第178回 雲勉 Amazon EKSをオンプレで! Amazon EKS Anywhere 実践構築ガイド
iret
1
160
第177回 雲勉 IdP 移行を楽に!Amazon Cognito でアプリへの影響をゼロにするアイデア
iret
0
160
第176回 雲勉 VPC 間サービス接続を考える!Private Service Connect 入門
iret
0
150
第175回 雲勉 Amazon ECS入門:コンテナ実行の基本を学ぶ
iret
0
240
第174回 雲勉 Google Agentspace × ADK Vertex AI Agent Engineにデプロイしたエージェントを呼び出す
iret
0
220
Other Decks in Technology
See All in Technology
Kiro 入門 (1 つのエージェントを、どの画面からでも) | 目指せ Kiro マスター 01
inariku
PRO
6
1.7k
AI時代の組織作り:チーム開発から「個人×AI」への移行と、持続可能な「開発資本」の築き方
ham0215
3
830
SSFの現在地 ― CAEP/RISCからAI Identityへ
oidfj
0
430
DBTS2026 盛り上がってますか!?Databricksが実現するAI時代のデータ基盤
akuwano
1
200
Kiro Crew 入門 (手を離しても進む仕事) | 目指せ Kiro マスター 11
inariku
PRO
4
720
高品質と高スピードを支える品質のシフトレフトのアプローチ
goyoki
2
640
Intro to Kiro (One agent, every surface) | Kiro: Zero to Hero 01
inariku
PRO
2
120
地域社会の実情からITエンジニアの社会貢献を考える
sms_tech
0
120
ゼロから作るWebアプリの新定番!?Amplify Gen 2 × AWS Blocksで実現する「開発速度とRDBの柔軟性のいいとこ取り」
amixedcolor
1
250
Reticulum, le réseau cypherpunk dont vous avez besoin !
rlifchitz
0
140
AIエージェントの監視、思考を見るか行動を見るか / Monitoring AI Agents: Thoughts or Actions
yusukeshimizu
2
190
狙われているAPIの脆弱性!今こそ手をつけるべき根本的な対策とは?
nagix
0
120
Featured
See All Featured
sira's awesome portfolio website redesign presentation
elsirapls
0
500
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
400
WENDY [Excerpt]
tessaabrams
15
40k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
470
Building Adaptive Systems
keathley
44
3.3k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Facilitating Awesome Meetings
lara
57
7.2k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
1k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.2k
The Cult of Friendly URLs
andyhume
79
7.1k