Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CDKでインフラとコードを 一緒にデプロイしてみよう

Avatar for regent0ro regent0ro
February 09, 2022

CDKでインフラとコードを 一緒にデプロイしてみよう

CDKで簡単なLambdaをデプロイした紹介です。

Avatar for regent0ro

regent0ro

February 09, 2022
Tweet

More Decks by regent0ro

Other Decks in Technology

Transcript

  1. AWS CDKとは • AWS Cloud Development Kit(AWS クラウド開発キット) • 慣れたプログラミング言語でAWSリソースを定義できるフレームワーク

    ◦ プログラミング言語の知識と表現力を使用できる → If文やfor文が使える! ◦ エディターの補完が効く! • AWSのベストプラクティスがデフォルト値であるため、コード記述量が少なくなる • CDKコードはCloudFormationのテンプレートに変換されて、AWS環境にデプロイされる
  2. 1.CDKプロジェクトを生成する $ mkdir CDKLambda && cd CDKLambda // CDKプロジェクトを生成 $

    cdk init --language python //仮想環境に入る $ . .venv/Scripts/activate //仮想環境に必要なモジュールをインストール $ pip install -r requirements.txt $ deactivate 仮想環境から抜けるときは Bashで実行
  3. 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
  4. 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
  5. 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)に入っている状態で実行します
  6. まとめ • AWS CDKを利用して、Lambdaのインフラ定義とコードをデプロイしました • AWS CDKでLambdaのコードを書くと、以下のメリットがある ◦ 本番環境により近い状態を表すことができる ◦

    インフラとアプリケーションチームのそれぞれの変更がより可視化できる ◦ インフラと同一のデプロイ方法で管理できる ◦ インフラとアプリケーションコードを同じ言語で書ける • AWS CDKはいいよ!いいよ!
  7. おまけ より便利に利用できる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