Libraries/src/Amazon.Lambda.AspNetCoreServer/Internal/SnapStartEmptyLambdaContext.cs (49 lines of code) (raw):

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 using System; using System.Collections.Generic; using Amazon.Lambda.Core; namespace Amazon.Lambda.AspNetCoreServer.Internal; internal class SnapStartEmptyLambdaContext : ILambdaContext, ICognitoIdentity, IClientContext { private static Dictionary<string, string> _environmentVariables = new(); // Copied from Amazon.Lambda.RuntimeSupport.LambdaEnvironment to avoid adding // a reference to that project private const string EnvVarFunctionMemorySize = "AWS_LAMBDA_FUNCTION_MEMORY_SIZE"; private const string EnvVarFunctionName = "AWS_LAMBDA_FUNCTION_NAME"; private const string EnvVarFunctionVersion = "AWS_LAMBDA_FUNCTION_VERSION"; private const string EnvVarLogGroupName = "AWS_LAMBDA_LOG_GROUP_NAME"; private const string EnvVarLogStreamName = "AWS_LAMBDA_LOG_STREAM_NAME"; static SnapStartEmptyLambdaContext() { AddEnvValue(EnvVarFunctionMemorySize, "128"); AddEnvValue(EnvVarFunctionName, "fallbackFunctionName"); AddEnvValue(EnvVarFunctionVersion, "0"); AddEnvValue(EnvVarLogGroupName, "fallbackLogGroup"); AddEnvValue(EnvVarLogStreamName, "fallbackLogStream"); } private static void AddEnvValue(string envName, string fallback) { var val = System.Environment.GetEnvironmentVariable(envName); val = string.IsNullOrEmpty(val) ? fallback : val; _environmentVariables[envName] = val; } public SnapStartEmptyLambdaContext() { // clone the static environment variables into the local instance foreach (var k in _environmentVariables.Keys) Environment[k] = _environmentVariables[k]; } public string TraceId => string.Empty; public string AwsRequestId => string.Empty; public IClientContext ClientContext => this; public string FunctionName => Environment[EnvVarFunctionName]; public string FunctionVersion => Environment[EnvVarFunctionVersion]; public ICognitoIdentity Identity => this; public string InvokedFunctionArn => string.Empty; public ILambdaLogger Logger => null; public string LogGroupName => Environment[EnvVarLogGroupName]; public string LogStreamName => Environment[EnvVarLogStreamName]; public int MemoryLimitInMB => int.Parse(Environment[EnvVarFunctionMemorySize]); public TimeSpan RemainingTime => TimeSpan.FromSeconds(5); public string IdentityId { get; } public string IdentityPoolId { get; } public IDictionary<string, string> Environment { get; } = new Dictionary<string, string>(); public IClientApplication Client { get; } public IDictionary<string, string> Custom { get; } = new Dictionary<string, string>(); }