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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
regent0ro
February 09, 2022
Technology
0
810
CDKでインフラとコードを 一緒にデプロイしてみよう
CDKで簡単なLambdaをデプロイした紹介です。
regent0ro
February 09, 2022
Tweet
Share
More Decks by regent0ro
See All by regent0ro
AWS Lambda durable functions
regent0ro
0
79
くだらないけど、いつか役にたつかもAWS雑学QUIZ
regent0ro
0
7
Other Decks in Technology
See All in Technology
JAWS Days 2026 楽しく学ぼう! 認証認可 入門/20260307-jaws-days-novice-lane-auth
opelab
10
1.7k
S3はフラットである –AWS公式SDKにも存在した、 署名付きURLにおけるパストラバーサル脆弱性– / JAWS DAYS 2026
flatt_security
0
1.6k
AWSをCLIで理解したい! / I want to understand AWS using the CLI
mel_27
2
270
技術的負債の泥沼から組織を救う3つの転換点
nwiizo
8
3.2k
[JAWSDAYS2026]Who is responsible for IAM
mizukibbb
0
270
メタデータ同期に潜んでいた問題 〜 Cache Stampede 時の Cycle Wait を⾒つけた話
lycorptech_jp
PRO
0
150
SRE NEXT 2026 CfP レビュアーが語る聞きたくなるプロポーザルとは?
yutakawasaki0911
0
160
OCI技術資料 : コンピュート・サービス 概要
ocise
4
54k
開発組織の課題解決を加速するための権限委譲 -する側、される側としての向き合い方-
daitasu
5
370
ブラックボックス観測に基づくAI支援のプロトコルのリバースエンジニアリングと再現~AIを用いたリバースエンジニアリング~ @ SECCON 14 電脳会議 / Reverse Engineering and Reproduction of an AI-Assisted Protocol Based on Black-Box Observation @ SECCON 14 DENNO-KAIGI
chibiegg
0
160
DX Improvement at Scale
ntk1000
3
440
Evolution of Claude Code & How to use features
oikon48
1
560
Featured
See All Featured
Discover your Explorer Soul
emna__ayadi
2
1.1k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
150
Skip the Path - Find Your Career Trail
mkilby
1
74
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
73
Measuring & Analyzing Core Web Vitals
bluesmoon
9
780
Accessibility Awareness
sabderemane
0
74
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
440
Joys of Absence: A Defence of Solitary Play
codingconduct
1
300
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
Color Theory Basics | Prateek | Gurzu
gurzu
0
240
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
ご清聴ありがとうございました!