diff --git a/apps/sim/app/api/tools/aws-lambda/deploy/route.ts b/apps/sim/app/api/tools/aws-lambda/deploy/route.ts index 7f039bbe62..97309d6a04 100644 --- a/apps/sim/app/api/tools/aws-lambda/deploy/route.ts +++ b/apps/sim/app/api/tools/aws-lambda/deploy/route.ts @@ -20,11 +20,13 @@ const DeployRequestSchema = z.object({ region: z.string().min(1, 'AWS Region is required'), functionName: z.string().min(1, 'Function name is required'), handler: z.string().optional(), - runtime: z.string().min(1, 'Runtime is required'), - code: z.record(z.string()).refine((val) => Object.keys(val).length > 0, 'At least one code file is required'), + runtime: z.string().min(1, 'Runtime is required').optional().default('nodejs18.x'), + code: z + .record(z.string()) + .refine((val) => Object.keys(val).length > 0, 'At least one code file is required'), requirements: z.string().nullable().optional(), packageJson: z.string().nullable().optional(), - timeout: z.number().min(1).max(900), + timeout: z.number().min(1).max(900).optional().default(3), memorySize: z.number().min(128).max(10240), environmentVariables: z.record(z.string()).default({}), tags: z.record(z.string()).default({}), @@ -108,8 +110,6 @@ async function createLambdaFunction( params: DeployRequest, zipBuffer: Buffer ): Promise { - - const createParams = { FunctionName: params.functionName, Runtime: params.runtime as Runtime, @@ -190,26 +190,26 @@ export async function POST(request: NextRequest) { return createErrorResponse('Invalid JSON in request body', 400, 'INVALID_JSON') } - logger.info(`[${requestId}] Request body received:`, { + logger.info(`[${requestId}] Request body received:`, { body, codeType: typeof body.code, - codeValue: body.code + codeValue: body.code, }) - + // Parse the code field if it's a JSON string if (typeof body.code === 'string') { try { body.code = JSON.parse(body.code) logger.info(`[${requestId}] Parsed code field:`, { parsedCode: body.code }) } catch (parseError) { - logger.error(`[${requestId}] Failed to parse code field as JSON`, { + logger.error(`[${requestId}] Failed to parse code field as JSON`, { error: parseError instanceof Error ? parseError.message : String(parseError), - codeString: body.code + codeString: body.code, }) return createErrorResponse('Invalid JSON in code field', 400, 'INVALID_CODE_JSON') } } - + const validationResult = DeployRequestSchema.safeParse(body) if (!validationResult.success) { logger.warn(`[${requestId}] Invalid request body`, { errors: validationResult.error.errors }) @@ -217,11 +217,11 @@ export async function POST(request: NextRequest) { } const params = validationResult.data - logger.info(`[${requestId}] Validation successful, params:`, { + logger.info(`[${requestId}] Validation successful, params:`, { functionName: params.functionName, runtime: params.runtime, codeKeys: Object.keys(params.code), - hasRole: !!params.role + hasRole: !!params.role, }) // Create Lambda client diff --git a/apps/sim/blocks/blocks/aws_lambda.ts b/apps/sim/blocks/blocks/aws_lambda.ts index b92cbfb300..62d75d8c29 100644 --- a/apps/sim/blocks/blocks/aws_lambda.ts +++ b/apps/sim/blocks/blocks/aws_lambda.ts @@ -165,7 +165,8 @@ export const AWSLambdaBlock: BlockConfig = { type: 'code', layout: 'full', language: 'json', - placeholder: '{\n "index.js": "exports.handler = async (event) => {\\n return {\\n statusCode: 200,\\n body: JSON.stringify({\\n message: \\"Hello from Lambda!\\"\\n })\\n };\\n };"\n}', + placeholder: + '{\n "index.js": "exports.handler = async (event) => {\\n return {\\n statusCode: 200,\\n body: JSON.stringify({\\n message: \\"Hello from Lambda!\\"\\n })\\n };\\n };"\n}', condition: { field: 'operationType', value: ['create/update'], diff --git a/apps/sim/tools/aws_lambda/deploy.ts b/apps/sim/tools/aws_lambda/deploy.ts index b5f6f6a06c..75bdae4664 100644 --- a/apps/sim/tools/aws_lambda/deploy.ts +++ b/apps/sim/tools/aws_lambda/deploy.ts @@ -81,7 +81,8 @@ export const awsLambdaDeployTool: ToolConfig