1
1

More than 3 years have passed since last update.

AWS CDKに触れてみる

Last updated at Posted at 2020-03-18

はじめに

CDKを使ってLambdaを作成してみるところまでを目標とします。

環境

今回はCloud9を使用します。

$ python --version
Python 3.6.10
$ cdk --version
1.27.0 (build a98c0b3)

CDKが入っていなければ以下のコマンドでインストールします。

$ npm install -g aws-cdk

やってみる

CDKを使う準備

まずCDKを使うために色々準備します

プロジェクトフォルダを作成

$ mkdir hogehoge
$ cd hogehoge

CDKの初期設定

初期設定をします

cdk init --language python
source .env/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

AWSユーザーデータの利用設定も行う

$ cdk bootstrap
   Bootstrapping environment aws://999.../ap-northeast-1...
   Environment aws://999.../ap-northeast-1 bootstrapped (no changes).

これで準備完了です

CDKを使ってみる

Lambdaを作成していきます

pythonファイルの準備

Lambdaで使用するpythonファイルを準備します

$ mkdir lambda
$ touch lambda/index.py

内容はあまり気にしないので適当に

index.py
import json

def handler(event, context):
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

スタックを作成

最初に作成したhogehogeディレクトリ下にhogehoge/hogehoge_stack.pyがあるので、ここにリソースを作成するためのコーディングをしていく。
公式が丁寧でわかりやすい。

hogehoge_stack.py
import aws_cdk.core as core
import aws_cdk.aws_lambda as aws_lambda

class HogehogeStack(core.Stack):

    def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
        super().__init__(scope, id, **kwargs)

        lambda_func = aws_lambda.Function(
            self, 'lambda_func1',
            function_name = "lambda_func1",
            runtime = aws_lambda.Runtime.PYTHON_3_8,
            code = aws_lambda.Code.asset('lambda'),
            handler = 'index.handler'
        )
$ echo "aws-cdk.aws-lambda" >> requirements.txt
$ pip install -r requirements.txt

AWSリソースの作成

$ cdk diff
$ cdk deploy

作成完了!
image.png

$ cdk destroy

消えた!
image.png

後処理

pushするならしちゃいましょう

$ git add .
$ git remote add origin [作成済みのリポジトリを使用]
$ git push -u origin master

まとめ

色々設定しなきゃいけないのかな、と思っていましたが結構簡単に作れちゃうのがいいですね。
他の環境作成ができるサービスとの住み分けはどんな感じなんでしょうかねー

補足

複数のstackを作成するにはapp.pyを編集する必要があります

app.py
HogehogeStack(app, "stack_hogehoge")
FugafugaStack(app, "stack_fugafuga") # こんな感じ

複数のstackを作成した場合にはcdk deployだと怒られるので以下のように書く

$ cdk list
stack_hogehoge stack_fugafuga
$ cdk deploy stack_*
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1