LoginSignup
2
1

More than 1 year has passed since last update.

Pulumiのマジック関数でLambdaを構成する

Last updated at Posted at 2021-10-09

Pulumiはプログラマーにとって慣れ親しんだ言語でインフラを構成できるモダンなIaCツールです。

小規模なプロジェクトで1人で何役もやっている人にとっては生産性が高いかもしれません。

イケてると思ったポイントや、ググってもサクッと分からなかった様な話を記事にしていきます。

前提条件

  • Pulumi及びAWSの設定が完了している

マジック関数 (Lambda Magic Fucntion)

簡単な処理を記載するのであれば、このようにインラインのコードとして含めることで、コード量も少なく、手間が省けますね。以下はTypeScriptでの例です。S3のオブジェクト作成をトリガーとしたLambda関数の記述例です。

import * as aws from "@pulumi/aws";

// バケット作成
const docsBucket = new aws.s3.Bucket("docs");

// Lambdaのハンドラー関数をS3のバケットのonObjectCreateをトリガーとして紐付ける
docsBucket.onObjectCreated("docsHandler", new aws.lambda.CallbackFunction("docsHandler", {
    // ここにプロパティを書く
    memorySize: 256 /*MB*/,
    callback: (event: any, context: aws.lambda.Context) => {
        // ここにハンドラーを書く
        console.log('hello world');
    },
});

ハンドラーのコードを別ファイルとしてモジュール化したい場合

import * as aws from "@pulumi/aws";

import myHandler from "./myHandler";

// バケット作成
const docsBucket = new aws.s3.Bucket("docs");

// Lambdaのハンドラー関数をS3のバケットのonObjectCreateをトリガーとして紐付ける
docsBucket.onObjectCreated("docsHandler", new aws.lambda.CallbackFunction("docsHandlerFunc", {
    memorySize: 256 /*MB*/,
    callback: (event: any, context: aws.lambda.Context) => {
        // 呼び出し
        myHandler(event, context);
    },
});

myHandler.ts

import * as aws from "@pulumi/aws";

// ハンドラー
export function myHandler(
  event: any,
  context: aws.lambda.Context
) {
  // 処理内容
  console.log("hello");
}
export default myHandler;

参考

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