From a45dcffe4b02d2d0421494366be74ea12b365a2b Mon Sep 17 00:00:00 2001 From: Maxime David Date: Wed, 28 May 2025 09:37:06 +0100 Subject: [PATCH 1/5] fix: remove snapstart from benchmark --- .github/workflows/aws-deploy.yml | 1 - .gitignore | 3 - Cargo.lock | 81 ++++++++++++------- README.md | 5 +- cdk/bin/cdk.ts | 3 +- cdk/lib/lambda-perf-stack.ts | 33 -------- cdk/lib/role.ts | 1 - ...fest.test.snapstart.and.not.snapstart.json | 20 ----- common_lib/manifest.test.snapstart.json | 13 --- common_lib/src/lambda_manager.rs | 33 +------- common_lib/src/manifest.rs | 23 ------ common_lib/src/report_log.rs | 16 ---- common_lib/src/runtime.rs | 59 +------------- common_lib/src/sqs_manager.rs | 67 +-------------- function-invoker-rs/src/main.rs | 33 +------- function-trigger-deployer-rs/src/main.rs | 8 -- .../runtimes/java11_snapstart/Dockerfile | 14 ---- .../runtimes/java11_snapstart/build.gradle | 16 ---- .../runtimes/java11_snapstart/build.sh | 8 -- .../main/java/io/github/maxday/Handler.java | 18 ----- .../runtimes/java17_snapstart/Dockerfile | 14 ---- .../runtimes/java17_snapstart/build.gradle | 16 ---- .../runtimes/java17_snapstart/build.sh | 8 -- .../main/java/io/github/maxday/Handler.java | 18 ----- .../runtimes/java21_snapstart/Dockerfile | 16 ---- .../runtimes/java21_snapstart/build.gradle | 23 ------ .../runtimes/java21_snapstart/build.sh | 8 -- .../main/java/io/github/maxday/Handler.java | 41 ---------- 28 files changed, 63 insertions(+), 536 deletions(-) delete mode 100644 common_lib/manifest.test.snapstart.and.not.snapstart.json delete mode 100644 common_lib/manifest.test.snapstart.json delete mode 100644 s3-uploader/runtimes/java11_snapstart/Dockerfile delete mode 100644 s3-uploader/runtimes/java11_snapstart/build.gradle delete mode 100755 s3-uploader/runtimes/java11_snapstart/build.sh delete mode 100644 s3-uploader/runtimes/java11_snapstart/src/main/java/io/github/maxday/Handler.java delete mode 100644 s3-uploader/runtimes/java17_snapstart/Dockerfile delete mode 100644 s3-uploader/runtimes/java17_snapstart/build.gradle delete mode 100755 s3-uploader/runtimes/java17_snapstart/build.sh delete mode 100644 s3-uploader/runtimes/java17_snapstart/src/main/java/io/github/maxday/Handler.java delete mode 100644 s3-uploader/runtimes/java21_snapstart/Dockerfile delete mode 100644 s3-uploader/runtimes/java21_snapstart/build.gradle delete mode 100755 s3-uploader/runtimes/java21_snapstart/build.sh delete mode 100644 s3-uploader/runtimes/java21_snapstart/src/main/java/io/github/maxday/Handler.java diff --git a/.github/workflows/aws-deploy.yml b/.github/workflows/aws-deploy.yml index 8516f68685..9a006ac4c1 100644 --- a/.github/workflows/aws-deploy.yml +++ b/.github/workflows/aws-deploy.yml @@ -60,7 +60,6 @@ jobs: env: AWS_REGION: ${{ inputs.environment == 'DEV' && secrets.AWS_DEV_REGION || inputs.environment == 'PROD' && secrets.AWS_PROD_REGION }} LAMBDA_PERF_ENV: ${{ inputs.environment == 'PROD' && 'production' || 'dev' }} - SKIP_SNAPSTART: ${{ (inputs.environment == 'DEV') && secrets.SKIP_SNAPSTART_DEV || 'false' }} GITHUB_AUTH_TOKEN: ${{ inputs.environment == 'PROD' && secrets.GH_AUTH_TOKEN || 'no-token-needed' }} AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }} run: cd cdk && yarn install && cdk bootstrap && cdk deploy LambdaPerfStack --require-approval never \ No newline at end of file diff --git a/.gitignore b/.gitignore index 74b1a4d07d..a98df8e832 100644 --- a/.gitignore +++ b/.gitignore @@ -9,9 +9,6 @@ s3-uploader/runtimes/dotnet*/src/obj s3-uploader/runtimes/java21/.gradle s3-uploader/runtimes/java21/build s3-uploader/runtimes/java21/bin -s3-uploader/runtimes/java21_snapstart/.gradle -s3-uploader/runtimes/java21_snapstart/build -s3-uploader/runtimes/java21_snapstart/bin s3-uploader/runtimes/java11/.gradle s3-uploader/runtimes/java11/bin s3-uploader/runtimes/java8/.gradle diff --git a/Cargo.lock b/Cargo.lock index b7ed737740..997ccbaf3a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -558,9 +558,9 @@ dependencies = [ [[package]] name = "bollard" -version = "0.17.1" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d41711ad46fda47cd701f6908e59d1bd6b9a2b7464c0d0aeab95c6d37096ff8a" +checksum = "97ccca1260af6a459d75994ad5acc1651bcabcbdbc41467cc9786519ab854c30" dependencies = [ "base64 0.22.1", "bollard-stubs", @@ -579,7 +579,7 @@ dependencies = [ "log", "pin-project-lite", "rustls 0.23.10", - "rustls-native-certs 0.7.1", + "rustls-native-certs 0.8.1", "rustls-pemfile 2.1.2", "rustls-pki-types", "serde", @@ -597,9 +597,9 @@ dependencies = [ [[package]] name = "bollard-stubs" -version = "1.45.0-rc.26.0.1" +version = "1.47.1-rc.27.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d7c5415e3a6bc6d3e99eff6268e488fd4ee25e7b28c10f08fa6760bd9de16e4" +checksum = "3f179cfbddb6e77a5472703d4b30436bff32929c0aa8a9008ecf23d1d3cdd0da" dependencies = [ "serde", "serde_repr", @@ -692,11 +692,21 @@ dependencies = [ "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" @@ -828,13 +838,13 @@ dependencies = [ [[package]] name = "etcetera" -version = "0.8.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" +checksum = "26c7b13d0780cb82722fd59f6f57f925e143427e4a75313a6c77243bf5326ae6" dependencies = [ "cfg-if", "home", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -2053,20 +2063,19 @@ dependencies = [ "openssl-probe", "rustls-pemfile 1.0.4", "schannel", - "security-framework", + "security-framework 2.9.2", ] [[package]] name = "rustls-native-certs" -version = "0.7.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a88d6d420651b496bdd98684116959239430022a115c1240e6c3993be0b15fba" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" dependencies = [ "openssl-probe", - "rustls-pemfile 2.1.2", "rustls-pki-types", "schannel", - "security-framework", + "security-framework 3.2.0", ] [[package]] @@ -2090,9 +2099,12 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.7.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "zeroize", +] [[package]] name = "rustls-webpki" @@ -2153,7 +2165,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" dependencies = [ "bitflags 1.3.2", - "core-foundation", + "core-foundation 0.9.3", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" +dependencies = [ + "bitflags 2.6.0", + "core-foundation 0.10.1", "core-foundation-sys", "libc", "security-framework-sys", @@ -2161,9 +2186,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.9.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -2392,9 +2417,9 @@ checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "syn" -version = "2.0.68" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -2414,9 +2439,9 @@ dependencies = [ [[package]] name = "testcontainers" -version = "0.23.1" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f40cc2bd72e17f328faf8ca7687fe337e61bccd8acf9674fa78dd3792b045e1" +checksum = "23bb7577dca13ad86a78e8271ef5d322f37229ec83b8d98da6d996c588a1ddb1" dependencies = [ "async-trait", "bollard", @@ -2443,18 +2468,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.61" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", diff --git a/README.md b/README.md index d6f09eb40d..2d85ee44c0 100644 --- a/README.md +++ b/README.md @@ -33,11 +33,8 @@ An ultra simple hello-world function has been written in each AWS supported runt - `dotnet6` - `dotnet8` - `java11` -- `java11 + snapstart` - `java17` -- `java17 + snapstart` - `java21` -- `java21 + snapstart` - `ruby3.2` - `ruby3.3` - `ruby3.4` @@ -63,6 +60,8 @@ in addition to the following custom runtimes: Each of this function is packaged in a zip file, uploaded to a S3 bucket. +Note that the SnapStart feature is no longer benchmarked, as using it with a simple hello-world application may not represent a meaningful use case. + ### Step 2 Every day, each function is freshly grabbed from S3, deployed and invoked 10 times as cold starts. diff --git a/cdk/bin/cdk.ts b/cdk/bin/cdk.ts index 603ac27d4b..83f3f17f15 100644 --- a/cdk/bin/cdk.ts +++ b/cdk/bin/cdk.ts @@ -1,7 +1,7 @@ import * as cdk from 'aws-cdk-lib'; import { LambdaPerfStack } from '../lib/lambda-perf-stack'; -const requiredEnvVars = ['AWS_ACCOUNT_ID', 'AWS_REGION', 'SKIP_SNAPSTART', 'GITHUB_AUTH_TOKEN', 'LAMBDA_PERF_ENV']; +const requiredEnvVars = ['AWS_ACCOUNT_ID', 'AWS_REGION', 'GITHUB_AUTH_TOKEN', 'LAMBDA_PERF_ENV']; const missingEnvVars = requiredEnvVars.filter(envVar => !process.env[envVar]); if (missingEnvVars.length > 0) { throw new Error(`Missing required environment variables: ${missingEnvVars.join(', ')}`); @@ -10,7 +10,6 @@ if (missingEnvVars.length > 0) { const app = new cdk.App(); new LambdaPerfStack(app, 'LambdaPerfStack', { env: { account: process.env.AWS_ACCOUNT_ID, region: process.env.AWS_REGION }, - skipSnapstart: process.env.SKIP_SNAPSTART!!, githubAuthToken: process.env.GITHUB_AUTH_TOKEN!!, lambdaPerfEnv: process.env.LAMBDA_PERF_ENV!!, }); \ No newline at end of file diff --git a/cdk/lib/lambda-perf-stack.ts b/cdk/lib/lambda-perf-stack.ts index 6ace3527a9..ff81e4701e 100644 --- a/cdk/lib/lambda-perf-stack.ts +++ b/cdk/lib/lambda-perf-stack.ts @@ -11,7 +11,6 @@ import { createRole } from './role'; import * as lambdaEventSources from 'aws-cdk-lib/aws-lambda-event-sources'; interface LambdaPerfStackProps extends cdk.StackProps { - skipSnapstart: string; githubAuthToken: string; lambdaPerfEnv: string; } @@ -51,11 +50,6 @@ export class LambdaPerfStack extends Stack { visibilityTimeout: cdk.Duration.seconds(900), }); - const snapstartDeployerQueue = new sqs.Queue(this, 'LambdaPerfSnapstartDeployerQueue', { - queueName: 'lambda-perf-snapstart-deployer', - visibilityTimeout: cdk.Duration.seconds(900), - }); - const invokerQueue = new sqs.Queue(this, 'LambdaPerfInvokerQueue', { queueName: 'lambda-perf-invoker', visibilityTimeout: cdk.Duration.seconds(900), @@ -82,8 +76,6 @@ export class LambdaPerfStack extends Stack { TABLE_NAME: 'report-log', REPORT_LOG_PROCESSOR_ARN: functionReportLogProcessorRs.functionArn, FUNCTION_QUEUE_NAME: deployerQueue.queueName, - SNAPSTART_QUEUE_NAME: snapstartDeployerQueue.queueName, - SKIP_SNAPSTART: props.skipSnapstart, ACCOUNT_ID: accountId, }, timeout: cdk.Duration.seconds(60), @@ -116,31 +108,6 @@ export class LambdaPerfStack extends Stack { }) ); - const functionSnapstartDeployerRs = new lambda.Function(this, 'FunctionSnapstartDeployerRs', { - runtime: lambda.Runtime.PROVIDED_AL2023, - architecture: lambda.Architecture.ARM_64, - handler: 'bootstrap', - code: lambda.Code.fromAsset('../target/lambda/function-deployer-rs/bootstrap-function-deployer-rs.zip'), - environment: { - ACCOUNT_ID: accountId, - REPORT_LOG_PROCESSOR_ARN: functionReportLogProcessorRs.functionArn, - ROLE_ARN: lambdaRoleArn, - INVOKER_QUEUE_NAME: invokerQueue.queueName, - }, - timeout: cdk.Duration.seconds(900), - role: iam.Role.fromRoleArn(this, 'RoleFunctionSnapstartDeployerRs', lambdaRoleArn), - }); - - snapstartDeployerQueue.grantSendMessages(functionSnapstartDeployerRs); - - functionSnapstartDeployerRs.addEventSource( - new lambdaEventSources.SqsEventSource(snapstartDeployerQueue, { - batchSize: 2, - maxBatchingWindow: cdk.Duration.seconds(120), - maxConcurrency: 2, - }) - ); - const functionInvokerRs = new lambda.Function(this, 'FunctionInvokerRs', { runtime: lambda.Runtime.PROVIDED_AL2023, architecture: lambda.Architecture.ARM_64, diff --git a/cdk/lib/role.ts b/cdk/lib/role.ts index 37bd43743a..ea1c20b864 100644 --- a/cdk/lib/role.ts +++ b/cdk/lib/role.ts @@ -176,7 +176,6 @@ export const createRole = (scope: Construct): string => { actions: ['sqs:SendMessage'], resources: [ `arn:aws:sqs:${region}:${accountId}:lambda-perf-deployer`, - `arn:aws:sqs:${region}:${accountId}:lambda-perf-snapstart-deployer`, `arn:aws:sqs:${region}:${accountId}:lambda-perf-invoker`, ], }, diff --git a/common_lib/manifest.test.snapstart.and.not.snapstart.json b/common_lib/manifest.test.snapstart.and.not.snapstart.json deleted file mode 100644 index 35c213e1c4..0000000000 --- a/common_lib/manifest.test.snapstart.and.not.snapstart.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "memorySizes": [128], - "runtimes": [ - { - "displayName": "java11 snapstart", - "runtime": "java11", - "handler": "io.github.maxday.Handler::handleRequest", - "path": "java_11", - "architectures": ["x86_64"], - "isSnapstart": true - }, - { - "displayName": "java11", - "runtime": "java11", - "handler": "io.github.maxday.Handler::handleRequest", - "path": "java_11", - "architectures": ["x86_64"] - } - ] -} \ No newline at end of file diff --git a/common_lib/manifest.test.snapstart.json b/common_lib/manifest.test.snapstart.json deleted file mode 100644 index 9bf1024955..0000000000 --- a/common_lib/manifest.test.snapstart.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "memorySizes": [128], - "runtimes": [ - { - "displayName": "java11 snapstart", - "runtime": "java11", - "handler": "io.github.maxday.Handler::handleRequest", - "path": "java_11", - "architectures": ["x86_64"], - "isSnapstart": true - } - ] -} \ No newline at end of file diff --git a/common_lib/src/lambda_manager.rs b/common_lib/src/lambda_manager.rs index 9b1819e977..12e2962af5 100644 --- a/common_lib/src/lambda_manager.rs +++ b/common_lib/src/lambda_manager.rs @@ -3,13 +3,12 @@ use std::{thread, time::Duration}; use async_trait::async_trait; use aws_config::BehaviorVersion; -use aws_sdk_lambda::types::SnapStartApplyOn::PublishedVersions; use aws_sdk_lambda::types::builders::EnvironmentBuilder; use aws_sdk_lambda::{ Client as LambdaClient, types::{ Architecture, ImageConfig, PackageType, - builders::{FunctionCodeBuilder, SnapStartBuilder}, + builders::{FunctionCodeBuilder}, }, }; @@ -35,7 +34,6 @@ pub trait FunctionManager { async fn update_function_configuration(&self, function_name: &str) -> Result<(), Error>; async fn invoke_function(&self, function_name: &str) -> Result<(), Error>; async fn publish_version(&self, runtime: &Runtime) -> Result<(), Error>; - async fn create_snapstart_function(&self, runtime: &Runtime) -> Result<(), Error>; async fn create_image_function(&self, runtime: &Runtime) -> Result<(), Error>; async fn create_zip_function(&self, runtime: &Runtime) -> Result<(), Error>; async fn list_versions_by_function(&self, runtime: &Runtime) -> Result, Error>; @@ -110,9 +108,6 @@ impl FunctionManager for LambdaManager<'_> { } async fn create_function(&self, runtime: &Runtime) -> Result<(), Error> { - if runtime.is_snapstart() { - return self.create_snapstart_function(runtime).await; - } if runtime.has_image() { self.create_image_function(runtime).await } else { @@ -152,18 +147,6 @@ impl FunctionManager for LambdaManager<'_> { Ok(()) } - async fn create_snapstart_function(&self, runtime: &Runtime) -> Result<(), Error> { - self.create_zip_function(runtime).await?; - thread::sleep(Duration::from_secs(5)); - let retry = RetryManager::new(3, Duration::from_secs(10), Duration::from_secs(30)); - for i in 0..10 { - retry - .retry_async(|| async { self.snapshot(runtime, i).await }) - .await?; - } - Ok(()) - } - async fn invoke_function(&self, function_name: &str) -> Result<(), Error> { let res = self .client @@ -225,13 +208,6 @@ impl FunctionManager for LambdaManager<'_> { .role(self.role_arn) .memory_size(runtime.memory_size()) .architectures(Architecture::from(runtime.architecture())); - if runtime.is_snapstart() { - res = res.snap_start( - SnapStartBuilder::default() - .apply_on(PublishedVersions) - .build(), - ); - } let res = res.send().await; match res { Ok(_) => Ok(()), @@ -261,13 +237,6 @@ impl FunctionManager for LambdaManager<'_> { .runtime(runtime.runtime()) .handler(runtime.handler()) .set_layers(layers); - if runtime.is_snapstart() { - res = res.snap_start( - SnapStartBuilder::default() - .apply_on(PublishedVersions) - .build(), - ); - } let res = res.send().await; match res { Ok(_) => Ok(()), diff --git a/common_lib/src/manifest.rs b/common_lib/src/manifest.rs index c266b0687d..4ae47384f0 100644 --- a/common_lib/src/manifest.rs +++ b/common_lib/src/manifest.rs @@ -23,8 +23,6 @@ pub struct InputRuntime { pub architectures: Vec, pub image: Option, pub layer: Option, - #[serde(default)] - pub is_snapstart: bool, } pub struct ManifestManager { @@ -56,7 +54,6 @@ impl ManifestManager { *memory_size, None, runtime.layer.clone(), - runtime.is_snapstart, ); runtimes.push(zip_runtime); if runtime.image.is_some() { @@ -69,7 +66,6 @@ impl ManifestManager { *memory_size, runtime.image.clone(), None, - false, ); runtimes.push(image_runtime); } @@ -214,23 +210,4 @@ mod tests { ) } - #[test] - fn test_read_manifest_snapstart() { - let manifest = manifest::ManifestManager::new("manifest.test.snapstart.json"); - let manifest = manifest.read_manifest(); - - assert_eq!(manifest.runtimes.len(), 1); - - assert_eq!(manifest.runtimes[0].display_name(), "java11 snapstart"); - assert_eq!(manifest.runtimes[0].runtime(), LambdaRuntime::Java11); - assert_eq!( - manifest.runtimes[0].handler(), - "io.github.maxday.Handler::handleRequest" - ); - assert_eq!(manifest.runtimes[0].path(), "java_11"); - assert_eq!(manifest.runtimes[0].architecture(), "x86_64"); - assert_eq!(manifest.runtimes[0].memory_size(), 128); - assert!(!manifest.runtimes[0].has_image()); - assert!(manifest.runtimes[0].is_snapstart()); - } } diff --git a/common_lib/src/report_log.rs b/common_lib/src/report_log.rs index 2bbeefcf15..d912712b79 100644 --- a/common_lib/src/report_log.rs +++ b/common_lib/src/report_log.rs @@ -165,22 +165,6 @@ mod tests { assert_eq!(report_log_details.init_duration, "170.13"); } - #[test] - fn test_report_log_details_new_snapstart() { - let report_log = "REPORT RequestId: 1d4e1c44-b211-4a4c-972b-39c8da774f2e Duration: 36.97 ms Billed Duration: 173 ms Memory Size: 128 MB Max Memory Used: 68 MB Restore Duration: 511.56 ms Billed Restore Duration: 136 ms "; - let report_log_details = ReportLogData::new(report_log).unwrap(); - assert_eq!( - report_log_details.request_id, - "1d4e1c44-b211-4a4c-972b-39c8da774f2e" - ); - assert_eq!(report_log_details.duration, "36.97"); - assert_eq!(report_log_details.billed_duration, "173"); - assert_eq!(report_log_details.memory_size, "128"); - assert_eq!(report_log_details.max_memory_used, "68"); - assert_eq!(report_log_details.init_duration, "511.56"); - assert_eq!(report_log_details.billed_restore_duration, "136"); - } - #[test] fn test_report_log_details_not_init_duration() { let report_log = "REPORT RequestId: 32f5cbf1-dd22-422a-a566-8965da5a3465 Duration: 8.40 ms Billed Duration: 9 ms Memory Size: 128 MB Max Memory Used: 66 MB "; diff --git a/common_lib/src/runtime.rs b/common_lib/src/runtime.rs index 85cb0fd77a..ce6ef5ff71 100644 --- a/common_lib/src/runtime.rs +++ b/common_lib/src/runtime.rs @@ -13,8 +13,6 @@ pub struct Runtime { memory_size: i32, image: Option, layer: Option, - #[serde(default)] - is_snapstart: bool, } impl Runtime { @@ -27,8 +25,7 @@ impl Runtime { architecture: String, memory_size: i32, image: Option, - layer: Option, - is_snapstart: bool, + layer: Option ) -> Self { Runtime { display_name, @@ -38,8 +35,7 @@ impl Runtime { architecture, memory_size, image, - layer, - is_snapstart, + layer } } } @@ -89,10 +85,6 @@ impl Runtime { format!("{}/code_{}.zip", self.path, self.architecture) } - pub fn is_snapstart(&self) -> bool { - self.is_snapstart - } - pub fn has_image(&self) -> bool { self.image.is_some() } @@ -163,7 +155,6 @@ mod tests { 128, None, None, - false, ); assert_eq!(test_runtime.package_type(), PackageType::Zip); assert!(!test_runtime.has_image()); @@ -180,7 +171,6 @@ mod tests { 128, None, None, - false, ); assert_eq!(test_runtime.build_s3_key(), "nodejs20/code_arm64.zip"); } @@ -196,7 +186,6 @@ mod tests { 128, None, None, - false, ); assert_eq!(test_runtime.architecture(), "arm64"); assert_eq!(test_runtime.memory_size(), 128); @@ -217,7 +206,6 @@ mod tests { 128, Some(Image::new(String::from("test_image"))), None, - false, ); assert_eq!(test_runtime.package_type(), PackageType::Image); assert!(test_runtime.has_image()); @@ -234,7 +222,6 @@ mod tests { 128, None, None, - false, ); assert_eq!( test_runtime.function_name(), @@ -253,7 +240,6 @@ mod tests { 128, Some(Image::new(String::from("test_image"))), None, - false, ); assert_eq!( test_runtime.image_name("0123456789", "us-east-1"), @@ -261,38 +247,6 @@ mod tests { ); } - #[test] - fn test_is_snapstart_true() { - let test_runtime = Runtime::new( - String::from("nodejs20"), - String::from("nodejs20.x"), - String::from("index.handler"), - String::from("nodejs20"), - String::from("arm64"), - 128, - Some(Image::new(String::from("test_image"))), - None, - true, - ); - assert!(test_runtime.is_snapstart()); - } - - #[test] - fn test_is_snapstart_false() { - let test_runtime = Runtime::new( - String::from("nodejs20"), - String::from("nodejs20.x"), - String::from("index.handler"), - String::from("nodejs20"), - String::from("arm64"), - 128, - Some(Image::new(String::from("test_image"))), - None, - false, - ); - assert!(!test_runtime.is_snapstart()); - } - #[test] fn test_json() { let test_runtime = Runtime::new( @@ -303,12 +257,11 @@ mod tests { String::from("arm64"), 128, Some(Image::new(String::from("test_image"))), - None, - false, + None ); assert_eq!( test_runtime.json(), - "{\"architecture\":\"arm64\",\"displayName\":\"nodejs20\",\"handler\":\"index.handler\",\"image\":{\"baseImage\":\"test_image\"},\"isSnapstart\":false,\"layer\":null,\"memorySize\":128,\"path\":\"nodejs20\",\"runtime\":\"nodejs20.x\"}" + "{\"architecture\":\"arm64\",\"displayName\":\"nodejs20\",\"handler\":\"index.handler\",\"image\":{\"baseImage\":\"test_image\"},\"layer\":null,\"memorySize\":128,\"path\":\"nodejs20\",\"runtime\":\"nodejs20.x\"}" ); } @@ -323,7 +276,6 @@ mod tests { 128, Some(Image::new(String::from("test_image"))), None, - false, ); assert_eq!(test_runtime.get_layer_name("us-east-1"), None); } @@ -344,7 +296,6 @@ mod tests { )), arm64: None, }), - false, ); assert_eq!( test_runtime.get_layer_name("us-east-1"), @@ -370,7 +321,6 @@ mod tests { "arn:aws:lambda:_REGION_:226609089145:layer:bun-1_0_0-arm64:1", )), }), - false, ); assert_eq!( test_runtime.get_layer_name("us-east-1"), @@ -396,7 +346,6 @@ mod tests { "arn:aws:lambda:_REGION_:226609089145:layer:bun-1_0_0-arm64:1", )), }), - false, ); assert_eq!(test_runtime.get_layer_name("us-east-1"), None); } diff --git a/common_lib/src/sqs_manager.rs b/common_lib/src/sqs_manager.rs index 2aaa29f77f..af854b9d90 100644 --- a/common_lib/src/sqs_manager.rs +++ b/common_lib/src/sqs_manager.rs @@ -8,9 +8,7 @@ use crate::{manifest::ManifestManager, runtime::Runtime}; pub struct SQSManager { pub client: SQSClient, pub function_queue_url: String, - pub snapstart_queue_url: String, pub manifest_manager: ManifestManager, - pub skip_snapstart: bool, } impl SQSManager { @@ -18,8 +16,6 @@ impl SQSManager { account_id: &str, region: &str, function_queue_name: &str, - snapstart_queue_name: &str, - skip_snapstart: bool, manifest_manager: ManifestManager, client: Option, ) -> Self { @@ -32,14 +28,10 @@ impl SQSManager { }; let function_queue_url = SQSManager::build_queue_url(account_id, region, function_queue_name); - let snapstart_queue_url = - SQSManager::build_queue_url(account_id, region, snapstart_queue_name); SQSManager { client, function_queue_url, - snapstart_queue_url, manifest_manager, - skip_snapstart, } } fn build_queue_url(account_id: &str, region: &str, queue_name: &str) -> String { @@ -60,28 +52,15 @@ pub trait QueueManager { impl QueueManager for SQSManager { fn build_message(&self) -> Vec { let manifest = self.manifest_manager.read_manifest(); - if self.skip_snapstart { - return manifest - .runtimes - .into_iter() - .filter(|r| !r.is_snapstart()) - .collect(); - } manifest.runtimes } async fn send_message(&self) -> Result<(), Error> { let messages = self.build_message().into_iter(); for message in messages { - let queue_url = if message.is_snapstart() { - &self.snapstart_queue_url - } else { - &self.function_queue_url - }; - self.client .send_message() - .queue_url(queue_url) + .queue_url(&self.function_queue_url) .message_body(serde_json::to_string(&message)?) .send() .await?; @@ -104,8 +83,6 @@ mod tests { "123456789", "us-east-1", "test_queue", - "snapstart_test_queue", - false, manifest, None, ) @@ -124,7 +101,6 @@ mod tests { 128, None, None, - false, ) ); assert_eq!( @@ -140,7 +116,6 @@ mod tests { base_image: "public.ecr.aws/lambda/nodejs:18".to_string(), }), None, - false, ) ); assert_eq!( @@ -154,7 +129,6 @@ mod tests { 128, None, None, - false, ) ); assert_eq!( @@ -170,7 +144,6 @@ mod tests { base_image: "public.ecr.aws/lambda/nodejs:18".to_string(), }), None, - false, ) ); assert_eq!( @@ -184,7 +157,6 @@ mod tests { 128, None, None, - false, ) ); @@ -199,7 +171,6 @@ mod tests { 256, None, None, - false, ) ); assert_eq!( @@ -215,7 +186,6 @@ mod tests { base_image: "public.ecr.aws/lambda/nodejs:18".to_string(), }), None, - false, ) ); assert_eq!( @@ -229,7 +199,6 @@ mod tests { 256, None, None, - false, ) ); assert_eq!( @@ -245,7 +214,6 @@ mod tests { base_image: "public.ecr.aws/lambda/nodejs:18".to_string(), }), None, - false, ) ); assert_eq!( @@ -259,39 +227,6 @@ mod tests { 256, None, None, - false, - ) - ); - } - - #[tokio::test] - async fn test_build_sqs_skip_snapstart() { - let manifest = ManifestManager::new("manifest.test.snapstart.and.not.snapstart.json"); - let sqs_manager = SQSManager::new( - "123456789", - "us-east-1", - "test_queue", - "snapstart_test_queue", - true, - manifest, - None, - ) - .await; - let sqs_messages = sqs_manager.build_message(); - assert_eq!(sqs_messages.len(), 1); - - assert_eq!( - sqs_messages[0], - Runtime::new( - "java11".to_string(), - "java11".to_string(), - "io.github.maxday.Handler::handleRequest".to_string(), - "java_11".to_string(), - "x86_64".to_string(), - 128, - None, - None, - false, ) ); } diff --git a/function-invoker-rs/src/main.rs b/function-invoker-rs/src/main.rs index 91d03e2350..280dd7d9fe 100644 --- a/function-invoker-rs/src/main.rs +++ b/function-invoker-rs/src/main.rs @@ -42,42 +42,11 @@ async fn process_event( let retry = RetryManager::new(3, Duration::from_secs(1), Duration::from_secs(30)); let runtime = &record.body; info!("processing runtime: {}", runtime.function_name()); - match runtime.is_snapstart() { - true => invoke_snapstart(runtime, &retry, lambda_manager).await, - false => invoke(runtime, &retry, lambda_manager).await, - }?; + invoke(runtime, &retry, lambda_manager).await?; } Ok(Response::success()) } -async fn invoke_snapstart( - runtime: &Runtime, - retry: &RetryManager, - lambda_manager: &LambdaManager<'_>, -) -> Result<(), Error> { - let arns = lambda_manager.list_versions_by_function(runtime).await?; - for i in 0..10 { - info!("snapstart run #: {}", i); - if let Some(arn) = arns.get(i) { - info!("arn = {}", arn); - retry - .retry_async(|| async { - lambda_manager - .update_function_configuration(&runtime.function_name()) - .await - }) - .await?; - info!("function updated to ensure cold start"); - thread::sleep(Duration::from_secs(5)); - retry - .retry_async(|| async { lambda_manager.invoke_function(arn).await }) - .await?; - info!("function invoked"); - } - } - Ok(()) -} - async fn invoke( runtime: &Runtime, retry: &RetryManager, diff --git a/function-trigger-deployer-rs/src/main.rs b/function-trigger-deployer-rs/src/main.rs index 5b3af5a523..245d26847a 100644 --- a/function-trigger-deployer-rs/src/main.rs +++ b/function-trigger-deployer-rs/src/main.rs @@ -33,14 +33,8 @@ async fn func(_: LambdaEvent) -> Result { std::env::var("REPORT_LOG_PROCESSOR_ARN").expect("REPORT_LOG_PROCESSOR_ARN not set"); let function_queue_name = std::env::var("FUNCTION_QUEUE_NAME").expect("FUNCTION_QUEUE_NAME not set"); - let snapstart_queue_name = - std::env::var("SNAPSTART_QUEUE_NAME").expect("SNAPSTART_QUEUE_NAME not set"); let account_id = std::env::var("ACCOUNT_ID").expect("ACCOUNT_ID not set"); let region = std::env::var("AWS_REGION").expect("AWS_REGION not set"); - let skip_snapstart = - std::env::var("SKIP_SNAPSTART").is_ok_and(|v| v.eq_ignore_ascii_case("true")); - - info!("skip_snapstart is set to {}", skip_snapstart); let db_manager = DynamoDBManager::new(table_name, None).await; @@ -66,8 +60,6 @@ async fn func(_: LambdaEvent) -> Result { &account_id, ®ion, &function_queue_name, - &snapstart_queue_name, - skip_snapstart, manifest_manager, None, ) diff --git a/s3-uploader/runtimes/java11_snapstart/Dockerfile b/s3-uploader/runtimes/java11_snapstart/Dockerfile deleted file mode 100644 index f6e2afc35a..0000000000 --- a/s3-uploader/runtimes/java11_snapstart/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM public.ecr.aws/lambda/java:11 as builder -WORKDIR /tmpBuild -RUN yum install -y unzip -RUN curl -k -L -v -X GET https://services.gradle.org/distributions/gradle-8.3-bin.zip > gradle-8.3-bin.zip -RUN unzip -d /opt/gradle gradle-8.3-bin.zip - -COPY src ./src -COPY build.gradle . - -RUN JAVA_HOME=/var/lang /opt/gradle/gradle-8.3/bin/gradle :buildZip - -FROM scratch -COPY --from=builder /tmpBuild/build/distributions/code.zip / -ENTRYPOINT ["/code.zip"] \ No newline at end of file diff --git a/s3-uploader/runtimes/java11_snapstart/build.gradle b/s3-uploader/runtimes/java11_snapstart/build.gradle deleted file mode 100644 index 2ce7b873fb..0000000000 --- a/s3-uploader/runtimes/java11_snapstart/build.gradle +++ /dev/null @@ -1,16 +0,0 @@ -apply plugin: 'java' - -repositories { - mavenCentral() -} - -sourceCompatibility = 11 -targetCompatibility = 11 - -task buildZip(type: Zip) { - archiveBaseName = 'code' - from compileJava - from processResources -} - -build.dependsOn buildZip \ No newline at end of file diff --git a/s3-uploader/runtimes/java11_snapstart/build.sh b/s3-uploader/runtimes/java11_snapstart/build.sh deleted file mode 100755 index 168d2b08ff..0000000000 --- a/s3-uploader/runtimes/java11_snapstart/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -DIR_NAME="./runtimes/$1" -ARCH=$2 - -rm ${DIR_NAME}/code_${ARCH}.zip 2> /dev/null - -docker build ${DIR_NAME} -t maxday/java11-snapstart -dockerId=$(docker create maxday/java11-snapstart) -docker cp $dockerId:/code.zip ${DIR_NAME}/code_${ARCH}.zip \ No newline at end of file diff --git a/s3-uploader/runtimes/java11_snapstart/src/main/java/io/github/maxday/Handler.java b/s3-uploader/runtimes/java11_snapstart/src/main/java/io/github/maxday/Handler.java deleted file mode 100644 index 35b7857c2b..0000000000 --- a/s3-uploader/runtimes/java11_snapstart/src/main/java/io/github/maxday/Handler.java +++ /dev/null @@ -1,18 +0,0 @@ -package io.github.maxday; - -import java.io.InputStream; -import java.io.IOException; -import java.io.OutputStream; - -public class Handler { - - public void handleRequest(InputStream inputStream, OutputStream outputStream) throws IOException { - try { - outputStream.write("ok".getBytes()); - } catch (IOException e) { - e.printStackTrace(); - } finally { - outputStream.close(); - } - } -} diff --git a/s3-uploader/runtimes/java17_snapstart/Dockerfile b/s3-uploader/runtimes/java17_snapstart/Dockerfile deleted file mode 100644 index d5464c2f87..0000000000 --- a/s3-uploader/runtimes/java17_snapstart/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM public.ecr.aws/lambda/java:17 as builder -WORKDIR /tmpBuild -RUN yum install -y unzip -RUN curl -k -L -v -X GET https://services.gradle.org/distributions/gradle-8.3-bin.zip > gradle-8.3-bin.zip -RUN unzip -d /opt/gradle gradle-8.3-bin.zip - -COPY src ./src -COPY build.gradle . - -RUN JAVA_HOME=/var/lang /opt/gradle/gradle-8.3/bin/gradle :buildZip - -FROM scratch -COPY --from=builder /tmpBuild/build/distributions/code.zip / -ENTRYPOINT ["/code.zip"] \ No newline at end of file diff --git a/s3-uploader/runtimes/java17_snapstart/build.gradle b/s3-uploader/runtimes/java17_snapstart/build.gradle deleted file mode 100644 index b4b36867b9..0000000000 --- a/s3-uploader/runtimes/java17_snapstart/build.gradle +++ /dev/null @@ -1,16 +0,0 @@ -apply plugin: 'java' - -repositories { - mavenCentral() -} - -sourceCompatibility = 17 -targetCompatibility = 17 - -task buildZip(type: Zip) { - archiveBaseName = 'code' - from compileJava - from processResources -} - -build.dependsOn buildZip \ No newline at end of file diff --git a/s3-uploader/runtimes/java17_snapstart/build.sh b/s3-uploader/runtimes/java17_snapstart/build.sh deleted file mode 100755 index e6b47279b6..0000000000 --- a/s3-uploader/runtimes/java17_snapstart/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -DIR_NAME="./runtimes/$1" -ARCH=$2 - -rm ${DIR_NAME}/code_${ARCH}.zip 2> /dev/null - -docker build ${DIR_NAME} -t maxday/java17-snapstart -dockerId=$(docker create maxday/java17-snapstart) -docker cp $dockerId:/code.zip ${DIR_NAME}/code_${ARCH}.zip \ No newline at end of file diff --git a/s3-uploader/runtimes/java17_snapstart/src/main/java/io/github/maxday/Handler.java b/s3-uploader/runtimes/java17_snapstart/src/main/java/io/github/maxday/Handler.java deleted file mode 100644 index 35b7857c2b..0000000000 --- a/s3-uploader/runtimes/java17_snapstart/src/main/java/io/github/maxday/Handler.java +++ /dev/null @@ -1,18 +0,0 @@ -package io.github.maxday; - -import java.io.InputStream; -import java.io.IOException; -import java.io.OutputStream; - -public class Handler { - - public void handleRequest(InputStream inputStream, OutputStream outputStream) throws IOException { - try { - outputStream.write("ok".getBytes()); - } catch (IOException e) { - e.printStackTrace(); - } finally { - outputStream.close(); - } - } -} diff --git a/s3-uploader/runtimes/java21_snapstart/Dockerfile b/s3-uploader/runtimes/java21_snapstart/Dockerfile deleted file mode 100644 index d4bcaff44c..0000000000 --- a/s3-uploader/runtimes/java21_snapstart/Dockerfile +++ /dev/null @@ -1,16 +0,0 @@ -FROM public.ecr.aws/lambda/java:21 as builder -WORKDIR /tmpBuild -RUN dnf -y update -RUN dnf -y install zip -RUN dnf -y install findutils -RUN curl -k -L -v -X GET https://services.gradle.org/distributions/gradle-8.3-bin.zip > gradle-8.3-bin.zip -RUN unzip -d /opt/gradle gradle-8.3-bin.zip - -COPY src ./src -COPY build.gradle . - -RUN JAVA_HOME=/var/lang /opt/gradle/gradle-8.3/bin/gradle :buildZip - -FROM scratch -COPY --from=builder /tmpBuild/build/distributions/code.zip / -ENTRYPOINT ["/code.zip"] \ No newline at end of file diff --git a/s3-uploader/runtimes/java21_snapstart/build.gradle b/s3-uploader/runtimes/java21_snapstart/build.gradle deleted file mode 100644 index d8a43ee0e1..0000000000 --- a/s3-uploader/runtimes/java21_snapstart/build.gradle +++ /dev/null @@ -1,23 +0,0 @@ -apply plugin: 'java' - -repositories { - mavenCentral() -} - -dependencies { - implementation 'org.crac:crac:1.5.0' -} - -sourceCompatibility = 21 -targetCompatibility = 21 - -task buildZip(type: Zip) { - archiveBaseName = 'code' - from compileJava - from processResources - into('lib') { - from configurations.runtimeClasspath - } -} - -build.dependsOn buildZip \ No newline at end of file diff --git a/s3-uploader/runtimes/java21_snapstart/build.sh b/s3-uploader/runtimes/java21_snapstart/build.sh deleted file mode 100755 index 3a0ca77948..0000000000 --- a/s3-uploader/runtimes/java21_snapstart/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -DIR_NAME="./runtimes/$1" -ARCH=$2 - -rm ${DIR_NAME}/code_${ARCH}.zip 2> /dev/null - -docker build ${DIR_NAME} -t maxday/java21-snapstart -dockerId=$(docker create maxday/java21-snapstart) -docker cp $dockerId:/code.zip ${DIR_NAME}/code_${ARCH}.zip \ No newline at end of file diff --git a/s3-uploader/runtimes/java21_snapstart/src/main/java/io/github/maxday/Handler.java b/s3-uploader/runtimes/java21_snapstart/src/main/java/io/github/maxday/Handler.java deleted file mode 100644 index 9b3e7d92d1..0000000000 --- a/s3-uploader/runtimes/java21_snapstart/src/main/java/io/github/maxday/Handler.java +++ /dev/null @@ -1,41 +0,0 @@ -package io.github.maxday; - -import org.crac.Context; -import org.crac.Core; -import org.crac.Resource; - -import java.io.ByteArrayOutputStream; -import java.io.InputStream; -import java.io.IOException; -import java.io.OutputStream; - -public class Handler implements Resource { - - public Handler() { - Core.getGlobalContext().register(this); - } - - public void handleRequest(InputStream inputStream, OutputStream outputStream) throws IOException { - try { - outputStream.write("ok".getBytes()); - } catch (IOException e) { - e.printStackTrace(); - } finally { - outputStream.close(); - } - } - - // Making best use of the snapshotting, by priming the function - // https://aws.amazon.com/blogs/compute/reducing-java-cold-starts-on-aws-lambda-functions-with-snapstart/ - @Override - public void beforeCheckpoint(Context context) throws Exception { - try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { - outputStream.write("ok".getBytes()); - } - } - - @Override - public void afterRestore(Context context) throws Exception { - // intentionally empty - } -} From 1023d7a273d3dcfcf641056e7800160f8be9dfda Mon Sep 17 00:00:00 2001 From: Maxime David Date: Wed, 28 May 2025 09:38:20 +0100 Subject: [PATCH 2/5] fix: clippy --- common_lib/src/lambda_manager.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/common_lib/src/lambda_manager.rs b/common_lib/src/lambda_manager.rs index 12e2962af5..fbe08bb327 100644 --- a/common_lib/src/lambda_manager.rs +++ b/common_lib/src/lambda_manager.rs @@ -16,7 +16,6 @@ use lambda_runtime::Error; use tracing::info; -use crate::retry_manager::RetryManager; use crate::runtime::Runtime; pub struct LambdaManager<'a> { @@ -194,7 +193,7 @@ impl FunctionManager for LambdaManager<'_> { info!("Creating IMAGE function: {}", function_name); info!("Image URI: {}", image_uri); let package_type = PackageType::Image; - let mut res = self + let res = self .client .create_function() .function_name(&function_name) @@ -220,7 +219,7 @@ impl FunctionManager for LambdaManager<'_> { info!("Creating ZIP function: {}", function_name); let package_type = PackageType::Zip; let layers = runtime.get_layer_name(self.region); - let mut res = self + let res = self .client .create_function() .function_name(&function_name) From 24b5570774f9e554426257d049a6480f3e02b263 Mon Sep 17 00:00:00 2001 From: Maxime David Date: Wed, 28 May 2025 09:38:30 +0100 Subject: [PATCH 3/5] fix: fmt --- common_lib/src/lambda_manager.rs | 5 +---- common_lib/src/manifest.rs | 1 - common_lib/src/runtime.rs | 6 +++--- common_lib/src/sqs_manager.rs | 10 ++-------- 4 files changed, 6 insertions(+), 16 deletions(-) diff --git a/common_lib/src/lambda_manager.rs b/common_lib/src/lambda_manager.rs index fbe08bb327..c498fe56c1 100644 --- a/common_lib/src/lambda_manager.rs +++ b/common_lib/src/lambda_manager.rs @@ -6,10 +6,7 @@ use aws_config::BehaviorVersion; use aws_sdk_lambda::types::builders::EnvironmentBuilder; use aws_sdk_lambda::{ Client as LambdaClient, - types::{ - Architecture, ImageConfig, PackageType, - builders::{FunctionCodeBuilder}, - }, + types::{Architecture, ImageConfig, PackageType, builders::FunctionCodeBuilder}, }; use lambda_runtime::Error; diff --git a/common_lib/src/manifest.rs b/common_lib/src/manifest.rs index 4ae47384f0..af146a9bff 100644 --- a/common_lib/src/manifest.rs +++ b/common_lib/src/manifest.rs @@ -209,5 +209,4 @@ mod tests { )]) ) } - } diff --git a/common_lib/src/runtime.rs b/common_lib/src/runtime.rs index ce6ef5ff71..031eb4dfb2 100644 --- a/common_lib/src/runtime.rs +++ b/common_lib/src/runtime.rs @@ -25,7 +25,7 @@ impl Runtime { architecture: String, memory_size: i32, image: Option, - layer: Option + layer: Option, ) -> Self { Runtime { display_name, @@ -35,7 +35,7 @@ impl Runtime { architecture, memory_size, image, - layer + layer, } } } @@ -257,7 +257,7 @@ mod tests { String::from("arm64"), 128, Some(Image::new(String::from("test_image"))), - None + None, ); assert_eq!( test_runtime.json(), diff --git a/common_lib/src/sqs_manager.rs b/common_lib/src/sqs_manager.rs index af854b9d90..f3558f1197 100644 --- a/common_lib/src/sqs_manager.rs +++ b/common_lib/src/sqs_manager.rs @@ -79,14 +79,8 @@ mod tests { #[tokio::test] async fn test_build_sqs() { let manifest = ManifestManager::new("manifest.test.json"); - let sqs_manager = SQSManager::new( - "123456789", - "us-east-1", - "test_queue", - manifest, - None, - ) - .await; + let sqs_manager = + SQSManager::new("123456789", "us-east-1", "test_queue", manifest, None).await; let sqs_messages = sqs_manager.build_message(); assert_eq!(sqs_messages.len(), 10); From 66c69aaebfb80a060cd769f7eba8ccbdc888dd9f Mon Sep 17 00:00:00 2001 From: Maxime David Date: Wed, 28 May 2025 09:42:54 +0100 Subject: [PATCH 4/5] fix: manifest --- manifest.json | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/manifest.json b/manifest.json index d1299101bb..802372acf3 100644 --- a/manifest.json +++ b/manifest.json @@ -261,14 +261,6 @@ "baseImage": "public.ecr.aws/lambda/provided:al2023" } }, - { - "displayName": "java11 snapstart", - "runtime": "java11", - "handler": "io.github.maxday.Handler::handleRequest", - "path": "java11_snapstart", - "isSnapstart": true, - "architectures": ["x86_64"] - }, { "displayName": "java17", "runtime": "java17", @@ -279,14 +271,6 @@ "baseImage": "public.ecr.aws/lambda/java:17" } }, - { - "displayName": "java17 snapstart", - "runtime": "java17", - "handler": "io.github.maxday.Handler::handleRequest", - "path": "java17_snapstart", - "isSnapstart": true, - "architectures": ["x86_64"] - }, { "displayName": "java21", "runtime": "java21", @@ -297,14 +281,6 @@ "baseImage": "public.ecr.aws/lambda/java:21" } }, - { - "displayName": "java21 snapstart", - "runtime": "java21", - "handler": "io.github.maxday.Handler::handleRequest", - "path": "java21_snapstart", - "isSnapstart": true, - "architectures": ["x86_64"] - }, { "displayName": "quarkus (prov.al2)", "runtime": "provided.al2", From 0234e010fecb3fcd7472b88bf923be86d50ba4db Mon Sep 17 00:00:00 2001 From: Maxime David Date: Sat, 18 Oct 2025 15:24:20 -0400 Subject: [PATCH 5/5] fix: batch size --- cdk/lib/lambda-perf-stack.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cdk/lib/lambda-perf-stack.ts b/cdk/lib/lambda-perf-stack.ts index ff81e4701e..edca54287b 100644 --- a/cdk/lib/lambda-perf-stack.ts +++ b/cdk/lib/lambda-perf-stack.ts @@ -125,7 +125,7 @@ export class LambdaPerfStack extends Stack { functionInvokerRs.addEventSource( new lambdaEventSources.SqsEventSource(invokerQueue, { - batchSize: 3, + batchSize: 6, maxBatchingWindow: cdk.Duration.seconds(30), }) );