初心者SEのつぶやき

初心者SEのつぶやき

Reactを使ってAWS lambdaを実行する方法

やりたいこと

Reactを使ってAWS lambdaを実行したい。
開発環境はReact 18.12.0、 Typescript4.9.5

実現方法

aws-sdkを用いて実装を行う。 aws-sdknpm install aws-sdkでインストールする。
client-lambdaをnpm install @aws-sdk/client-lambdaでインストールする。

LambdaClientにregioncredentialsを設定する。

lambdaパラメータにFunctionName,Payloadを指定する。 (今回の実行に必要な分だけ指定している。)

上記内容を基にlambda実行リクエスト処理を実装した。(環境変数は別途指定) 作成したのはファイル名と拡張子をリクエストとして飛ばす処理である。

lambda実行リクエスト処理

// lambda関係をimort
import { LambdaClient, InvokeCommand } from "@aws-sdk/client-lambda";
// LambdaClientの設定
const lambda = new LambdaClient({
  region: AWS_REGION, 
  credentials: {
    accessKeyId: AWS_KEY,
    secretAccessKey: AWS_SEACRET_KEY
  },
});


export const lambdaExe = async (fileName:string ,extention: string): Promise<boolean> => {
  // パラメータ指定(PayloadはJSON形式)
  const lambdaParams = {
    FunctionName: AWS_FUNCTION,
    Payload: JSON.stringify({"extention":extention, "fileName":fileName})
    
  };
  try {
    // invokeコマンドのインスタンス生成
    const lambdaCommand = new InvokeCommand(lambdaParams);
    // コマンド実行
    const lambdaResponse = await lambda.send(lambdaCommand);
    console.log("Lambda response:", lambdaResponse);
    // 今回は簡易的に200が返却された時Trueをreturnしている。
    return lambdaResponse.StatusCode === 200;
  } catch (error) {
    console.error("Error:", error);
    return false;
  }
}

lambda側の実装(Pythonで記載)

import json

def lambda_handler(event, context):
      return {
        'statusCode':200
      }

感想

lambdaは結構ドキュメントが豊富で親切なイメージだった。
(英語に抵抗感なければ)
下記を参考にして作成した。 docs.aws.amazon.com

今回の内容が参考になったら幸いです。