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
CDKでインフラとコードを 一緒にデプロイしてみよう
Search
regent0ro
February 09, 2022
Technology
0
770
CDKでインフラとコードを 一緒にデプロイしてみよう
CDKで簡単なLambdaをデプロイした紹介です。
regent0ro
February 09, 2022
Tweet
Share
More Decks by regent0ro
See All by regent0ro
くだらないけど、いつか役にたつかもAWS雑学QUIZ
regent0ro
0
4
Other Decks in Technology
See All in Technology
「Linux」という言葉が指すもの
sat
PRO
4
140
ブロックテーマ時代における、テーマの CSS について考える Toro_Unit / 2025.09.13 @ Shinshu WordPress Meetup
torounit
0
130
メルカリIBISの紹介
0gm
0
220
新規プロダクトでプロトタイプから正式リリースまでNext.jsで開発したリアル
kawanoriku0
1
220
新アイテムをどう使っていくか?みんなであーだこーだ言ってみよう / 20250911-rpi-jam-tokyo
akkiesoft
0
350
5分でカオスエンジニアリングを分かった気になろう
pandayumi
0
260
slog.Handlerのよくある実装ミス
sakiengineer
4
470
未経験者・初心者に贈る!40分でわかるAndroidアプリ開発の今と大事なポイント
operando
6
750
roppongirb_20250911
igaiga
1
250
組織を巻き込む大規模プラットフォーム移行戦略 〜50+サービスのマルチリージョン・マルチプロダクト化で学んだステークホルダー協働の実践〜 / Platform migration strategy engaging all stakeholders
toshi0607
2
140
テストを軸にした生き残り術
kworkdev
PRO
0
220
EncryptedSharedPreferences が deprecated になっちゃった!どうしよう! / Oh no! EncryptedSharedPreferences has been deprecated! What should I do?
yanzm
0
490
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
74
5k
Become a Pro
speakerdeck
PRO
29
5.5k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.1k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Speed Design
sergeychernyshev
32
1.1k
Making the Leap to Tech Lead
cromwellryan
135
9.5k
It's Worth the Effort
3n
187
28k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
How GitHub (no longer) Works
holman
315
140k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Docker and Python
trallard
46
3.6k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
113
20k
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
ご清聴ありがとうございました!