Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第158回 雲勉 AWS CDK 入門 ~ プログラミング言語で書くインフラ Python 編 ~
Search
iret.kumoben
March 27, 2025
Technology
0
120
第158回 雲勉 AWS CDK 入門 ~ プログラミング言語で書くインフラ Python 編 ~
下記、勉強会での資料です。
https://youtu.be/ONK1osWVtT0
iret.kumoben
March 27, 2025
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第176回 雲勉 VPC 間サービス接続を考える!Private Service Connect 入門
iret
0
22
第175回 雲勉 Amazon ECS入門:コンテナ実行の基本を学ぶ
iret
0
35
第174回 雲勉 Google Agentspace × ADK Vertex AI Agent Engineにデプロイしたエージェントを呼び出す
iret
0
44
第173回 雲勉 ノーコードで生成 AI アプリを構築!Google Cloud AI Applications(旧 Vertex AI Agent Builder)入門
iret
0
52
第170回 雲勉 Lyria が切り拓く音楽制作の未来
iret
1
33
第169回 雲勉 AWS WAF 構築 RTA
iret
0
38
第168回 雲勉 JITNAの使い方とハマったポイントについて語る回
iret
0
45
第167回 雲勉 エージェント開発を加速する Agent Development Kit 入門
iret
1
56
第166回 雲勉 コードを読んで理解する AWS Amplify Gen2 Backend
iret
0
48
Other Decks in Technology
See All in Technology
about #74462 go/token#FileSet
tomtwinkle
1
270
AIAgentの限界を超え、 現場を動かすWorkflowAgentの設計と実践
miyatakoji
0
110
PythonとLLMで挑む、 4コマ漫画の構造化データ化
esuji5
1
120
Pure Goで体験するWasmの未来
askua
1
170
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
11
77k
Tomorrow graphlib, Let us use everybody
hayaosuzuki
0
160
DataOpsNight#8_Terragruntを用いたスケーラブルなSnowflakeインフラ管理
roki18d
1
310
後進育成のしくじり〜任せるスキルとリーダーシップの両立〜
matsu0228
2
1.1k
履歴 on Rails: Bitemporal Data Modelで実現する履歴管理/history-on-rails-with-bitemporal-data-model
hypermkt
0
2k
OpenAI gpt-oss ファインチューニング入門
kmotohas
2
830
データエンジニアがこの先生きのこるには...?
10xinc
0
430
「AI駆動PO」を考えてみる - 作る速さから価値のスループットへ:検査・適応で未来を開発 / AI-driven product owner. scrummat2025
yosuke_nagai
0
440
Featured
See All Featured
Facilitating Awesome Meetings
lara
56
6.6k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
Bash Introduction
62gerente
615
210k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Producing Creativity
orderedlist
PRO
347
40k
Rails Girls Zürich Keynote
gr2m
95
14k
A Modern Web Designer's Workflow
chriscoyier
697
190k
The Straight Up "How To Draw Better" Workshop
denniskardys
237
140k
Automating Front-end Workflow
addyosmani
1371
200k
It's Worth the Effort
3n
187
28k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Transcript
第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