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 ってログが出力されてますね。
参考サイト