LoginSignup
0
1

More than 1 year has passed since last update.

cdkでtypescriptのlambdaをデプロイしてみた

Posted at

AWS lambda

サービスの概要

  • サーバレスでイベント駆動型のコンピューティングサービス
  • サーバーの管理をする必要がない
  • 従量課金

料金

まずは利用料金の確認です。
コード実行時間(1ミリ秒単位)で課金されます。
料金は関数に割り当てたメモリ量によって異なります。
メモリ量を増やすとCPUパワーも増加し、結果として処理時間が短くなるので料金が安くなる場合もあります。
割り当てるメモリ量はチューニングが必要となりますね。

詳細な料金は更新ページを参照。

無料枠

100万件/月リクエストの無料枠があります。また、40万GB-sのコンピューティングタイムが含まれます。
少しさわってみるのには十分すぎますね。

他のリージョンにデータを転送したり、S3と連携させると別途費用がかかるようです。微々たるものですが。

まずはリソースを作ってみよう

無料枠の確認ができたところで、簡単な関数を作ってみます。

ディレクトリの構成はこんな感じです。
.
├── cdk
└── lambda

lambda関数作成

まずは簡単なlambda関数を作成します。
lambdaの型情報をインストールします。
lambdaフォルダで下記のコマンドを実行します。

npm i @types/aws-lambda -D

次にlambda関数を作成します。

import { Handler } from 'aws-lambda'

export const handler: Handler = async () => {
    console.log('Hello World')
}

CDK作成

まずはCDKの雛形を作成するために、空のCDKフォルダで下記のコマンドを実行します。

cdk init --language=typescript

NodejsFunctionというコンストラクタを利用するので、下記のライブラリをインストールします。
FunctionコンストラクタのTypeScriptに特化したバージョンです。
これを使うことでlambda関数を明示的にコンパイルしなくてよくなります。

npm i @aws-cdk/aws-lambda-nodejs -D

雛形で生成されるlib/cdk-stack.tsを下記のように書き換えました。

import { Stack, StackProps, aws_lambda_nodejs as lambda } from 'aws-cdk-lib';
import { Construct } from 'constructs';

export class CdkStack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);

    new lambda.NodejsFunction(this, 'helloWorld', {
      entry: 'lambda/index.ts',
    });
  }
}

cdkを初めて使う場合はcdk bootstrapを実行する。
デプロイコマンドを実行する。
npm run cdk -- deploy

動作確認

aws toolkitからlambda関数をinvokeしてみます。
Hello world ってログが出力されてますね。

スクリーンショット 2022-06-17 21.26.36.png

参考サイト

0
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
0
1