やりたいこと
Reactを使ってAWS lambdaを実行したい。
開発環境はReact 18.12.0
、 Typescript4.9.5
実現方法
aws-sdkを用いて実装を行う。
aws-sdkはnpm install aws-sdk
でインストールする。
client-lambdaをnpm install @aws-sdk/client-lambda
でインストールする。
LambdaClientにregion
とcredentials
を設定する。
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
今回の内容が参考になったら幸いです。