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
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
CDKでインフラとコードを 一緒にデプロイしてみよう
Search
regent0ro
February 09, 2022
Technology
840
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CDKでインフラとコードを 一緒にデプロイしてみよう
CDKで簡単なLambdaをデプロイした紹介です。
regent0ro
February 09, 2022
More Decks by regent0ro
See All by regent0ro
AWS Lambda durable functions
regent0ro
0
130
くだらないけど、いつか役にたつかもAWS雑学QUIZ
regent0ro
0
14
Other Decks in Technology
See All in Technology
「図書館」という名前のままでいいのか -Code4Lib JAPANカンファレンス2026 アンカンファレンス報告- / Code4Lib JAPAN Conference 2026: Unconference Report
ykiyota
0
120
GoにおけるFFIのこれまでとこれから
goccy
4
1.4k
20260912_スクラムにジェネラリストは必要か
ryugen04
0
110
生成AIのテナント制御とシャドーMCP対策 | AIを"止めずに"、情報を守る
yukun
0
140
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
120
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
0
290
AI時代におけるプロダクト横断勉強会の設計
zozotech
PRO
0
170
The Agent Builder Loop from Daily Work to OSS
minorun365
PRO
3
110
Redmine 7.0で私が開発した新機能の狙いと背景
vividtone
1
130
アリアドネの糸と、20年ごとの建て替え ── 長尾真『電子図書館』を、伊勢で読み直す / Rereading Makoto Nagao’s "Electronic Library" in Ise
ykiyota
0
120
多層防御と最⼩権限で実現する、安全なAIエージェント設計パターン
lycorptech_jp
PRO
1
230
全員がプロダクトへ向き合う組織を持続成長させるために——組織づくりのフライホイールと4象限 / The Flywheel Model and Four Quadrants for Organizational Design
hiro_torii
4
930
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
The untapped power of vector embeddings
frankvandijk
2
1.9k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
WCS-LA-2024
lcolladotor
0
820
Optimizing for Happiness
mojombo
378
71k
How STYLIGHT went responsive
nonsquared
100
6.3k
Navigating Team Friction
lara
192
16k
Test your architecture with Archunit
thirion
2
2.4k
How GitHub (no longer) Works
holman
316
150k
Music & Morning Musume
bryan
47
7.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
230
Transcript
CDKでインフラとコードを 一緒にデプロイしてみよう CDKでLambdaをデプロイしてみた JAWS-UG 初心者支部#44 AWS Builders Online Series recap2
自己紹介 • 某企業の5年目AWSインフラエンジニア • AWS歴:4年(IaCやCI/CD周りを触っています) • 好きなAWSサービス:AWS CDK • JAWSのLT初参加・初心者です!
姜 禮林 かん いぇりむ @cot_piyo https://regent0ro.blogspot.com/
CDKでLambdaをデプロイしてみた
AWS CDKとは • AWS Cloud Development Kit(AWS クラウド開発キット) • 慣れたプログラミング言語でAWSリソースを定義できるフレームワーク
◦ プログラミング言語の知識と表現力を使用できる → If文やfor文が使える! ◦ エディターの補完が効く! • AWSのベストプラクティスがデフォルト値であるため、コード記述量が少なくなる • CDKコードはCloudFormationのテンプレートに変換されて、AWS環境にデプロイされる
CDKで Lambdaをデプロイしてみた
AWS Lambdaとは • サーバーレスでプログラムを実行できるサービス • インフラのプロビジョニング、管理が不要 ◦ 高い可用性(メンテナンス時間やダウンタイムなし) • リクエスト数に応じて自動スケールする
• リクエスト数&実行時間で課金
CDKでLambdaをデプロイしてみた
4Stepでデプロイ 1. CDKプロジェクトを生成する 2. LambdaをStackに定義する 3. Lambdaのコードを書く 4. Let's デプロイ!
CDKバージョン:2.10.0 利用言語:Python
1.CDKプロジェクトを生成する $ mkdir CDKLambda && cd CDKLambda // CDKプロジェクトを生成 $
cdk init --language python //仮想環境に入る $ . .venv/Scripts/activate //仮想環境に必要なモジュールをインストール $ pip install -r requirements.txt $ deactivate 仮想環境から抜けるときは Bashで実行
2.LambdaをStackに定義する from aws_cdk import ( Stack, aws_lambda as cdk_lambda )
from constructs import Construct class CdkLambdaStack(Stack): def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: super().__init__(scope, construct_id, **kwargs) cdk_lambda.Function(self, "simple_lambda", runtime=cdk_lambda.Runtime.PYTHON_3_9, //Lambdaのランタイム //コードがある場所。S3バケットの指定やインラインで書くことも可能 code=cdk_lambda.Code.from_asset("resources"), handler="simple_lambda.lambda_handler" //ハンドラーを指定 ) cdk_lambda_stack.py
3.Lambdaのコードを書く import json def lambda_handler(event, context): print("Welcome beginner!!") return {
'statusCode': 200, 'body': json.dumps('Hello from Lambda!') } resources\simple_lambda.py
4.Let's デプロイ! // 作成されるスタックを確認 $ cdk ls // AWS CDKのコードからCloudformationのテンプレートを生成(cdk.outフォルダーの中に生成)
$ cdk synth // AWS環境でAWS CDKを利用するための初期構築を実施(AWS CDKを環境で初めて利用する時に必要) // ここで生成されたS3バケットにCloudformationテンプレートやLambdaのコードがアップロードされる $ cdk bootstrap $ cdk deploy 仮想環境(venv)に入っている状態で実行します
マネジメントコンソールで確認してみる Cloudformation
コードで定義してないが、Lambdaに必要なIAMロールが自動生成されている CDKの改善に利用される
Lambda
CDKでLambdaをデプロイできました!
AWS CDKでLambdaのコードをデプロイする時のいいところ • 本番環境により近い状態を表すことができる ◦ AWS環境のすべではここにある! • インフラとアプリケーションチームのそれぞれの変更がより可視化できる • インフラと同一のデプロイ方法で管理できる
• インフラとアプリケーションコードを同じ言語で書ける https://aws.amazon.com/jp/blogs/news/lambda-managed-by-cdk/ 参考
まとめ • AWS CDKを利用して、Lambdaのインフラ定義とコードをデプロイしました • AWS CDKでLambdaのコードを書くと、以下のメリットがある ◦ 本番環境により近い状態を表すことができる ◦
インフラとアプリケーションチームのそれぞれの変更がより可視化できる ◦ インフラと同一のデプロイ方法で管理できる ◦ インフラとアプリケーションコードを同じ言語で書ける • AWS CDKはいいよ!いいよ!
おまけ より便利に利用できるLambda関連ライブラリもあります • aws-lambda-nodejs • aws-lambda-go(Experimental) • aws-lambda-python(Experimental) • aws-lambda-event-source
• aws-lambda-destinations 関連するAWS Builders Online Seriesのセッション Track 2 「コードを使ったAWS運用のはじめかた」 AWS CDKのレファレンス:https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html
ご清聴ありがとうございました!