From 5f63d6cd6b36cea1afcf0094abb39d26a5630395 Mon Sep 17 00:00:00 2001 From: licjun Date: Tue, 18 Nov 2025 12:23:48 -0800 Subject: [PATCH] feat(Multi-tenancy): Add support for multi-tenancy (#11) * feat: update RIE code logic to have dual mode for supporting both classic and elevator functions (#8) * Add support for multi-tenancy --------- Co-authored-by: Chengjun Li <> --- Makefile | 2 +- cmd/aws-lambda-rie/main.go | 146 +---------------- go.mod | 7 +- go.sum | 6 + {lambda => internal/lambda}/agents/agent.go | 0 .../lambda}/agents/agent_test.go | 0 {lambda => internal/lambda}/appctx/appctx.go | 0 .../lambda}/appctx/appctxutil.go | 4 +- .../lambda}/appctx/appctxutil_test.go | 4 +- .../lambda}/core/agent_state_names.go | 0 {lambda => internal/lambda}/core/agentsmap.go | 1 + .../lambda}/core/agentsmap_test.go | 3 +- {lambda => internal/lambda}/core/agentutil.go | 0 .../core/bandwidthlimiter/bandwidthlimiter.go | 2 +- .../bandwidthlimiter/bandwidthlimiter_test.go | 0 .../core/bandwidthlimiter/throttler.go | 4 +- .../core/bandwidthlimiter/throttler_test.go | 0 .../lambda}/core/bandwidthlimiter/util.go | 0 .../core/bandwidthlimiter/util_test.go | 0 .../lambda}/core/credentials.go | 0 .../lambda}/core/credentials_test.go | 3 +- .../core/directinvoke/customerheaders.go | 0 .../core/directinvoke/customerheaders_test.go | 3 +- .../lambda}/core/directinvoke/directinvoke.go | 14 +- .../core/directinvoke/directinvoke_test.go | 23 ++- .../lambda}/core/directinvoke/util.go | 3 +- {lambda => internal/lambda}/core/doc.go | 0 .../lambda}/core/externalagent.go | 2 +- .../lambda}/core/externalagent_states.go | 0 .../lambda}/core/externalagent_states_test.go | 5 +- {lambda => internal/lambda}/core/flow.go | 2 +- {lambda => internal/lambda}/core/gates.go | 0 .../lambda}/core/gates_test.go | 5 +- .../lambda}/core/internalagent.go | 2 +- .../lambda}/core/internalagent_states.go | 0 .../lambda}/core/internalagent_states_test.go | 5 +- .../lambda}/core/registrations.go | 6 +- .../lambda}/core/registrations_test.go | 0 .../lambda}/core/runtime_state_names.go | 0 .../lambda}/core/statejson/description.go | 0 {lambda => internal/lambda}/core/states.go | 4 +- .../lambda}/core/states_test.go | 4 +- .../lambda}/extensions/extensions.go | 0 .../lambda}/fatalerror/fatalerror.go | 0 .../lambda}/fatalerror/fatalerror_test.go | 0 .../lambda}/interop/bootstrap.go | 4 +- .../lambda}/interop/cancellable_request.go | 0 .../lambda}/interop/events_api.go | 7 +- .../lambda}/interop/events_api_test.go | 6 +- .../lambda}/interop/messages.go | 0 {lambda => internal/lambda}/interop/model.go | 10 +- .../lambda}/interop/model_test.go | 2 +- .../lambda}/interop/sandbox_model.go | 4 +- {lambda => internal/lambda}/logging/doc.go | 0 .../lambda}/logging/internal_log.go | 3 +- .../lambda}/logging/internal_log_test.go | 6 +- {lambda => internal/lambda}/metering/time.go | 0 .../lambda}/metering/time_test.go | 0 .../lambda}/rapi/extensions_fuzz_test.go | 18 +- .../lambda}/rapi/handler/agentexiterror.go | 8 +- .../lambda}/rapi/handler/agentiniterror.go | 8 +- .../rapi/handler/agentiniterror_test.go | 8 +- .../lambda}/rapi/handler/agentnext.go | 4 +- .../lambda}/rapi/handler/agentnext_test.go | 12 +- .../lambda}/rapi/handler/agentregister.go | 6 +- .../rapi/handler/agentregister_test.go | 4 +- .../lambda}/rapi/handler/constants.go | 0 .../lambda}/rapi/handler/credentials.go | 2 +- .../lambda}/rapi/handler/credentials_test.go | 4 +- .../lambda}/rapi/handler/initerror.go | 10 +- .../lambda}/rapi/handler/initerror_test.go | 6 +- .../lambda}/rapi/handler/invocationerror.go | 12 +- .../rapi/handler/invocationerror_test.go | 10 +- .../lambda}/rapi/handler/invocationnext.go | 4 +- .../rapi/handler/invocationnext_test.go | 10 +- .../rapi/handler/invocationresponse.go | 10 +- .../rapi/handler/invocationresponse_test.go | 8 +- .../handler/mime_type_error_cause_json.go | 2 +- .../lambda}/rapi/handler/ping.go | 0 .../lambda}/rapi/handler/restoreerror.go | 10 +- .../lambda}/rapi/handler/restoreerror_test.go | 4 +- .../lambda}/rapi/handler/restorenext.go | 4 +- .../lambda}/rapi/handler/restorenext_test.go | 8 +- .../lambda}/rapi/handler/runtimelogs.go | 6 +- .../lambda}/rapi/handler/runtimelogs_stub.go | 4 +- .../rapi/handler/runtimelogs_stub_test.go | 0 .../lambda}/rapi/handler/runtimelogs_test.go | 6 +- .../lambda}/rapi/middleware/middleware.go | 8 +- .../rapi/middleware/middleware_test.go | 8 +- .../lambda}/rapi/model/agentevent.go | 0 .../rapi/model/agentregisterresponse.go | 0 .../lambda}/rapi/model/cognitoidentity.go | 0 .../lambda}/rapi/model/error_cause.go | 0 .../rapi/model/error_cause_compactor.go | 0 .../rapi/model/error_cause_compactor_test.go | 0 .../lambda}/rapi/model/error_cause_test.go | 0 .../lambda}/rapi/model/errorresponse.go | 0 .../lambda}/rapi/model/statusresponse.go | 0 .../lambda}/rapi/model/tracing.go | 0 .../lambda}/rapi/rapi_fuzz_test.go | 12 +- .../lambda}/rapi/rendering/doc.go | 0 .../lambda}/rapi/rendering/render_error.go | 4 +- .../lambda}/rapi/rendering/render_json.go | 0 .../lambda}/rapi/rendering/rendering.go | 11 +- {lambda => internal/lambda}/rapi/router.go | 12 +- .../lambda}/rapi/router_test.go | 6 +- .../lambda}/rapi/security_test.go | 2 +- {lambda => internal/lambda}/rapi/server.go | 10 +- .../lambda}/rapi/server_test.go | 2 +- .../lambda}/rapi/telemetry_logs_fuzz_test.go | 10 +- {lambda => internal/lambda}/rapid/exit.go | 10 +- {lambda => internal/lambda}/rapid/handlers.go | 34 ++-- .../lambda}/rapid/handlers_test.go | 22 +-- {lambda => internal/lambda}/rapid/sandbox.go | 14 +- {lambda => internal/lambda}/rapid/shutdown.go | 12 +- .../lambda}/rapidcore/env/constants.go | 0 .../lambda}/rapidcore/env/customer.go | 0 .../lambda}/rapidcore/env/environment.go | 0 .../lambda}/rapidcore/env/environment_test.go | 0 .../lambda}/rapidcore/env/rapidenv.go | 0 .../lambda}/rapidcore/env/util.go | 0 .../lambda}/rapidcore/env/util_test.go | 0 .../lambda}/rapidcore/errors.go | 0 .../lambda}/rapidcore/runtime_release.go | 0 .../lambda}/rapidcore/runtime_release_test.go | 0 .../lambda}/rapidcore/sandbox_api.go | 4 +- .../lambda}/rapidcore/sandbox_builder.go | 14 +- .../lambda}/rapidcore/sandbox_emulator_api.go | 2 +- .../lambda}/rapidcore/server.go | 10 +- .../lambda}/rapidcore/server_test.go | 6 +- .../standalone/directInvokeHandler.go | 4 +- .../rapidcore/standalone/eventLogHandler.go | 2 +- .../rapidcore/standalone/executeHandler.go | 6 +- .../rapidcore/standalone/initHandler.go | 4 +- .../standalone/internalStateHandler.go | 0 .../rapidcore/standalone/invokeHandler.go | 6 +- .../rapidcore/standalone/middleware.go | 0 .../rapidcore/standalone/pingHandler.go | 0 .../rapidcore/standalone/reserveHandler.go | 6 +- .../rapidcore/standalone/resetHandler.go | 0 .../rapidcore/standalone/restoreHandler.go | 2 +- .../lambda}/rapidcore/standalone/router.go | 8 +- .../rapidcore/standalone/shutdownHandler.go | 4 +- .../standalone/telemetry/agent_writer.go | 0 .../standalone/telemetry/eventLog.go | 0 .../standalone/telemetry/events_api.go | 5 +- .../standalone/telemetry/logs_egress_api.go | 0 .../standalone/telemetry/structured_logger.go | 3 +- .../rapidcore/standalone/telemetry/tracer.go | 10 +- .../lambda}/rapidcore/standalone/util.go | 2 +- .../standalone/waitUntilInitializedHandler.go | 2 +- .../standalone/waitUntilReleaseHandler.go | 2 +- .../lambda/rie}/handlers.go | 11 +- .../lambda/rie}/http.go | 6 +- internal/lambda/rie/run.go | 154 ++++++++++++++++++ .../lambda/rie}/simple_bootstrap.go | 8 +- .../lambda/rie}/simple_bootstrap_test.go | 4 +- .../lambda/rie}/util.go | 5 +- .../lambda}/supervisor/local_supervisor.go | 2 +- .../supervisor/local_supervisor_test.go | 2 +- .../lambda}/supervisor/model/model.go | 0 .../lambda}/supervisor/model/model_test.go | 0 .../lambda}/telemetry/constants.go | 0 .../lambda}/telemetry/events_api.go | 4 +- .../lambda}/telemetry/events_api_test.go | 4 +- .../lambda}/telemetry/logs_egress_api.go | 0 .../telemetry/logs_subscription_api.go | 2 +- .../lambda}/telemetry/tracer.go | 6 +- .../lambda}/telemetry/tracer_test.go | 2 +- .../lambda}/testdata/agents/bash_true.sh | 0 .../lambda}/testdata/async_assertion_utils.go | 2 +- .../lambda}/testdata/bash_function.sh | 0 .../lambda}/testdata/bash_runtime.sh | 0 .../testdata/bash_script_with_child_proc.sh | 0 .../lambda}/testdata/env_setup_helpers.go | 0 .../lambda}/testdata/flowtesting.go | 12 +- .../lambda}/testdata/mockcommand.go | 9 +- .../lambda}/testdata/mockthread/mockthread.go | 0 .../lambda}/testdata/mocktracer/mocktracer.go | 2 +- .../lambda}/testdata/parametrization.go | 0 180 files changed, 539 insertions(+), 465 deletions(-) rename {lambda => internal/lambda}/agents/agent.go (100%) rename {lambda => internal/lambda}/agents/agent_test.go (100%) rename {lambda => internal/lambda}/appctx/appctx.go (100%) rename {lambda => internal/lambda}/appctx/appctxutil.go (97%) rename {lambda => internal/lambda}/appctx/appctxutil_test.go (97%) rename {lambda => internal/lambda}/core/agent_state_names.go (100%) rename {lambda => internal/lambda}/core/agentsmap.go (99%) rename {lambda => internal/lambda}/core/agentsmap_test.go (99%) rename {lambda => internal/lambda}/core/agentutil.go (100%) rename {lambda => internal/lambda}/core/bandwidthlimiter/bandwidthlimiter.go (94%) rename {lambda => internal/lambda}/core/bandwidthlimiter/bandwidthlimiter_test.go (100%) rename {lambda => internal/lambda}/core/bandwidthlimiter/throttler.go (95%) rename {lambda => internal/lambda}/core/bandwidthlimiter/throttler_test.go (100%) rename {lambda => internal/lambda}/core/bandwidthlimiter/util.go (100%) rename {lambda => internal/lambda}/core/bandwidthlimiter/util_test.go (100%) rename {lambda => internal/lambda}/core/credentials.go (100%) rename {lambda => internal/lambda}/core/credentials_test.go (99%) rename {lambda => internal/lambda}/core/directinvoke/customerheaders.go (100%) rename {lambda => internal/lambda}/core/directinvoke/customerheaders_test.go (99%) rename {lambda => internal/lambda}/core/directinvoke/directinvoke.go (97%) rename {lambda => internal/lambda}/core/directinvoke/directinvoke_test.go (97%) rename {lambda => internal/lambda}/core/directinvoke/util.go (96%) rename {lambda => internal/lambda}/core/doc.go (100%) rename {lambda => internal/lambda}/core/externalagent.go (98%) rename {lambda => internal/lambda}/core/externalagent_states.go (100%) rename {lambda => internal/lambda}/core/externalagent_states_test.go (98%) rename {lambda => internal/lambda}/core/flow.go (98%) rename {lambda => internal/lambda}/core/gates.go (100%) rename {lambda => internal/lambda}/core/gates_test.go (94%) rename {lambda => internal/lambda}/core/internalagent.go (98%) rename {lambda => internal/lambda}/core/internalagent_states.go (100%) rename {lambda => internal/lambda}/core/internalagent_states_test.go (98%) rename {lambda => internal/lambda}/core/registrations.go (97%) rename {lambda => internal/lambda}/core/registrations_test.go (100%) rename {lambda => internal/lambda}/core/runtime_state_names.go (100%) rename {lambda => internal/lambda}/core/statejson/description.go (100%) rename {lambda => internal/lambda}/core/states.go (98%) rename {lambda => internal/lambda}/core/states_test.go (99%) rename {lambda => internal/lambda}/extensions/extensions.go (100%) rename {lambda => internal/lambda}/fatalerror/fatalerror.go (100%) rename {lambda => internal/lambda}/fatalerror/fatalerror_test.go (100%) rename {lambda => internal/lambda}/interop/bootstrap.go (80%) rename {lambda => internal/lambda}/interop/cancellable_request.go (100%) rename {lambda => internal/lambda}/interop/events_api.go (94%) rename {lambda => internal/lambda}/interop/events_api_test.go (98%) rename {lambda => internal/lambda}/interop/messages.go (100%) rename {lambda => internal/lambda}/interop/model.go (97%) rename {lambda => internal/lambda}/interop/model_test.go (96%) rename {lambda => internal/lambda}/interop/sandbox_model.go (98%) rename {lambda => internal/lambda}/logging/doc.go (100%) rename {lambda => internal/lambda}/logging/internal_log.go (99%) rename {lambda => internal/lambda}/logging/internal_log_test.go (100%) rename {lambda => internal/lambda}/metering/time.go (100%) rename {lambda => internal/lambda}/metering/time_test.go (100%) rename {lambda => internal/lambda}/rapi/extensions_fuzz_test.go (92%) rename {lambda => internal/lambda}/rapi/handler/agentexiterror.go (88%) rename {lambda => internal/lambda}/rapi/handler/agentiniterror.go (88%) rename {lambda => internal/lambda}/rapi/handler/agentiniterror_test.go (93%) rename {lambda => internal/lambda}/rapi/handler/agentnext.go (93%) rename {lambda => internal/lambda}/rapi/handler/agentnext_test.go (95%) rename {lambda => internal/lambda}/rapi/handler/agentregister.go (96%) rename {lambda => internal/lambda}/rapi/handler/agentregister_test.go (98%) rename {lambda => internal/lambda}/rapi/handler/constants.go (100%) rename {lambda => internal/lambda}/rapi/handler/credentials.go (92%) rename {lambda => internal/lambda}/rapi/handler/credentials_test.go (93%) rename {lambda => internal/lambda}/rapi/handler/initerror.go (86%) rename {lambda => internal/lambda}/rapi/handler/initerror_test.go (90%) rename {lambda => internal/lambda}/rapi/handler/invocationerror.go (90%) rename {lambda => internal/lambda}/rapi/handler/invocationerror_test.go (97%) rename {lambda => internal/lambda}/rapi/handler/invocationnext.go (88%) rename {lambda => internal/lambda}/rapi/handler/invocationnext_test.go (94%) rename {lambda => internal/lambda}/rapi/handler/invocationresponse.go (89%) rename {lambda => internal/lambda}/rapi/handler/invocationresponse_test.go (96%) rename {lambda => internal/lambda}/rapi/handler/mime_type_error_cause_json.go (95%) rename {lambda => internal/lambda}/rapi/handler/ping.go (100%) rename {lambda => internal/lambda}/rapi/handler/restoreerror.go (76%) rename {lambda => internal/lambda}/rapi/handler/restoreerror_test.go (89%) rename {lambda => internal/lambda}/rapi/handler/restorenext.go (87%) rename {lambda => internal/lambda}/rapi/handler/restorenext_test.go (90%) rename {lambda => internal/lambda}/rapi/handler/runtimelogs.go (94%) rename {lambda => internal/lambda}/rapi/handler/runtimelogs_stub.go (91%) rename {lambda => internal/lambda}/rapi/handler/runtimelogs_stub_test.go (100%) rename {lambda => internal/lambda}/rapi/handler/runtimelogs_test.go (98%) rename {lambda => internal/lambda}/rapi/middleware/middleware.go (90%) rename {lambda => internal/lambda}/rapi/middleware/middleware_test.go (92%) rename {lambda => internal/lambda}/rapi/model/agentevent.go (100%) rename {lambda => internal/lambda}/rapi/model/agentregisterresponse.go (100%) rename {lambda => internal/lambda}/rapi/model/cognitoidentity.go (100%) rename {lambda => internal/lambda}/rapi/model/error_cause.go (100%) rename {lambda => internal/lambda}/rapi/model/error_cause_compactor.go (100%) rename {lambda => internal/lambda}/rapi/model/error_cause_compactor_test.go (100%) rename {lambda => internal/lambda}/rapi/model/error_cause_test.go (100%) rename {lambda => internal/lambda}/rapi/model/errorresponse.go (100%) rename {lambda => internal/lambda}/rapi/model/statusresponse.go (100%) rename {lambda => internal/lambda}/rapi/model/tracing.go (100%) rename {lambda => internal/lambda}/rapi/rapi_fuzz_test.go (96%) rename {lambda => internal/lambda}/rapi/rendering/doc.go (100%) rename {lambda => internal/lambda}/rapi/rendering/render_error.go (95%) rename {lambda => internal/lambda}/rapi/rendering/render_json.go (100%) rename {lambda => internal/lambda}/rapi/rendering/rendering.go (95%) rename {lambda => internal/lambda}/rapi/router.go (90%) rename {lambda => internal/lambda}/rapi/router_test.go (98%) rename {lambda => internal/lambda}/rapi/security_test.go (98%) rename {lambda => internal/lambda}/rapi/server.go (90%) rename {lambda => internal/lambda}/rapi/server_test.go (97%) rename {lambda => internal/lambda}/rapi/telemetry_logs_fuzz_test.go (92%) rename {lambda => internal/lambda}/rapid/exit.go (92%) rename {lambda => internal/lambda}/rapid/handlers.go (96%) rename {lambda => internal/lambda}/rapid/handlers_test.go (90%) rename {lambda => internal/lambda}/rapid/sandbox.go (92%) rename {lambda => internal/lambda}/rapid/shutdown.go (96%) rename {lambda => internal/lambda}/rapidcore/env/constants.go (100%) rename {lambda => internal/lambda}/rapidcore/env/customer.go (100%) rename {lambda => internal/lambda}/rapidcore/env/environment.go (100%) rename {lambda => internal/lambda}/rapidcore/env/environment_test.go (100%) rename {lambda => internal/lambda}/rapidcore/env/rapidenv.go (100%) rename {lambda => internal/lambda}/rapidcore/env/util.go (100%) rename {lambda => internal/lambda}/rapidcore/env/util_test.go (100%) rename {lambda => internal/lambda}/rapidcore/errors.go (100%) rename {lambda => internal/lambda}/rapidcore/runtime_release.go (100%) rename {lambda => internal/lambda}/rapidcore/runtime_release_test.go (100%) rename {lambda => internal/lambda}/rapidcore/sandbox_api.go (97%) rename {lambda => internal/lambda}/rapidcore/sandbox_builder.go (90%) rename {lambda => internal/lambda}/rapidcore/sandbox_emulator_api.go (95%) rename {lambda => internal/lambda}/rapidcore/server.go (98%) rename {lambda => internal/lambda}/rapidcore/server_test.go (98%) rename {lambda => internal/lambda}/rapidcore/standalone/directInvokeHandler.go (86%) rename {lambda => internal/lambda}/rapidcore/standalone/eventLogHandler.go (82%) rename {lambda => internal/lambda}/rapidcore/standalone/executeHandler.go (90%) rename {lambda => internal/lambda}/rapidcore/standalone/initHandler.go (95%) rename {lambda => internal/lambda}/rapidcore/standalone/internalStateHandler.go (100%) rename {lambda => internal/lambda}/rapidcore/standalone/invokeHandler.go (89%) rename {lambda => internal/lambda}/rapidcore/standalone/middleware.go (100%) rename {lambda => internal/lambda}/rapidcore/standalone/pingHandler.go (100%) rename {lambda => internal/lambda}/rapidcore/standalone/reserveHandler.go (81%) rename {lambda => internal/lambda}/rapidcore/standalone/resetHandler.go (100%) rename {lambda => internal/lambda}/rapidcore/standalone/restoreHandler.go (95%) rename {lambda => internal/lambda}/rapidcore/standalone/router.go (87%) rename {lambda => internal/lambda}/rapidcore/standalone/shutdownHandler.go (80%) rename {lambda => internal/lambda}/rapidcore/standalone/telemetry/agent_writer.go (100%) rename {lambda => internal/lambda}/rapidcore/standalone/telemetry/eventLog.go (100%) rename {lambda => internal/lambda}/rapidcore/standalone/telemetry/events_api.go (97%) rename {lambda => internal/lambda}/rapidcore/standalone/telemetry/logs_egress_api.go (100%) rename {lambda => internal/lambda}/rapidcore/standalone/telemetry/structured_logger.go (99%) rename {lambda => internal/lambda}/rapidcore/standalone/telemetry/tracer.go (94%) rename {lambda => internal/lambda}/rapidcore/standalone/util.go (96%) rename {lambda => internal/lambda}/rapidcore/standalone/waitUntilInitializedHandler.go (85%) rename {lambda => internal/lambda}/rapidcore/standalone/waitUntilReleaseHandler.go (90%) rename {cmd/aws-lambda-rie => internal/lambda/rie}/handlers.go (95%) rename {cmd/aws-lambda-rie => internal/lambda/rie}/http.go (78%) create mode 100644 internal/lambda/rie/run.go rename {cmd/aws-lambda-rie => internal/lambda/rie}/simple_bootstrap.go (88%) rename {cmd/aws-lambda-rie => internal/lambda/rie}/simple_bootstrap_test.go (95%) rename {cmd/aws-lambda-rie => internal/lambda/rie}/util.go (96%) rename {lambda => internal/lambda}/supervisor/local_supervisor.go (98%) rename {lambda => internal/lambda}/supervisor/local_supervisor_test.go (98%) rename {lambda => internal/lambda}/supervisor/model/model.go (100%) rename {lambda => internal/lambda}/supervisor/model/model_test.go (100%) rename {lambda => internal/lambda}/telemetry/constants.go (100%) rename {lambda => internal/lambda}/telemetry/events_api.go (97%) rename {lambda => internal/lambda}/telemetry/events_api_test.go (97%) rename {lambda => internal/lambda}/telemetry/logs_egress_api.go (100%) rename {lambda => internal/lambda}/telemetry/logs_subscription_api.go (95%) rename {lambda => internal/lambda}/telemetry/tracer.go (95%) rename {lambda => internal/lambda}/telemetry/tracer_test.go (98%) rename {lambda => internal/lambda}/testdata/agents/bash_true.sh (100%) rename {lambda => internal/lambda}/testdata/async_assertion_utils.go (99%) rename {lambda => internal/lambda}/testdata/bash_function.sh (100%) rename {lambda => internal/lambda}/testdata/bash_runtime.sh (100%) rename {lambda => internal/lambda}/testdata/bash_script_with_child_proc.sh (100%) rename {lambda => internal/lambda}/testdata/env_setup_helpers.go (100%) rename {lambda => internal/lambda}/testdata/flowtesting.go (91%) rename {lambda => internal/lambda}/testdata/mockcommand.go (84%) rename {lambda => internal/lambda}/testdata/mockthread/mockthread.go (100%) rename {lambda => internal/lambda}/testdata/mocktracer/mocktracer.go (97%) rename {lambda => internal/lambda}/testdata/parametrization.go (100%) diff --git a/Makefile b/Makefile index 077cf31..b82fe34 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ DESTINATION_old:= bin/${BINARY_NAME} DESTINATION_x86_64 := bin/${BINARY_NAME}-x86_64 DESTINATION_arm64 := bin/${BINARY_NAME}-arm64 -run_in_docker = docker run --env GOPROXY=direct -v $(shell pwd):/LambdaRuntimeLocal -w /LambdaRuntimeLocal golang:1.24 $(1) +run_in_docker = docker run --env GOPROXY=direct -v $(shell pwd):/LambdaRuntimeLocal -w /LambdaRuntimeLocal golang:1.25 $(1) compile-with-docker-all: $(call run_in_docker, make compile-lambda-linux-all) diff --git a/cmd/aws-lambda-rie/main.go b/cmd/aws-lambda-rie/main.go index bd15402..d564334 100644 --- a/cmd/aws-lambda-rie/main.go +++ b/cmd/aws-lambda-rie/main.go @@ -4,151 +4,9 @@ package main import ( - "context" - "fmt" - "net" - "os" - "runtime/debug" - - "github.com/jessevdk/go-flags" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/rapidcore" - - log "github.com/sirupsen/logrus" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rie" ) -const ( - optBootstrap = "/opt/bootstrap" - runtimeBootstrap = "/var/runtime/bootstrap" -) - -type options struct { - LogLevel string `long:"log-level" description:"The level of AWS Lambda Runtime Interface Emulator logs to display. Can also be set by the environment variable 'LOG_LEVEL'. Defaults to the value 'info'."` - InitCachingEnabled bool `long:"enable-init-caching" description:"Enable support for Init Caching"` - // Do not have a default value so we do not need to keep it in sync with the default value in lambda/rapidcore/sandbox_builder.go - RuntimeAPIAddress string `long:"runtime-api-address" description:"The address of the AWS Lambda Runtime API to communicate with the Lambda execution environment."` - RuntimeInterfaceEmulatorAddress string `long:"runtime-interface-emulator-address" default:"0.0.0.0:8080" description:"The address for the AWS Lambda Runtime Interface Emulator to accept HTTP request upon."` -} - func main() { - // More frequent GC reduces the tail latencies, equivalent to export GOGC=33 - debug.SetGCPercent(33) - - opts, args := getCLIArgs() - - logLevel := "info" - - // If you specify an option by using a parameter on the CLI command line, it overrides any value from either the corresponding environment variable. - // - // https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html - if opts.LogLevel != "" { - logLevel = opts.LogLevel - } else if envLogLevel, envLogLevelSet := os.LookupEnv("LOG_LEVEL"); envLogLevelSet { - logLevel = envLogLevel - } - - rapidcore.SetLogLevel(logLevel) - - if opts.RuntimeAPIAddress != "" { - _, _, err := net.SplitHostPort(opts.RuntimeAPIAddress) - - if err != nil { - log.WithError(err).Fatalf("The command line value for \"--runtime-api-address\" is not a valid network address %q.", opts.RuntimeAPIAddress) - } - } - - _, _, err := net.SplitHostPort(opts.RuntimeInterfaceEmulatorAddress) - - if err != nil { - log.WithError(err).Fatalf("The command line value for \"--runtime-interface-emulator-address\" is not a valid network address %q.", opts.RuntimeInterfaceEmulatorAddress) - } - - bootstrap, handler := getBootstrap(args, opts) - sandbox := rapidcore. - NewSandboxBuilder(). - AddShutdownFunc(context.CancelFunc(func() { os.Exit(0) })). - SetExtensionsFlag(true). - SetInitCachingFlag(opts.InitCachingEnabled) - - if len(handler) > 0 { - sandbox.SetHandler(handler) - } - - if opts.RuntimeAPIAddress != "" { - sandbox.SetRuntimeAPIAddress(opts.RuntimeAPIAddress) - } - - sandboxContext, internalStateFn := sandbox.Create() - // Since we have not specified a custom interop server for standalone, we can - // directly reference the default interop server, which is a concrete type - sandbox.DefaultInteropServer().SetSandboxContext(sandboxContext) - sandbox.DefaultInteropServer().SetInternalStateGetter(internalStateFn) - - startHTTPServer(opts.RuntimeInterfaceEmulatorAddress, sandbox, bootstrap) -} - -func getCLIArgs() (options, []string) { - var opts options - parser := flags.NewParser(&opts, flags.IgnoreUnknown) - args, err := parser.ParseArgs(os.Args) - - if err != nil { - log.WithError(err).Fatal("Failed to parse command line arguments:", os.Args) - } - - return opts, args -} - -func isBootstrapFileExist(filePath string) bool { - file, err := os.Stat(filePath) - return !os.IsNotExist(err) && !file.IsDir() -} - -func getBootstrap(args []string, opts options) (interop.Bootstrap, string) { - var bootstrapLookupCmd []string - var handler string - currentWorkingDir := "/var/task" // default value - - if len(args) <= 1 { - // set default value to /var/task/bootstrap, but switch to the other options if it doesn't exist - bootstrapLookupCmd = []string{ - fmt.Sprintf("%s/bootstrap", currentWorkingDir), - } - - if !isBootstrapFileExist(bootstrapLookupCmd[0]) { - var bootstrapCmdCandidates = []string{ - optBootstrap, - runtimeBootstrap, - } - - for i, bootstrapCandidate := range bootstrapCmdCandidates { - if isBootstrapFileExist(bootstrapCandidate) { - bootstrapLookupCmd = []string{bootstrapCmdCandidates[i]} - break - } - } - } - - // handler is used later to set an env var for Lambda Image support - handler = "" - } else if len(args) > 1 { - - bootstrapLookupCmd = args[1:] - - if cwd, err := os.Getwd(); err == nil { - currentWorkingDir = cwd - } - - if len(args) > 2 { - // Assume last arg is the handler - handler = args[len(args)-1] - } - - log.Infof("exec '%s' (cwd=%s, handler=%s)", args[1], currentWorkingDir, handler) - - } else { - log.Panic("insufficient arguments: bootstrap not provided") - } - - return NewSimpleBootstrap(bootstrapLookupCmd, currentWorkingDir), handler + rie.Run() } diff --git a/go.mod b/go.mod index 5118f72..cca4879 100644 --- a/go.mod +++ b/go.mod @@ -1,12 +1,15 @@ -module go.amzn.com +module github.com/aws/aws-lambda-runtime-interface-emulator -go 1.24 +go 1.25 require ( github.com/aws/aws-lambda-go v1.46.0 + github.com/go-chi/chi v1.5.5 github.com/go-chi/chi/v5 v5.2.2 github.com/google/uuid v1.6.0 github.com/jessevdk/go-flags v1.5.0 + github.com/orcaman/concurrent-map v1.0.0 + github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 github.com/sirupsen/logrus v1.9.3 github.com/stretchr/testify v1.9.0 golang.org/x/sync v0.6.0 diff --git a/go.sum b/go.sum index 9fd0886..973da62 100644 --- a/go.sum +++ b/go.sum @@ -3,14 +3,20 @@ github.com/aws/aws-lambda-go v1.46.0/go.mod h1:dpMpZgvWx5vuQJfBt0zqBha60q7Dd7Rfg github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/go-chi/chi v1.5.5 h1:vOB/HbEMt9QqBqErz07QehcOKHaWFtuj87tTDVz2qXE= +github.com/go-chi/chi v1.5.5/go.mod h1:C9JqLr3tIYjDOZpzn+BCuxY8z8vmca43EeMgyZt7irw= github.com/go-chi/chi/v5 v5.2.2 h1:CMwsvRVTbXVytCk1Wd72Zy1LAsAh9GxMmSNWLHCG618= github.com/go-chi/chi/v5 v5.2.2/go.mod h1:L2yAIGWB3H+phAw1NxKwWM+7eUH/lU8pOMm5hHcoops= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/jessevdk/go-flags v1.5.0 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= +github.com/orcaman/concurrent-map v1.0.0 h1:I/2A2XPCb4IuQWcQhBhSwGfiuybl/J0ev9HDbW65HOY= +github.com/orcaman/concurrent-map v1.0.0/go.mod h1:Lu3tH6HLW3feq74c2GC+jIMS/K2CFcDWnWD9XkenwhI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4= +github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= diff --git a/lambda/agents/agent.go b/internal/lambda/agents/agent.go similarity index 100% rename from lambda/agents/agent.go rename to internal/lambda/agents/agent.go diff --git a/lambda/agents/agent_test.go b/internal/lambda/agents/agent_test.go similarity index 100% rename from lambda/agents/agent_test.go rename to internal/lambda/agents/agent_test.go diff --git a/lambda/appctx/appctx.go b/internal/lambda/appctx/appctx.go similarity index 100% rename from lambda/appctx/appctx.go rename to internal/lambda/appctx/appctx.go diff --git a/lambda/appctx/appctxutil.go b/internal/lambda/appctx/appctxutil.go similarity index 97% rename from lambda/appctx/appctxutil.go rename to internal/lambda/appctx/appctxutil.go index cd6e6d3..3988423 100644 --- a/lambda/appctx/appctxutil.go +++ b/internal/lambda/appctx/appctxutil.go @@ -8,8 +8,8 @@ import ( "net/http" "strings" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" log "github.com/sirupsen/logrus" ) diff --git a/lambda/appctx/appctxutil_test.go b/internal/lambda/appctx/appctxutil_test.go similarity index 97% rename from lambda/appctx/appctxutil_test.go rename to internal/lambda/appctx/appctxutil_test.go index b6df9aa..bb78583 100644 --- a/lambda/appctx/appctxutil_test.go +++ b/internal/lambda/appctx/appctxutil_test.go @@ -8,11 +8,11 @@ import ( "strings" "testing" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" ) func runTestRequestWithUserAgent(t *testing.T, userAgent string, expectedRuntimeRelease string) { diff --git a/lambda/core/agent_state_names.go b/internal/lambda/core/agent_state_names.go similarity index 100% rename from lambda/core/agent_state_names.go rename to internal/lambda/core/agent_state_names.go diff --git a/lambda/core/agentsmap.go b/internal/lambda/core/agentsmap.go similarity index 99% rename from lambda/core/agentsmap.go rename to internal/lambda/core/agentsmap.go index 4ade8a9..de55b54 100644 --- a/lambda/core/agentsmap.go +++ b/internal/lambda/core/agentsmap.go @@ -5,6 +5,7 @@ package core import ( "errors" + "github.com/google/uuid" ) diff --git a/lambda/core/agentsmap_test.go b/internal/lambda/core/agentsmap_test.go similarity index 99% rename from lambda/core/agentsmap_test.go rename to internal/lambda/core/agentsmap_test.go index 0c4b9e2..8a0346f 100644 --- a/lambda/core/agentsmap_test.go +++ b/internal/lambda/core/agentsmap_test.go @@ -4,9 +4,10 @@ package core import ( + "testing" + "github.com/google/uuid" "github.com/stretchr/testify/require" - "testing" ) func TestExternalAgentsMapLookupByName(t *testing.T) { diff --git a/lambda/core/agentutil.go b/internal/lambda/core/agentutil.go similarity index 100% rename from lambda/core/agentutil.go rename to internal/lambda/core/agentutil.go diff --git a/lambda/core/bandwidthlimiter/bandwidthlimiter.go b/internal/lambda/core/bandwidthlimiter/bandwidthlimiter.go similarity index 94% rename from lambda/core/bandwidthlimiter/bandwidthlimiter.go rename to internal/lambda/core/bandwidthlimiter/bandwidthlimiter.go index 05c600a..9670b46 100644 --- a/lambda/core/bandwidthlimiter/bandwidthlimiter.go +++ b/internal/lambda/core/bandwidthlimiter/bandwidthlimiter.go @@ -6,7 +6,7 @@ package bandwidthlimiter import ( "io" - "go.amzn.com/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" ) func BandwidthLimitingCopy(dst *BandwidthLimitingWriter, src io.Reader) (written int64, err error) { diff --git a/lambda/core/bandwidthlimiter/bandwidthlimiter_test.go b/internal/lambda/core/bandwidthlimiter/bandwidthlimiter_test.go similarity index 100% rename from lambda/core/bandwidthlimiter/bandwidthlimiter_test.go rename to internal/lambda/core/bandwidthlimiter/bandwidthlimiter_test.go diff --git a/lambda/core/bandwidthlimiter/throttler.go b/internal/lambda/core/bandwidthlimiter/throttler.go similarity index 95% rename from lambda/core/bandwidthlimiter/throttler.go rename to internal/lambda/core/bandwidthlimiter/throttler.go index b3b57dd..f8e82a3 100644 --- a/lambda/core/bandwidthlimiter/throttler.go +++ b/internal/lambda/core/bandwidthlimiter/throttler.go @@ -12,8 +12,8 @@ import ( log "github.com/sirupsen/logrus" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/metering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/metering" ) var ErrBufferSizeTooLarge = errors.New("buffer size cannot be greater than bucket size") diff --git a/lambda/core/bandwidthlimiter/throttler_test.go b/internal/lambda/core/bandwidthlimiter/throttler_test.go similarity index 100% rename from lambda/core/bandwidthlimiter/throttler_test.go rename to internal/lambda/core/bandwidthlimiter/throttler_test.go diff --git a/lambda/core/bandwidthlimiter/util.go b/internal/lambda/core/bandwidthlimiter/util.go similarity index 100% rename from lambda/core/bandwidthlimiter/util.go rename to internal/lambda/core/bandwidthlimiter/util.go diff --git a/lambda/core/bandwidthlimiter/util_test.go b/internal/lambda/core/bandwidthlimiter/util_test.go similarity index 100% rename from lambda/core/bandwidthlimiter/util_test.go rename to internal/lambda/core/bandwidthlimiter/util_test.go diff --git a/lambda/core/credentials.go b/internal/lambda/core/credentials.go similarity index 100% rename from lambda/core/credentials.go rename to internal/lambda/core/credentials.go diff --git a/lambda/core/credentials_test.go b/internal/lambda/core/credentials_test.go similarity index 99% rename from lambda/core/credentials_test.go rename to internal/lambda/core/credentials_test.go index 625ab8e..5b290fb 100644 --- a/lambda/core/credentials_test.go +++ b/internal/lambda/core/credentials_test.go @@ -4,9 +4,10 @@ package core import ( - "github.com/stretchr/testify/assert" "testing" "time" + + "github.com/stretchr/testify/assert" ) const ( diff --git a/lambda/core/directinvoke/customerheaders.go b/internal/lambda/core/directinvoke/customerheaders.go similarity index 100% rename from lambda/core/directinvoke/customerheaders.go rename to internal/lambda/core/directinvoke/customerheaders.go diff --git a/lambda/core/directinvoke/customerheaders_test.go b/internal/lambda/core/directinvoke/customerheaders_test.go similarity index 99% rename from lambda/core/directinvoke/customerheaders_test.go rename to internal/lambda/core/directinvoke/customerheaders_test.go index d81cbf4..924df8d 100644 --- a/lambda/core/directinvoke/customerheaders_test.go +++ b/internal/lambda/core/directinvoke/customerheaders_test.go @@ -4,8 +4,9 @@ package directinvoke import ( - "github.com/stretchr/testify/require" "testing" + + "github.com/stretchr/testify/require" ) func TestCustomerHeadersEmpty(t *testing.T) { diff --git a/lambda/core/directinvoke/directinvoke.go b/internal/lambda/core/directinvoke/directinvoke.go similarity index 97% rename from lambda/core/directinvoke/directinvoke.go rename to internal/lambda/core/directinvoke/directinvoke.go index 6b97cbe..e6f8304 100644 --- a/lambda/core/directinvoke/directinvoke.go +++ b/internal/lambda/core/directinvoke/directinvoke.go @@ -11,17 +11,18 @@ import ( "strconv" "strings" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core/bandwidthlimiter" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/metering" "github.com/go-chi/chi/v5" - "go.amzn.com/lambda/core/bandwidthlimiter" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/metering" log "github.com/sirupsen/logrus" ) const ( InvokeIDHeader = "Invoke-Id" + TenantIDHeader = "Tenant-Id" InvokedFunctionArnHeader = "Invoked-Function-Arn" VersionIDHeader = "Invoked-Function-Version" ReservationTokenHeader = "Reservation-Token" @@ -182,6 +183,7 @@ func ReceiveDirectInvoke(w http.ResponseWriter, r *http.Request, token interop.T InvokeResponseMode: InvokeResponseMode, RestoreDurationNs: token.RestoreDurationNs, RestoreStartTimeMonotime: token.RestoreStartTimeMonotime, + TenantID: token.TenantID, } if inv.ID != token.InvokeID { @@ -208,6 +210,10 @@ func ReceiveDirectInvoke(w http.ResponseWriter, r *http.Request, token interop.T w.Header().Set(ReservationTokenHeader, token.ReservationToken) w.Header().Set(InvokeIDHeader, token.InvokeID) + if token.TenantID != "" { + w.Header().Set(TenantIDHeader, string(token.TenantID)) + } + return inv, nil } diff --git a/lambda/core/directinvoke/directinvoke_test.go b/internal/lambda/core/directinvoke/directinvoke_test.go similarity index 97% rename from lambda/core/directinvoke/directinvoke_test.go rename to internal/lambda/core/directinvoke/directinvoke_test.go index e6646bf..7ab6156 100644 --- a/lambda/core/directinvoke/directinvoke_test.go +++ b/internal/lambda/core/directinvoke/directinvoke_test.go @@ -17,12 +17,12 @@ import ( "testing" "time" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/metering" "github.com/go-chi/chi/v5" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/metering" ) func NewResponseWriterWithoutFlushMethod() *ResponseWriterWithoutFlushMethod { @@ -530,6 +530,23 @@ func TestConvertToInvokeResponseMode(t *testing.T) { require.Equal(t, interop.ErrInvalidInvokeResponseMode, err) } +func TestReceiveDirectInvoke_TenantIDHeader(t *testing.T) { + responseRecorder := httptest.NewRecorder() + + token := createDummyToken() + token.TenantID = "blue" + + req := makeDirectInvokeRequest([]byte(""), token.ReservationToken, token.InvokeID, + "", token.VersionID, "", "", "", + "", "", "") + + _, err := ReceiveDirectInvoke(responseRecorder, req, token) + assert.NoError(t, err) + + actual := responseRecorder.Header().Get(TenantIDHeader) + assert.Equal(t, "blue", actual) +} + func FuzzReceiveDirectInvoke(f *testing.F) { testCustHeaders := CustomerHeaders{ CognitoIdentityID: "id1", diff --git a/lambda/core/directinvoke/util.go b/internal/lambda/core/directinvoke/util.go similarity index 96% rename from lambda/core/directinvoke/util.go rename to internal/lambda/core/directinvoke/util.go index 511d656..0b90cae 100644 --- a/lambda/core/directinvoke/util.go +++ b/internal/lambda/core/directinvoke/util.go @@ -6,11 +6,12 @@ package directinvoke import ( "context" "errors" - "go.amzn.com/lambda/core/bandwidthlimiter" "io" "net/http" "time" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core/bandwidthlimiter" + log "github.com/sirupsen/logrus" ) diff --git a/lambda/core/doc.go b/internal/lambda/core/doc.go similarity index 100% rename from lambda/core/doc.go rename to internal/lambda/core/doc.go diff --git a/lambda/core/externalagent.go b/internal/lambda/core/externalagent.go similarity index 98% rename from lambda/core/externalagent.go rename to internal/lambda/core/externalagent.go index cd367d2..d3ccad7 100644 --- a/lambda/core/externalagent.go +++ b/internal/lambda/core/externalagent.go @@ -7,7 +7,7 @@ import ( "fmt" "time" - "go.amzn.com/lambda/core/statejson" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core/statejson" "github.com/google/uuid" ) diff --git a/lambda/core/externalagent_states.go b/internal/lambda/core/externalagent_states.go similarity index 100% rename from lambda/core/externalagent_states.go rename to internal/lambda/core/externalagent_states.go diff --git a/lambda/core/externalagent_states_test.go b/internal/lambda/core/externalagent_states_test.go similarity index 98% rename from lambda/core/externalagent_states_test.go rename to internal/lambda/core/externalagent_states_test.go index 5d38c80..37d1612 100644 --- a/lambda/core/externalagent_states_test.go +++ b/internal/lambda/core/externalagent_states_test.go @@ -5,9 +5,10 @@ package core import ( "errors" - "github.com/stretchr/testify/require" - "go.amzn.com/lambda/testdata/mockthread" "testing" + + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/testdata/mockthread" + "github.com/stretchr/testify/require" ) func TestExternalAgentStateUnknownEventType(t *testing.T) { diff --git a/lambda/core/flow.go b/internal/lambda/core/flow.go similarity index 98% rename from lambda/core/flow.go rename to internal/lambda/core/flow.go index 08d5e4b..a110c41 100644 --- a/lambda/core/flow.go +++ b/internal/lambda/core/flow.go @@ -6,7 +6,7 @@ package core import ( "context" - "go.amzn.com/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" ) // InitFlowSynchronization wraps init flow barriers. diff --git a/lambda/core/gates.go b/internal/lambda/core/gates.go similarity index 100% rename from lambda/core/gates.go rename to internal/lambda/core/gates.go diff --git a/lambda/core/gates_test.go b/internal/lambda/core/gates_test.go similarity index 94% rename from lambda/core/gates_test.go rename to internal/lambda/core/gates_test.go index 156e085..35b2166 100644 --- a/lambda/core/gates_test.go +++ b/internal/lambda/core/gates_test.go @@ -5,9 +5,10 @@ package core import ( "errors" + "testing" + "github.com/stretchr/testify/assert" "golang.org/x/sync/errgroup" - "testing" ) func TestWalkThrough(t *testing.T) { @@ -82,7 +83,7 @@ func BenchmarkAwaitGateCondition(b *testing.B) { } } -// go test -run=XXX -bench=. -benchtime 10000000x -cpu 1 -blockprofile /tmp/pprof/block3.out src/go.amzn.com/lambda/core/* +// go test -run=XXX -bench=. -benchtime 10000000x -cpu 1 -blockprofile /tmp/pprof/block3.out src/github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core/* // goos: linux // goarch: amd64 // BenchmarkAwaitGateCondition 10000000 1834 ns/op diff --git a/lambda/core/internalagent.go b/internal/lambda/core/internalagent.go similarity index 98% rename from lambda/core/internalagent.go rename to internal/lambda/core/internalagent.go index e3a83db..1541db8 100644 --- a/lambda/core/internalagent.go +++ b/internal/lambda/core/internalagent.go @@ -7,7 +7,7 @@ import ( "fmt" "time" - "go.amzn.com/lambda/core/statejson" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core/statejson" "github.com/google/uuid" ) diff --git a/lambda/core/internalagent_states.go b/internal/lambda/core/internalagent_states.go similarity index 100% rename from lambda/core/internalagent_states.go rename to internal/lambda/core/internalagent_states.go diff --git a/lambda/core/internalagent_states_test.go b/internal/lambda/core/internalagent_states_test.go similarity index 98% rename from lambda/core/internalagent_states_test.go rename to internal/lambda/core/internalagent_states_test.go index 9cf1f0e..fa3e2c8 100644 --- a/lambda/core/internalagent_states_test.go +++ b/internal/lambda/core/internalagent_states_test.go @@ -4,9 +4,10 @@ package core import ( - "github.com/stretchr/testify/require" - "go.amzn.com/lambda/testdata/mockthread" "testing" + + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/testdata/mockthread" + "github.com/stretchr/testify/require" ) func TestInternalAgentStateUnknownEventType(t *testing.T) { diff --git a/lambda/core/registrations.go b/internal/lambda/core/registrations.go similarity index 97% rename from lambda/core/registrations.go rename to internal/lambda/core/registrations.go index 26f6f2f..7c40dbb 100644 --- a/lambda/core/registrations.go +++ b/internal/lambda/core/registrations.go @@ -8,9 +8,9 @@ import ( "os" "sync" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/core/statejson" - "go.amzn.com/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core/statejson" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" "github.com/google/uuid" diff --git a/lambda/core/registrations_test.go b/internal/lambda/core/registrations_test.go similarity index 100% rename from lambda/core/registrations_test.go rename to internal/lambda/core/registrations_test.go diff --git a/lambda/core/runtime_state_names.go b/internal/lambda/core/runtime_state_names.go similarity index 100% rename from lambda/core/runtime_state_names.go rename to internal/lambda/core/runtime_state_names.go diff --git a/lambda/core/statejson/description.go b/internal/lambda/core/statejson/description.go similarity index 100% rename from lambda/core/statejson/description.go rename to internal/lambda/core/statejson/description.go diff --git a/lambda/core/states.go b/internal/lambda/core/states.go similarity index 98% rename from lambda/core/states.go rename to internal/lambda/core/states.go index 0de88ec..24fe1e1 100644 --- a/lambda/core/states.go +++ b/internal/lambda/core/states.go @@ -8,8 +8,8 @@ import ( "sync" "time" - "go.amzn.com/lambda/core/statejson" - "go.amzn.com/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core/statejson" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" ) // Suspendable on operator condition. diff --git a/lambda/core/states_test.go b/internal/lambda/core/states_test.go similarity index 99% rename from lambda/core/states_test.go rename to internal/lambda/core/states_test.go index b6d2955..1892e64 100644 --- a/lambda/core/states_test.go +++ b/internal/lambda/core/states_test.go @@ -8,10 +8,10 @@ import ( "sync" "testing" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/testdata/mockthread" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/testdata/mockthread" ) func TestRuntimeInitErrorAfterReady(t *testing.T) { diff --git a/lambda/extensions/extensions.go b/internal/lambda/extensions/extensions.go similarity index 100% rename from lambda/extensions/extensions.go rename to internal/lambda/extensions/extensions.go diff --git a/lambda/fatalerror/fatalerror.go b/internal/lambda/fatalerror/fatalerror.go similarity index 100% rename from lambda/fatalerror/fatalerror.go rename to internal/lambda/fatalerror/fatalerror.go diff --git a/lambda/fatalerror/fatalerror_test.go b/internal/lambda/fatalerror/fatalerror_test.go similarity index 100% rename from lambda/fatalerror/fatalerror_test.go rename to internal/lambda/fatalerror/fatalerror_test.go diff --git a/lambda/interop/bootstrap.go b/internal/lambda/interop/bootstrap.go similarity index 80% rename from lambda/interop/bootstrap.go rename to internal/lambda/interop/bootstrap.go index d3f4500..0d8b376 100644 --- a/lambda/interop/bootstrap.go +++ b/internal/lambda/interop/bootstrap.go @@ -6,8 +6,8 @@ package interop import ( "os" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/rapidcore/env" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapidcore/env" ) type Bootstrap interface { diff --git a/lambda/interop/cancellable_request.go b/internal/lambda/interop/cancellable_request.go similarity index 100% rename from lambda/interop/cancellable_request.go rename to internal/lambda/interop/cancellable_request.go diff --git a/lambda/interop/events_api.go b/internal/lambda/interop/events_api.go similarity index 94% rename from lambda/interop/events_api.go rename to internal/lambda/interop/events_api.go index a0e9967..23ff4d2 100644 --- a/lambda/interop/events_api.go +++ b/internal/lambda/interop/events_api.go @@ -6,8 +6,8 @@ package interop import ( "fmt" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/rapi/model" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/model" ) type InitPhase string @@ -77,6 +77,7 @@ type TracingCtx struct { type InvokeStartData struct { RequestID string `json:"requestId"` + TenantID TenantID `json:"tenantId,omitempty"` Version string `json:"version,omitempty"` Tracing *TracingCtx `json:"tracing,omitempty"` } @@ -102,6 +103,7 @@ func (s *Span) String() string { type InvokeRuntimeDoneData struct { RequestID RequestID `json:"requestId"` + TenantID TenantID `json:"tenantId,omitempty"` Status string `json:"status"` Metrics *RuntimeDoneInvokeMetrics `json:"metrics,omitempty"` Tracing *TracingCtx `json:"tracing,omitempty"` @@ -135,6 +137,7 @@ type ReportMetrics struct { type ReportData struct { RequestID RequestID `json:"requestId"` + TenantID TenantID `json:"tenantId,omitempty"` Status string `json:"status"` Metrics ReportMetrics `json:"metrics"` Tracing *TracingCtx `json:"tracing,omitempty"` diff --git a/lambda/interop/events_api_test.go b/internal/lambda/interop/events_api_test.go similarity index 98% rename from lambda/interop/events_api_test.go rename to internal/lambda/interop/events_api_test.go index d3a7dc1..06ed5f0 100644 --- a/lambda/interop/events_api_test.go +++ b/internal/lambda/interop/events_api_test.go @@ -7,9 +7,9 @@ import ( "encoding/json" "testing" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/model" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "go.amzn.com/lambda/rapi/model" ) const requestID RequestID = "REQUEST_ID" @@ -39,11 +39,13 @@ func TestJsonMarshalInvokeRuntimeDone(t *testing.T) { Type: model.XRayTracingType, Value: "Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1", }, + TenantID: "blue", } expected := ` { "requestId": "REQUEST_ID", + "tenantId": "blue", "status": "success", "tracing": { "spanId": "spanid", @@ -567,11 +569,13 @@ func TestJsonMarshalReportWithTracing(t *testing.T) { Type: model.XRayTracingType, Value: "Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1", }, + TenantID: "blue", } expected := ` { "requestId": "REQUEST_ID", + "tenantId": "blue", "status": "error", "errorType": "Runtime.ExitError", "metrics": { diff --git a/lambda/interop/messages.go b/internal/lambda/interop/messages.go similarity index 100% rename from lambda/interop/messages.go rename to internal/lambda/interop/messages.go diff --git a/lambda/interop/model.go b/internal/lambda/interop/model.go similarity index 97% rename from lambda/interop/model.go rename to internal/lambda/interop/model.go index a4bdbf4..d4c6d9e 100644 --- a/lambda/interop/model.go +++ b/internal/lambda/interop/model.go @@ -11,9 +11,9 @@ import ( "strings" "time" - "go.amzn.com/lambda/core/statejson" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/supervisor/model" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core/statejson" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/supervisor/model" log "github.com/sirupsen/logrus" ) @@ -84,6 +84,8 @@ func ConvertToFunctionResponseMode(value string) (FunctionResponseMode, error) { // Message is a generic interop message. type Message interface{} +type TenantID string + // Invoke is an invocation request received from the slicer. type Invoke struct { // Tracing header. @@ -91,6 +93,7 @@ type Invoke struct { TraceID string LambdaSegmentID string ID string + TenantID TenantID InvokedFunctionArn string CognitoIdentityID string CognitoIdentityPoolID string @@ -111,6 +114,7 @@ type Invoke struct { type Token struct { ReservationToken string InvokeID string + TenantID TenantID VersionID string FunctionTimeout time.Duration InvackDeadlineNs int64 diff --git a/lambda/interop/model_test.go b/internal/lambda/interop/model_test.go similarity index 96% rename from lambda/interop/model_test.go rename to internal/lambda/interop/model_test.go index d9ba36a..87fe56e 100644 --- a/lambda/interop/model_test.go +++ b/internal/lambda/interop/model_test.go @@ -7,7 +7,7 @@ import ( "fmt" "testing" - "go.amzn.com/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" "github.com/stretchr/testify/assert" ) diff --git a/lambda/interop/sandbox_model.go b/internal/lambda/interop/sandbox_model.go similarity index 98% rename from lambda/interop/sandbox_model.go rename to internal/lambda/interop/sandbox_model.go index 3011c48..8893cd8 100644 --- a/lambda/interop/sandbox_model.go +++ b/internal/lambda/interop/sandbox_model.go @@ -9,8 +9,8 @@ import ( "net/http" "time" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/rapidcore/env" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapidcore/env" ) // Init represents an init message diff --git a/lambda/logging/doc.go b/internal/lambda/logging/doc.go similarity index 100% rename from lambda/logging/doc.go rename to internal/lambda/logging/doc.go diff --git a/lambda/logging/internal_log.go b/internal/lambda/logging/internal_log.go similarity index 99% rename from lambda/logging/internal_log.go rename to internal/lambda/logging/internal_log.go index 018b2c7..9eefe12 100644 --- a/lambda/logging/internal_log.go +++ b/internal/lambda/logging/internal_log.go @@ -6,10 +6,11 @@ package logging import ( "bytes" "fmt" - "github.com/sirupsen/logrus" "io" "log" "strings" + + "github.com/sirupsen/logrus" ) // SetOutput configures logging output for standard loggers. diff --git a/lambda/logging/internal_log_test.go b/internal/lambda/logging/internal_log_test.go similarity index 100% rename from lambda/logging/internal_log_test.go rename to internal/lambda/logging/internal_log_test.go index 3ec537f..fd3f04d 100644 --- a/lambda/logging/internal_log_test.go +++ b/internal/lambda/logging/internal_log_test.go @@ -6,11 +6,12 @@ package logging import ( "bytes" "fmt" - "github.com/sirupsen/logrus" - "github.com/stretchr/testify/assert" "io" "log" "testing" + + "github.com/sirupsen/logrus" + "github.com/stretchr/testify/assert" ) func TestLogPrint(t *testing.T) { @@ -164,4 +165,3 @@ func BenchmarkLogrusDebugWithFieldLogLevelDisabledInternalFormatter(b *testing.B l.WithField("field", "value").Debug(1, "two", true) } } - diff --git a/lambda/metering/time.go b/internal/lambda/metering/time.go similarity index 100% rename from lambda/metering/time.go rename to internal/lambda/metering/time.go diff --git a/lambda/metering/time_test.go b/internal/lambda/metering/time_test.go similarity index 100% rename from lambda/metering/time_test.go rename to internal/lambda/metering/time_test.go diff --git a/lambda/rapi/extensions_fuzz_test.go b/internal/lambda/rapi/extensions_fuzz_test.go similarity index 92% rename from lambda/rapi/extensions_fuzz_test.go rename to internal/lambda/rapi/extensions_fuzz_test.go index c223859..1845a06 100644 --- a/lambda/rapi/extensions_fuzz_test.go +++ b/internal/lambda/rapi/extensions_fuzz_test.go @@ -13,17 +13,17 @@ import ( "net/http/httptest" "testing" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/extensions" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/handler" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/model" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/telemetry" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/testdata" "github.com/google/uuid" "github.com/stretchr/testify/assert" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/extensions" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/rapi/handler" - "go.amzn.com/lambda/rapi/model" - "go.amzn.com/lambda/rapi/rendering" - "go.amzn.com/lambda/telemetry" - "go.amzn.com/lambda/testdata" ) func FuzzAgentRegisterHandler(f *testing.F) { diff --git a/lambda/rapi/handler/agentexiterror.go b/internal/lambda/rapi/handler/agentexiterror.go similarity index 88% rename from lambda/rapi/handler/agentexiterror.go rename to internal/lambda/rapi/handler/agentexiterror.go index 245e155..3866a2f 100644 --- a/lambda/rapi/handler/agentexiterror.go +++ b/internal/lambda/rapi/handler/agentexiterror.go @@ -6,11 +6,11 @@ package handler import ( "net/http" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" "github.com/google/uuid" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/rapi/rendering" log "github.com/sirupsen/logrus" ) diff --git a/lambda/rapi/handler/agentiniterror.go b/internal/lambda/rapi/handler/agentiniterror.go similarity index 88% rename from lambda/rapi/handler/agentiniterror.go rename to internal/lambda/rapi/handler/agentiniterror.go index 0c18622..aa37ba6 100644 --- a/lambda/rapi/handler/agentiniterror.go +++ b/internal/lambda/rapi/handler/agentiniterror.go @@ -6,11 +6,11 @@ package handler import ( "net/http" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" "github.com/google/uuid" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/rapi/rendering" log "github.com/sirupsen/logrus" ) diff --git a/lambda/rapi/handler/agentiniterror_test.go b/internal/lambda/rapi/handler/agentiniterror_test.go similarity index 93% rename from lambda/rapi/handler/agentiniterror_test.go rename to internal/lambda/rapi/handler/agentiniterror_test.go index 50b9143..e91a758 100644 --- a/lambda/rapi/handler/agentiniterror_test.go +++ b/internal/lambda/rapi/handler/agentiniterror_test.go @@ -11,12 +11,12 @@ import ( "net/http/httptest" "testing" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/model" "github.com/google/uuid" "github.com/stretchr/testify/assert" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/rapi/model" ) func newRequest(appCtx appctx.ApplicationContext, agentID uuid.UUID) *http.Request { diff --git a/lambda/rapi/handler/agentnext.go b/internal/lambda/rapi/handler/agentnext.go similarity index 93% rename from lambda/rapi/handler/agentnext.go rename to internal/lambda/rapi/handler/agentnext.go index ffdd61d..73c69b3 100644 --- a/lambda/rapi/handler/agentnext.go +++ b/internal/lambda/rapi/handler/agentnext.go @@ -6,10 +6,10 @@ package handler import ( "net/http" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" "github.com/google/uuid" log "github.com/sirupsen/logrus" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/rapi/rendering" ) // A CtxKey type is used as a key for storing values in the request context. diff --git a/lambda/rapi/handler/agentnext_test.go b/internal/lambda/rapi/handler/agentnext_test.go similarity index 95% rename from lambda/rapi/handler/agentnext_test.go rename to internal/lambda/rapi/handler/agentnext_test.go index 417633e..4be8291 100644 --- a/lambda/rapi/handler/agentnext_test.go +++ b/internal/lambda/rapi/handler/agentnext_test.go @@ -15,14 +15,14 @@ import ( "testing" "time" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/metering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/model" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/telemetry" "github.com/google/uuid" "github.com/stretchr/testify/assert" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/metering" - "go.amzn.com/lambda/rapi/model" - "go.amzn.com/lambda/rapi/rendering" - "go.amzn.com/lambda/telemetry" ) func TestRenderAgentInternalError(t *testing.T) { diff --git a/lambda/rapi/handler/agentregister.go b/internal/lambda/rapi/handler/agentregister.go similarity index 96% rename from lambda/rapi/handler/agentregister.go rename to internal/lambda/rapi/handler/agentregister.go index 867ad9d..8b4e178 100644 --- a/lambda/rapi/handler/agentregister.go +++ b/internal/lambda/rapi/handler/agentregister.go @@ -10,10 +10,10 @@ import ( "net/http" "strings" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/model" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" log "github.com/sirupsen/logrus" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/rapi/model" - "go.amzn.com/lambda/rapi/rendering" ) type agentRegisterHandler struct { diff --git a/lambda/rapi/handler/agentregister_test.go b/internal/lambda/rapi/handler/agentregister_test.go similarity index 98% rename from lambda/rapi/handler/agentregister_test.go rename to internal/lambda/rapi/handler/agentregister_test.go index 7370c42..b2f02d4 100644 --- a/lambda/rapi/handler/agentregister_test.go +++ b/internal/lambda/rapi/handler/agentregister_test.go @@ -13,9 +13,9 @@ import ( "github.com/stretchr/testify/assert" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/model" "github.com/stretchr/testify/require" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/rapi/model" ) func registerRequestReader(req RegisterRequest) io.Reader { diff --git a/lambda/rapi/handler/constants.go b/internal/lambda/rapi/handler/constants.go similarity index 100% rename from lambda/rapi/handler/constants.go rename to internal/lambda/rapi/handler/constants.go diff --git a/lambda/rapi/handler/credentials.go b/internal/lambda/rapi/handler/credentials.go similarity index 92% rename from lambda/rapi/handler/credentials.go rename to internal/lambda/rapi/handler/credentials.go index f1536c4..7670791 100644 --- a/lambda/rapi/handler/credentials.go +++ b/internal/lambda/rapi/handler/credentials.go @@ -10,7 +10,7 @@ import ( log "github.com/sirupsen/logrus" - "go.amzn.com/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" ) type credentialsHandler struct { diff --git a/lambda/rapi/handler/credentials_test.go b/internal/lambda/rapi/handler/credentials_test.go similarity index 93% rename from lambda/rapi/handler/credentials_test.go rename to internal/lambda/rapi/handler/credentials_test.go index d5a1090..29c6924 100644 --- a/lambda/rapi/handler/credentials_test.go +++ b/internal/lambda/rapi/handler/credentials_test.go @@ -11,9 +11,9 @@ import ( "testing" "time" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/testdata" "github.com/stretchr/testify/assert" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/testdata" ) const InitCachingToken = "sampleInitCachingToken" diff --git a/lambda/rapi/handler/initerror.go b/internal/lambda/rapi/handler/initerror.go similarity index 86% rename from lambda/rapi/handler/initerror.go rename to internal/lambda/rapi/handler/initerror.go index 79daa1f..a5c36c2 100644 --- a/lambda/rapi/handler/initerror.go +++ b/internal/lambda/rapi/handler/initerror.go @@ -8,12 +8,12 @@ import ( "io" "net/http" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/rapi/rendering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" log "github.com/sirupsen/logrus" ) diff --git a/lambda/rapi/handler/initerror_test.go b/internal/lambda/rapi/handler/initerror_test.go similarity index 90% rename from lambda/rapi/handler/initerror_test.go rename to internal/lambda/rapi/handler/initerror_test.go index a9c4b94..c465ae0 100644 --- a/lambda/rapi/handler/initerror_test.go +++ b/internal/lambda/rapi/handler/initerror_test.go @@ -10,10 +10,10 @@ import ( "net/http/httptest" "testing" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/testdata" "github.com/stretchr/testify/require" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/testdata" ) // TestInitErrorHandler tests that API handler for diff --git a/lambda/rapi/handler/invocationerror.go b/internal/lambda/rapi/handler/invocationerror.go similarity index 90% rename from lambda/rapi/handler/invocationerror.go rename to internal/lambda/rapi/handler/invocationerror.go index afd346d..03766b3 100644 --- a/lambda/rapi/handler/invocationerror.go +++ b/internal/lambda/rapi/handler/invocationerror.go @@ -9,14 +9,14 @@ import ( "io" "net/http" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/rapi/model" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/model" - "go.amzn.com/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/rapi/rendering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" "github.com/go-chi/chi/v5" log "github.com/sirupsen/logrus" diff --git a/lambda/rapi/handler/invocationerror_test.go b/internal/lambda/rapi/handler/invocationerror_test.go similarity index 97% rename from lambda/rapi/handler/invocationerror_test.go rename to internal/lambda/rapi/handler/invocationerror_test.go index 76a3b4e..412119c 100644 --- a/lambda/rapi/handler/invocationerror_test.go +++ b/internal/lambda/rapi/handler/invocationerror_test.go @@ -13,11 +13,11 @@ import ( "strings" "testing" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/rapi/model" - "go.amzn.com/lambda/testdata" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/model" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/testdata" "github.com/go-chi/chi/v5" "github.com/stretchr/testify/assert" diff --git a/lambda/rapi/handler/invocationnext.go b/internal/lambda/rapi/handler/invocationnext.go similarity index 88% rename from lambda/rapi/handler/invocationnext.go rename to internal/lambda/rapi/handler/invocationnext.go index f8fc89c..7035755 100644 --- a/lambda/rapi/handler/invocationnext.go +++ b/internal/lambda/rapi/handler/invocationnext.go @@ -6,8 +6,8 @@ package handler import ( "net/http" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/rapi/rendering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" log "github.com/sirupsen/logrus" ) diff --git a/lambda/rapi/handler/invocationnext_test.go b/internal/lambda/rapi/handler/invocationnext_test.go similarity index 94% rename from lambda/rapi/handler/invocationnext_test.go rename to internal/lambda/rapi/handler/invocationnext_test.go index 64ae057..7dd7f07 100644 --- a/lambda/rapi/handler/invocationnext_test.go +++ b/internal/lambda/rapi/handler/invocationnext_test.go @@ -22,11 +22,11 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/metering" - "go.amzn.com/lambda/telemetry" - "go.amzn.com/lambda/testdata" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/metering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/telemetry" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/testdata" ) // TestRenderInvokeEmptyHeaders tests that headers diff --git a/lambda/rapi/handler/invocationresponse.go b/internal/lambda/rapi/handler/invocationresponse.go similarity index 89% rename from lambda/rapi/handler/invocationresponse.go rename to internal/lambda/rapi/handler/invocationresponse.go index ba08b14..553927d 100644 --- a/lambda/rapi/handler/invocationresponse.go +++ b/internal/lambda/rapi/handler/invocationresponse.go @@ -6,11 +6,11 @@ package handler import ( "net/http" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/rapi/rendering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" "github.com/go-chi/chi/v5" log "github.com/sirupsen/logrus" diff --git a/lambda/rapi/handler/invocationresponse_test.go b/internal/lambda/rapi/handler/invocationresponse_test.go similarity index 96% rename from lambda/rapi/handler/invocationresponse_test.go rename to internal/lambda/rapi/handler/invocationresponse_test.go index dc29c10..bc3d80b 100644 --- a/lambda/rapi/handler/invocationresponse_test.go +++ b/internal/lambda/rapi/handler/invocationresponse_test.go @@ -15,11 +15,11 @@ import ( "testing" "github.com/aws/aws-lambda-go/events/test" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/testdata" "github.com/stretchr/testify/assert" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/testdata" ) func TestResponseTooLarge(t *testing.T) { diff --git a/lambda/rapi/handler/mime_type_error_cause_json.go b/internal/lambda/rapi/handler/mime_type_error_cause_json.go similarity index 95% rename from lambda/rapi/handler/mime_type_error_cause_json.go rename to internal/lambda/rapi/handler/mime_type_error_cause_json.go index d66ab88..d815409 100644 --- a/lambda/rapi/handler/mime_type_error_cause_json.go +++ b/internal/lambda/rapi/handler/mime_type_error_cause_json.go @@ -7,7 +7,7 @@ import ( "encoding/json" "fmt" - "go.amzn.com/lambda/rapi/model" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/model" log "github.com/sirupsen/logrus" ) diff --git a/lambda/rapi/handler/ping.go b/internal/lambda/rapi/handler/ping.go similarity index 100% rename from lambda/rapi/handler/ping.go rename to internal/lambda/rapi/handler/ping.go diff --git a/lambda/rapi/handler/restoreerror.go b/internal/lambda/rapi/handler/restoreerror.go similarity index 76% rename from lambda/rapi/handler/restoreerror.go rename to internal/lambda/rapi/handler/restoreerror.go index eed97b2..e39d7c4 100644 --- a/lambda/rapi/handler/restoreerror.go +++ b/internal/lambda/rapi/handler/restoreerror.go @@ -6,12 +6,12 @@ package handler import ( "net/http" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" log "github.com/sirupsen/logrus" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/rapi/rendering" ) type restoreErrorHandler struct { diff --git a/lambda/rapi/handler/restoreerror_test.go b/internal/lambda/rapi/handler/restoreerror_test.go similarity index 89% rename from lambda/rapi/handler/restoreerror_test.go rename to internal/lambda/rapi/handler/restoreerror_test.go index 57226fa..c8f630c 100644 --- a/lambda/rapi/handler/restoreerror_test.go +++ b/internal/lambda/rapi/handler/restoreerror_test.go @@ -10,9 +10,9 @@ import ( "net/http/httptest" "testing" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/testdata" "github.com/stretchr/testify/require" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/testdata" ) func TestRestoreErrorHandler(t *testing.T) { diff --git a/lambda/rapi/handler/restorenext.go b/internal/lambda/rapi/handler/restorenext.go similarity index 87% rename from lambda/rapi/handler/restorenext.go rename to internal/lambda/rapi/handler/restorenext.go index ecff059..3a5922a 100644 --- a/lambda/rapi/handler/restorenext.go +++ b/internal/lambda/rapi/handler/restorenext.go @@ -6,9 +6,9 @@ package handler import ( "net/http" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" log "github.com/sirupsen/logrus" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/rapi/rendering" ) type restoreNextHandler struct { diff --git a/lambda/rapi/handler/restorenext_test.go b/internal/lambda/rapi/handler/restorenext_test.go similarity index 90% rename from lambda/rapi/handler/restorenext_test.go rename to internal/lambda/rapi/handler/restorenext_test.go index 7018d98..d25d1b4 100644 --- a/lambda/rapi/handler/restorenext_test.go +++ b/internal/lambda/rapi/handler/restorenext_test.go @@ -11,11 +11,11 @@ import ( "strings" "testing" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/telemetry" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/testdata" "github.com/stretchr/testify/assert" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/telemetry" - "go.amzn.com/lambda/testdata" ) func TestRenderRestoreNext(t *testing.T) { diff --git a/lambda/rapi/handler/runtimelogs.go b/internal/lambda/rapi/handler/runtimelogs.go similarity index 94% rename from lambda/rapi/handler/runtimelogs.go rename to internal/lambda/rapi/handler/runtimelogs.go index 4fd534e..c42e58d 100644 --- a/lambda/rapi/handler/runtimelogs.go +++ b/internal/lambda/rapi/handler/runtimelogs.go @@ -11,9 +11,9 @@ import ( "net/http" "strings" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/rapi/rendering" - "go.amzn.com/lambda/telemetry" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/telemetry" "github.com/google/uuid" log "github.com/sirupsen/logrus" diff --git a/lambda/rapi/handler/runtimelogs_stub.go b/internal/lambda/rapi/handler/runtimelogs_stub.go similarity index 91% rename from lambda/rapi/handler/runtimelogs_stub.go rename to internal/lambda/rapi/handler/runtimelogs_stub.go index f540e9b..4f2e5e3 100644 --- a/lambda/rapi/handler/runtimelogs_stub.go +++ b/internal/lambda/rapi/handler/runtimelogs_stub.go @@ -6,9 +6,9 @@ package handler import ( "net/http" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/model" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" log "github.com/sirupsen/logrus" - "go.amzn.com/lambda/rapi/model" - "go.amzn.com/lambda/rapi/rendering" ) const ( diff --git a/lambda/rapi/handler/runtimelogs_stub_test.go b/internal/lambda/rapi/handler/runtimelogs_stub_test.go similarity index 100% rename from lambda/rapi/handler/runtimelogs_stub_test.go rename to internal/lambda/rapi/handler/runtimelogs_stub_test.go diff --git a/lambda/rapi/handler/runtimelogs_test.go b/internal/lambda/rapi/handler/runtimelogs_test.go similarity index 98% rename from lambda/rapi/handler/runtimelogs_test.go rename to internal/lambda/rapi/handler/runtimelogs_test.go index cbb8b0b..fcfb5de 100644 --- a/lambda/rapi/handler/runtimelogs_test.go +++ b/internal/lambda/rapi/handler/runtimelogs_test.go @@ -14,9 +14,9 @@ import ( "net/http/httptest" "testing" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/telemetry" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/telemetry" "github.com/google/uuid" "github.com/stretchr/testify/assert" diff --git a/lambda/rapi/middleware/middleware.go b/internal/lambda/rapi/middleware/middleware.go similarity index 90% rename from lambda/rapi/middleware/middleware.go rename to internal/lambda/rapi/middleware/middleware.go index a83a232..0792edc 100644 --- a/lambda/rapi/middleware/middleware.go +++ b/internal/lambda/rapi/middleware/middleware.go @@ -7,13 +7,13 @@ import ( "context" "net/http" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/extensions" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/handler" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" "github.com/google/uuid" - "go.amzn.com/lambda/extensions" - "go.amzn.com/lambda/rapi/handler" - "go.amzn.com/lambda/rapi/rendering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" "github.com/go-chi/chi/v5" - "go.amzn.com/lambda/appctx" log "github.com/sirupsen/logrus" ) diff --git a/lambda/rapi/middleware/middleware_test.go b/internal/lambda/rapi/middleware/middleware_test.go similarity index 92% rename from lambda/rapi/middleware/middleware_test.go rename to internal/lambda/rapi/middleware/middleware_test.go index 51c9a90..2ebad22 100644 --- a/lambda/rapi/middleware/middleware_test.go +++ b/internal/lambda/rapi/middleware/middleware_test.go @@ -12,13 +12,13 @@ import ( "net/http/httptest" "testing" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/extensions" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/handler" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/model" "github.com/go-chi/chi/v5" "github.com/google/uuid" "github.com/stretchr/testify/assert" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/extensions" - "go.amzn.com/lambda/rapi/handler" - "go.amzn.com/lambda/rapi/model" ) type mockHandler struct{} diff --git a/lambda/rapi/model/agentevent.go b/internal/lambda/rapi/model/agentevent.go similarity index 100% rename from lambda/rapi/model/agentevent.go rename to internal/lambda/rapi/model/agentevent.go diff --git a/lambda/rapi/model/agentregisterresponse.go b/internal/lambda/rapi/model/agentregisterresponse.go similarity index 100% rename from lambda/rapi/model/agentregisterresponse.go rename to internal/lambda/rapi/model/agentregisterresponse.go diff --git a/lambda/rapi/model/cognitoidentity.go b/internal/lambda/rapi/model/cognitoidentity.go similarity index 100% rename from lambda/rapi/model/cognitoidentity.go rename to internal/lambda/rapi/model/cognitoidentity.go diff --git a/lambda/rapi/model/error_cause.go b/internal/lambda/rapi/model/error_cause.go similarity index 100% rename from lambda/rapi/model/error_cause.go rename to internal/lambda/rapi/model/error_cause.go diff --git a/lambda/rapi/model/error_cause_compactor.go b/internal/lambda/rapi/model/error_cause_compactor.go similarity index 100% rename from lambda/rapi/model/error_cause_compactor.go rename to internal/lambda/rapi/model/error_cause_compactor.go diff --git a/lambda/rapi/model/error_cause_compactor_test.go b/internal/lambda/rapi/model/error_cause_compactor_test.go similarity index 100% rename from lambda/rapi/model/error_cause_compactor_test.go rename to internal/lambda/rapi/model/error_cause_compactor_test.go diff --git a/lambda/rapi/model/error_cause_test.go b/internal/lambda/rapi/model/error_cause_test.go similarity index 100% rename from lambda/rapi/model/error_cause_test.go rename to internal/lambda/rapi/model/error_cause_test.go diff --git a/lambda/rapi/model/errorresponse.go b/internal/lambda/rapi/model/errorresponse.go similarity index 100% rename from lambda/rapi/model/errorresponse.go rename to internal/lambda/rapi/model/errorresponse.go diff --git a/lambda/rapi/model/statusresponse.go b/internal/lambda/rapi/model/statusresponse.go similarity index 100% rename from lambda/rapi/model/statusresponse.go rename to internal/lambda/rapi/model/statusresponse.go diff --git a/lambda/rapi/model/tracing.go b/internal/lambda/rapi/model/tracing.go similarity index 100% rename from lambda/rapi/model/tracing.go rename to internal/lambda/rapi/model/tracing.go diff --git a/lambda/rapi/rapi_fuzz_test.go b/internal/lambda/rapi/rapi_fuzz_test.go similarity index 96% rename from lambda/rapi/rapi_fuzz_test.go rename to internal/lambda/rapi/rapi_fuzz_test.go index f1df47f..37582a8 100644 --- a/lambda/rapi/rapi_fuzz_test.go +++ b/internal/lambda/rapi/rapi_fuzz_test.go @@ -20,13 +20,13 @@ import ( "testing" "unicode" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/extensions" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/telemetry" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/testdata" "github.com/stretchr/testify/assert" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/extensions" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/telemetry" - "go.amzn.com/lambda/testdata" ) type runtimeFunctionErrStruct struct { diff --git a/lambda/rapi/rendering/doc.go b/internal/lambda/rapi/rendering/doc.go similarity index 100% rename from lambda/rapi/rendering/doc.go rename to internal/lambda/rapi/rendering/doc.go diff --git a/lambda/rapi/rendering/render_error.go b/internal/lambda/rapi/rendering/render_error.go similarity index 95% rename from lambda/rapi/rendering/render_error.go rename to internal/lambda/rapi/rendering/render_error.go index 151e606..e6a5fe3 100644 --- a/lambda/rapi/rendering/render_error.go +++ b/internal/lambda/rapi/rendering/render_error.go @@ -7,9 +7,9 @@ import ( "fmt" "net/http" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/model" log "github.com/sirupsen/logrus" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/rapi/model" ) // RenderForbiddenWithTypeMsg method for rendering error response diff --git a/lambda/rapi/rendering/render_json.go b/internal/lambda/rapi/rendering/render_json.go similarity index 100% rename from lambda/rapi/rendering/render_json.go rename to internal/lambda/rapi/rendering/render_json.go diff --git a/lambda/rapi/rendering/rendering.go b/internal/lambda/rapi/rendering/rendering.go similarity index 95% rename from lambda/rapi/rendering/rendering.go rename to internal/lambda/rapi/rendering/rendering.go index 9a9d77b..21d817f 100644 --- a/lambda/rapi/rendering/rendering.go +++ b/internal/lambda/rapi/rendering/rendering.go @@ -14,9 +14,9 @@ import ( "sync" "time" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/metering" - "go.amzn.com/lambda/rapi/model" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/metering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/model" "github.com/google/uuid" log "github.com/sirupsen/logrus" @@ -211,7 +211,7 @@ func (s *InvokeRenderer) RenderRuntimeEvent(writer http.ResponseWriter, request } renderInvokeHeaders(writer, invoke.ID, customerTraceID, invoke.ClientContext, - cognitoIdentityJSON, invoke.InvokedFunctionArn, deadlineHeader, invoke.ContentType) + cognitoIdentityJSON, invoke.InvokedFunctionArn, deadlineHeader, invoke.ContentType, invoke.TenantID) if invoke.Payload != nil { if err := s.bufferInvokeRequest(); err != nil { @@ -253,7 +253,7 @@ func (s *ShutdownRenderer) RenderRuntimeEvent(w http.ResponseWriter, r *http.Req } func renderInvokeHeaders(writer http.ResponseWriter, invokeID string, customerTraceID string, clientContext string, - cognitoIdentity string, invokedFunctionArn string, deadlineMs string, contentType string) { + cognitoIdentity string, invokedFunctionArn string, deadlineMs string, contentType string, tenantID interop.TenantID) { setHeaderIfNotEmpty := func(headers http.Header, key string, value string) { if value != "" { @@ -268,6 +268,7 @@ func renderInvokeHeaders(writer http.ResponseWriter, invokeID string, customerTr setHeaderIfNotEmpty(headers, "Lambda-Runtime-Cognito-Identity", cognitoIdentity) setHeaderIfNotEmpty(headers, "Lambda-Runtime-Invoked-Function-Arn", invokedFunctionArn) setHeaderIfNotEmpty(headers, "Lambda-Runtime-Deadline-Ms", deadlineMs) + setHeaderIfNotEmpty(headers, "Lambda-Runtime-Aws-Tenant-Id", string(tenantID)) if contentType == "" { contentType = "application/json" } diff --git a/lambda/rapi/router.go b/internal/lambda/rapi/router.go similarity index 90% rename from lambda/rapi/router.go rename to internal/lambda/rapi/router.go index 9933550..eb28de2 100644 --- a/lambda/rapi/router.go +++ b/internal/lambda/rapi/router.go @@ -6,15 +6,15 @@ package rapi import ( "net/http" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/rapi/handler" - "go.amzn.com/lambda/rapi/middleware" - "go.amzn.com/lambda/telemetry" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/handler" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/middleware" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/telemetry" "github.com/go-chi/chi/v5" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/rapi/rendering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" ) // NewRouter returns a new instance of chi router implementing diff --git a/lambda/rapi/router_test.go b/internal/lambda/rapi/router_test.go similarity index 98% rename from lambda/rapi/router_test.go rename to internal/lambda/rapi/router_test.go index 276fa53..f7ddeb5 100644 --- a/lambda/rapi/router_test.go +++ b/internal/lambda/rapi/router_test.go @@ -16,10 +16,10 @@ import ( "github.com/google/uuid" "github.com/stretchr/testify/assert" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/rapi/model" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/model" - "go.amzn.com/lambda/testdata" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/testdata" ) func createInvoke(id string) *interop.Invoke { diff --git a/lambda/rapi/security_test.go b/internal/lambda/rapi/security_test.go similarity index 98% rename from lambda/rapi/security_test.go rename to internal/lambda/rapi/security_test.go index 3f869d5..7c362bd 100644 --- a/lambda/rapi/security_test.go +++ b/internal/lambda/rapi/security_test.go @@ -12,7 +12,7 @@ import ( "github.com/stretchr/testify/assert" - "go.amzn.com/lambda/testdata" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/testdata" ) // Verify that state machine will accept response and error with valid invoke id diff --git a/lambda/rapi/server.go b/internal/lambda/rapi/server.go similarity index 90% rename from lambda/rapi/server.go rename to internal/lambda/rapi/server.go index aafc295..cbb5307 100644 --- a/lambda/rapi/server.go +++ b/internal/lambda/rapi/server.go @@ -9,13 +9,13 @@ import ( "net" "net/http" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" "github.com/go-chi/chi/v5" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/rapi/rendering" - "go.amzn.com/lambda/telemetry" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/telemetry" log "github.com/sirupsen/logrus" ) diff --git a/lambda/rapi/server_test.go b/internal/lambda/rapi/server_test.go similarity index 97% rename from lambda/rapi/server_test.go rename to internal/lambda/rapi/server_test.go index cf31fab..2a099f6 100644 --- a/lambda/rapi/server_test.go +++ b/internal/lambda/rapi/server_test.go @@ -12,7 +12,7 @@ import ( "testing" "time" - "go.amzn.com/lambda/testdata" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/testdata" "github.com/stretchr/testify/assert" ) diff --git a/lambda/rapi/telemetry_logs_fuzz_test.go b/internal/lambda/rapi/telemetry_logs_fuzz_test.go similarity index 92% rename from lambda/rapi/telemetry_logs_fuzz_test.go rename to internal/lambda/rapi/telemetry_logs_fuzz_test.go index 89adbd1..bffdba6 100644 --- a/lambda/rapi/telemetry_logs_fuzz_test.go +++ b/internal/lambda/rapi/telemetry_logs_fuzz_test.go @@ -11,13 +11,13 @@ import ( "net/http/httptest" "testing" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/extensions" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/handler" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/telemetry" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/testdata" "github.com/google/uuid" "github.com/stretchr/testify/assert" - "go.amzn.com/lambda/extensions" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/rapi/handler" - "go.amzn.com/lambda/telemetry" - "go.amzn.com/lambda/testdata" ) const ( diff --git a/lambda/rapid/exit.go b/internal/lambda/rapid/exit.go similarity index 92% rename from lambda/rapid/exit.go rename to internal/lambda/rapid/exit.go index a601efc..2a8595b 100644 --- a/lambda/rapid/exit.go +++ b/internal/lambda/rapid/exit.go @@ -6,11 +6,11 @@ package rapid import ( "time" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/extensions" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/telemetry" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/extensions" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/telemetry" log "github.com/sirupsen/logrus" ) diff --git a/lambda/rapid/handlers.go b/internal/lambda/rapid/handlers.go similarity index 96% rename from lambda/rapid/handlers.go rename to internal/lambda/rapid/handlers.go index 2e759e9..dba1314 100644 --- a/lambda/rapid/handlers.go +++ b/internal/lambda/rapid/handlers.go @@ -15,18 +15,18 @@ import ( "sync" "time" - "go.amzn.com/lambda/agents" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/extensions" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/metering" - "go.amzn.com/lambda/rapi" - "go.amzn.com/lambda/rapi/rendering" - "go.amzn.com/lambda/rapidcore/env" - supvmodel "go.amzn.com/lambda/supervisor/model" - "go.amzn.com/lambda/telemetry" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/agents" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/extensions" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/metering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapidcore/env" + supvmodel "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/supervisor/model" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/telemetry" "github.com/google/uuid" log "github.com/sirupsen/logrus" @@ -41,7 +41,7 @@ const ( const ( // Same value as defined in LambdaSandbox minus 1. - maxExtensionNamesLength = 127 + maxExtensionNamesLength = 127 standaloneShutdownReason = "spindown" ) @@ -420,7 +420,7 @@ func doInvoke(execCtx *rapidContext, invokeRequest *interop.Invoke, mx *invokeMe if err := xray.CaptureInitSubsegment(ctx, func(ctx context.Context) error { return doRuntimeDomainInit(execCtx, sbInfoFromInit, interop.LifecyclePhaseInvoke) }); err != nil { - sendInvokeStartLogEvent(execCtx, invokeRequest.ID, telemetryTracingCtx) + sendInvokeStartLogEvent(execCtx, invokeRequest.ID, invokeRequest.TenantID, telemetryTracingCtx) return err } } else if sbInfoFromInit.SandboxType != interop.SandboxPreWarmed && !execCtx.initCachingEnabled { @@ -429,7 +429,7 @@ func doInvoke(execCtx *rapidContext, invokeRequest *interop.Invoke, mx *invokeMe xray.SendRestoreSubsegmentWithRecordedTimesOnce(ctx) - sendInvokeStartLogEvent(execCtx, invokeRequest.ID, telemetryTracingCtx) + sendInvokeStartLogEvent(execCtx, invokeRequest.ID, invokeRequest.TenantID, telemetryTracingCtx) invokeFlow := execCtx.invokeFlow log.Debug("Initialize invoke flow barriers") @@ -500,6 +500,7 @@ func doInvoke(execCtx *rapidContext, invokeRequest *interop.Invoke, mx *invokeMe InternalMetrics: invokeRequest.InvokeResponseMetrics, Tracing: xray.BuildTracingCtxAfterInvokeComplete(), Spans: execCtx.eventsAPI.GetRuntimeDoneSpans(execCtx.RuntimeStartedTime, invokeRequest.InvokeResponseMetrics, execCtx.RuntimeOverheadStartedTime, mx.runtimeReadyTime), + TenantID: invokeRequest.TenantID, } log.Info(runtimeDoneEventData.String()) if err := execCtx.eventsAPI.SendInvokeRuntimeDone(runtimeDoneEventData); err != nil { @@ -982,11 +983,12 @@ func sendInitReportLogEvent( } } -func sendInvokeStartLogEvent(execCtx *rapidContext, invokeRequestID string, tracingCtx *interop.TracingCtx) { +func sendInvokeStartLogEvent(execCtx *rapidContext, invokeRequestID string, tenantID interop.TenantID, tracingCtx *interop.TracingCtx) { invokeStartData := interop.InvokeStartData{ RequestID: invokeRequestID, Version: execCtx.registrationService.GetFunctionMetadata().FunctionVersion, Tracing: tracingCtx, + TenantID: tenantID, } log.Info(invokeStartData.String()) diff --git a/lambda/rapid/handlers_test.go b/internal/lambda/rapid/handlers_test.go similarity index 90% rename from lambda/rapid/handlers_test.go rename to internal/lambda/rapid/handlers_test.go index 089dbb7..ee4f19c 100644 --- a/lambda/rapid/handlers_test.go +++ b/internal/lambda/rapid/handlers_test.go @@ -17,17 +17,17 @@ import ( "testing" "time" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/rapi" - "go.amzn.com/lambda/rapi/handler" - "go.amzn.com/lambda/rapi/rendering" - "go.amzn.com/lambda/rapidcore/env" - "go.amzn.com/lambda/supervisor/model" - "go.amzn.com/lambda/telemetry" - "go.amzn.com/lambda/testdata" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/handler" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapidcore/env" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/supervisor/model" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/telemetry" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/testdata" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" diff --git a/lambda/rapid/sandbox.go b/internal/lambda/rapid/sandbox.go similarity index 92% rename from lambda/rapid/sandbox.go rename to internal/lambda/rapid/sandbox.go index 26eaff0..0ef3d0f 100644 --- a/lambda/rapid/sandbox.go +++ b/internal/lambda/rapid/sandbox.go @@ -10,13 +10,13 @@ import ( "io" "sync" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/rapi" - "go.amzn.com/lambda/rapi/rendering" - supvmodel "go.amzn.com/lambda/supervisor/model" - "go.amzn.com/lambda/telemetry" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" + supvmodel "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/supervisor/model" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/telemetry" ) type Sandbox struct { diff --git a/lambda/rapid/shutdown.go b/internal/lambda/rapid/shutdown.go similarity index 96% rename from lambda/rapid/shutdown.go rename to internal/lambda/rapid/shutdown.go index 05695e3..9911a5d 100644 --- a/lambda/rapid/shutdown.go +++ b/internal/lambda/rapid/shutdown.go @@ -11,12 +11,12 @@ import ( "sync" "time" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/metering" - "go.amzn.com/lambda/rapi/model" - "go.amzn.com/lambda/rapi/rendering" - supvmodel "go.amzn.com/lambda/supervisor/model" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/metering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/model" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" + supvmodel "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/supervisor/model" log "github.com/sirupsen/logrus" ) diff --git a/lambda/rapidcore/env/constants.go b/internal/lambda/rapidcore/env/constants.go similarity index 100% rename from lambda/rapidcore/env/constants.go rename to internal/lambda/rapidcore/env/constants.go diff --git a/lambda/rapidcore/env/customer.go b/internal/lambda/rapidcore/env/customer.go similarity index 100% rename from lambda/rapidcore/env/customer.go rename to internal/lambda/rapidcore/env/customer.go diff --git a/lambda/rapidcore/env/environment.go b/internal/lambda/rapidcore/env/environment.go similarity index 100% rename from lambda/rapidcore/env/environment.go rename to internal/lambda/rapidcore/env/environment.go diff --git a/lambda/rapidcore/env/environment_test.go b/internal/lambda/rapidcore/env/environment_test.go similarity index 100% rename from lambda/rapidcore/env/environment_test.go rename to internal/lambda/rapidcore/env/environment_test.go diff --git a/lambda/rapidcore/env/rapidenv.go b/internal/lambda/rapidcore/env/rapidenv.go similarity index 100% rename from lambda/rapidcore/env/rapidenv.go rename to internal/lambda/rapidcore/env/rapidenv.go diff --git a/lambda/rapidcore/env/util.go b/internal/lambda/rapidcore/env/util.go similarity index 100% rename from lambda/rapidcore/env/util.go rename to internal/lambda/rapidcore/env/util.go diff --git a/lambda/rapidcore/env/util_test.go b/internal/lambda/rapidcore/env/util_test.go similarity index 100% rename from lambda/rapidcore/env/util_test.go rename to internal/lambda/rapidcore/env/util_test.go diff --git a/lambda/rapidcore/errors.go b/internal/lambda/rapidcore/errors.go similarity index 100% rename from lambda/rapidcore/errors.go rename to internal/lambda/rapidcore/errors.go diff --git a/lambda/rapidcore/runtime_release.go b/internal/lambda/rapidcore/runtime_release.go similarity index 100% rename from lambda/rapidcore/runtime_release.go rename to internal/lambda/rapidcore/runtime_release.go diff --git a/lambda/rapidcore/runtime_release_test.go b/internal/lambda/rapidcore/runtime_release_test.go similarity index 100% rename from lambda/rapidcore/runtime_release_test.go rename to internal/lambda/rapidcore/runtime_release_test.go diff --git a/lambda/rapidcore/sandbox_api.go b/internal/lambda/rapidcore/sandbox_api.go similarity index 97% rename from lambda/rapidcore/sandbox_api.go rename to internal/lambda/rapidcore/sandbox_api.go index 2e8d713..89f803b 100644 --- a/lambda/rapidcore/sandbox_api.go +++ b/internal/lambda/rapidcore/sandbox_api.go @@ -6,8 +6,8 @@ package rapidcore import ( "bytes" - "go.amzn.com/lambda/extensions" - "go.amzn.com/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/extensions" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" ) // SandboxContext and other structs form the implementation of the SandboxAPI diff --git a/lambda/rapidcore/sandbox_builder.go b/internal/lambda/rapidcore/sandbox_builder.go similarity index 90% rename from lambda/rapidcore/sandbox_builder.go rename to internal/lambda/rapidcore/sandbox_builder.go index f51acda..18e842b 100644 --- a/lambda/rapidcore/sandbox_builder.go +++ b/internal/lambda/rapidcore/sandbox_builder.go @@ -12,13 +12,13 @@ import ( "strconv" "syscall" - "go.amzn.com/lambda/extensions" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/logging" - "go.amzn.com/lambda/rapid" - "go.amzn.com/lambda/supervisor" - supvmodel "go.amzn.com/lambda/supervisor/model" - "go.amzn.com/lambda/telemetry" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/extensions" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/logging" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapid" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/supervisor" + supvmodel "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/supervisor/model" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/telemetry" log "github.com/sirupsen/logrus" ) diff --git a/lambda/rapidcore/sandbox_emulator_api.go b/internal/lambda/rapidcore/sandbox_emulator_api.go similarity index 95% rename from lambda/rapidcore/sandbox_emulator_api.go rename to internal/lambda/rapidcore/sandbox_emulator_api.go index 4cc2183..d5c1d47 100644 --- a/lambda/rapidcore/sandbox_emulator_api.go +++ b/internal/lambda/rapidcore/sandbox_emulator_api.go @@ -4,7 +4,7 @@ package rapidcore import ( - "go.amzn.com/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" "net/http" ) diff --git a/lambda/rapidcore/server.go b/internal/lambda/rapidcore/server.go similarity index 98% rename from lambda/rapidcore/server.go rename to internal/lambda/rapidcore/server.go index e903ebe..1ec0215 100644 --- a/lambda/rapidcore/server.go +++ b/internal/lambda/rapidcore/server.go @@ -14,11 +14,11 @@ import ( "sync" "time" - "go.amzn.com/lambda/core/directinvoke" - "go.amzn.com/lambda/core/statejson" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/metering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core/directinvoke" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core/statejson" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/metering" "github.com/google/uuid" log "github.com/sirupsen/logrus" diff --git a/lambda/rapidcore/server_test.go b/internal/lambda/rapidcore/server_test.go similarity index 98% rename from lambda/rapidcore/server_test.go rename to internal/lambda/rapidcore/server_test.go index 68ac30c..2c815ad 100644 --- a/lambda/rapidcore/server_test.go +++ b/internal/lambda/rapidcore/server_test.go @@ -12,10 +12,10 @@ import ( "testing" "time" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core/statejson" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapidcore/env" "github.com/stretchr/testify/require" - "go.amzn.com/lambda/core/statejson" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/rapidcore/env" ) func waitForChanWithTimeout(channel <-chan error, timeout time.Duration) error { diff --git a/lambda/rapidcore/standalone/directInvokeHandler.go b/internal/lambda/rapidcore/standalone/directInvokeHandler.go similarity index 86% rename from lambda/rapidcore/standalone/directInvokeHandler.go rename to internal/lambda/rapidcore/standalone/directInvokeHandler.go index 1c7e7cb..bf74128 100644 --- a/lambda/rapidcore/standalone/directInvokeHandler.go +++ b/internal/lambda/rapidcore/standalone/directInvokeHandler.go @@ -4,12 +4,12 @@ package standalone import ( - "go.amzn.com/lambda/rapidcore" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapidcore" "net/http" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core/directinvoke" log "github.com/sirupsen/logrus" - "go.amzn.com/lambda/core/directinvoke" ) func DirectInvokeHandler(w http.ResponseWriter, r *http.Request, s InteropServer) { diff --git a/lambda/rapidcore/standalone/eventLogHandler.go b/internal/lambda/rapidcore/standalone/eventLogHandler.go similarity index 82% rename from lambda/rapidcore/standalone/eventLogHandler.go rename to internal/lambda/rapidcore/standalone/eventLogHandler.go index e5bf7ac..17c7134 100644 --- a/lambda/rapidcore/standalone/eventLogHandler.go +++ b/internal/lambda/rapidcore/standalone/eventLogHandler.go @@ -8,7 +8,7 @@ import ( "fmt" "net/http" - "go.amzn.com/lambda/rapidcore/standalone/telemetry" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapidcore/standalone/telemetry" ) func EventLogHandler(w http.ResponseWriter, r *http.Request, eventsAPI *telemetry.StandaloneEventsAPI) { diff --git a/lambda/rapidcore/standalone/executeHandler.go b/internal/lambda/rapidcore/standalone/executeHandler.go similarity index 90% rename from lambda/rapidcore/standalone/executeHandler.go rename to internal/lambda/rapidcore/standalone/executeHandler.go index 0c7162b..a21ca00 100644 --- a/lambda/rapidcore/standalone/executeHandler.go +++ b/internal/lambda/rapidcore/standalone/executeHandler.go @@ -6,10 +6,10 @@ package standalone import ( "net/http" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/metering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapidcore" log "github.com/sirupsen/logrus" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/metering" - "go.amzn.com/lambda/rapidcore" ) func Execute(w http.ResponseWriter, r *http.Request, sandbox rapidcore.LambdaInvokeAPI) { diff --git a/lambda/rapidcore/standalone/initHandler.go b/internal/lambda/rapidcore/standalone/initHandler.go similarity index 95% rename from lambda/rapidcore/standalone/initHandler.go rename to internal/lambda/rapidcore/standalone/initHandler.go index d60ec6f..d7c3370 100644 --- a/lambda/rapidcore/standalone/initHandler.go +++ b/internal/lambda/rapidcore/standalone/initHandler.go @@ -9,8 +9,8 @@ import ( "os" "time" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/rapidcore/env" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapidcore/env" ) type RuntimeInfo struct { diff --git a/lambda/rapidcore/standalone/internalStateHandler.go b/internal/lambda/rapidcore/standalone/internalStateHandler.go similarity index 100% rename from lambda/rapidcore/standalone/internalStateHandler.go rename to internal/lambda/rapidcore/standalone/internalStateHandler.go diff --git a/lambda/rapidcore/standalone/invokeHandler.go b/internal/lambda/rapidcore/standalone/invokeHandler.go similarity index 89% rename from lambda/rapidcore/standalone/invokeHandler.go rename to internal/lambda/rapidcore/standalone/invokeHandler.go index 48a3a03..4d06585 100644 --- a/lambda/rapidcore/standalone/invokeHandler.go +++ b/internal/lambda/rapidcore/standalone/invokeHandler.go @@ -8,9 +8,9 @@ import ( "net/http" "strconv" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/metering" - "go.amzn.com/lambda/rapidcore" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/metering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapidcore" log "github.com/sirupsen/logrus" ) diff --git a/lambda/rapidcore/standalone/middleware.go b/internal/lambda/rapidcore/standalone/middleware.go similarity index 100% rename from lambda/rapidcore/standalone/middleware.go rename to internal/lambda/rapidcore/standalone/middleware.go diff --git a/lambda/rapidcore/standalone/pingHandler.go b/internal/lambda/rapidcore/standalone/pingHandler.go similarity index 100% rename from lambda/rapidcore/standalone/pingHandler.go rename to internal/lambda/rapidcore/standalone/pingHandler.go diff --git a/lambda/rapidcore/standalone/reserveHandler.go b/internal/lambda/rapidcore/standalone/reserveHandler.go similarity index 81% rename from lambda/rapidcore/standalone/reserveHandler.go rename to internal/lambda/rapidcore/standalone/reserveHandler.go index 52b51cd..a56818e 100644 --- a/lambda/rapidcore/standalone/reserveHandler.go +++ b/internal/lambda/rapidcore/standalone/reserveHandler.go @@ -6,10 +6,10 @@ package standalone import ( "net/http" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core/directinvoke" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapidcore" log "github.com/sirupsen/logrus" - "go.amzn.com/lambda/core/directinvoke" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/rapidcore" ) const ( diff --git a/lambda/rapidcore/standalone/resetHandler.go b/internal/lambda/rapidcore/standalone/resetHandler.go similarity index 100% rename from lambda/rapidcore/standalone/resetHandler.go rename to internal/lambda/rapidcore/standalone/resetHandler.go diff --git a/lambda/rapidcore/standalone/restoreHandler.go b/internal/lambda/rapidcore/standalone/restoreHandler.go similarity index 95% rename from lambda/rapidcore/standalone/restoreHandler.go rename to internal/lambda/rapidcore/standalone/restoreHandler.go index fdf7a5d..3b38210 100644 --- a/lambda/rapidcore/standalone/restoreHandler.go +++ b/internal/lambda/rapidcore/standalone/restoreHandler.go @@ -9,8 +9,8 @@ import ( "strconv" "time" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" log "github.com/sirupsen/logrus" - "go.amzn.com/lambda/interop" ) type RestoreBody struct { diff --git a/lambda/rapidcore/standalone/router.go b/internal/lambda/rapidcore/standalone/router.go similarity index 87% rename from lambda/rapidcore/standalone/router.go rename to internal/lambda/rapidcore/standalone/router.go index c0b8fc1..af8fc9a 100644 --- a/lambda/rapidcore/standalone/router.go +++ b/internal/lambda/rapidcore/standalone/router.go @@ -7,10 +7,10 @@ import ( "context" "net/http" - "go.amzn.com/lambda/core/statejson" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/rapidcore" - "go.amzn.com/lambda/rapidcore/standalone/telemetry" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core/statejson" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapidcore" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapidcore/standalone/telemetry" "github.com/go-chi/chi/v5" ) diff --git a/lambda/rapidcore/standalone/shutdownHandler.go b/internal/lambda/rapidcore/standalone/shutdownHandler.go similarity index 80% rename from lambda/rapidcore/standalone/shutdownHandler.go rename to internal/lambda/rapidcore/standalone/shutdownHandler.go index 8085541..0646d93 100644 --- a/lambda/rapidcore/standalone/shutdownHandler.go +++ b/internal/lambda/rapidcore/standalone/shutdownHandler.go @@ -7,8 +7,8 @@ import ( "context" "net/http" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/metering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/metering" ) type shutdownAPIRequest struct { diff --git a/lambda/rapidcore/standalone/telemetry/agent_writer.go b/internal/lambda/rapidcore/standalone/telemetry/agent_writer.go similarity index 100% rename from lambda/rapidcore/standalone/telemetry/agent_writer.go rename to internal/lambda/rapidcore/standalone/telemetry/agent_writer.go diff --git a/lambda/rapidcore/standalone/telemetry/eventLog.go b/internal/lambda/rapidcore/standalone/telemetry/eventLog.go similarity index 100% rename from lambda/rapidcore/standalone/telemetry/eventLog.go rename to internal/lambda/rapidcore/standalone/telemetry/eventLog.go diff --git a/lambda/rapidcore/standalone/telemetry/events_api.go b/internal/lambda/rapidcore/standalone/telemetry/events_api.go similarity index 97% rename from lambda/rapidcore/standalone/telemetry/events_api.go rename to internal/lambda/rapidcore/standalone/telemetry/events_api.go index dcac7a3..9c4410e 100644 --- a/lambda/rapidcore/standalone/telemetry/events_api.go +++ b/internal/lambda/rapidcore/standalone/telemetry/events_api.go @@ -9,8 +9,8 @@ import ( "sync" "time" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/telemetry" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/telemetry" ) type EventType = string @@ -158,6 +158,7 @@ func (s *StandaloneEventsAPI) SendInvokeRuntimeDone(data interop.InvokeRuntimeDo "metrics": data.Metrics, "internalMetrics": data.InternalMetrics, "spans": data.Spans, + "tenantId": data.TenantID, } if data.ErrorType != nil { diff --git a/lambda/rapidcore/standalone/telemetry/logs_egress_api.go b/internal/lambda/rapidcore/standalone/telemetry/logs_egress_api.go similarity index 100% rename from lambda/rapidcore/standalone/telemetry/logs_egress_api.go rename to internal/lambda/rapidcore/standalone/telemetry/logs_egress_api.go diff --git a/lambda/rapidcore/standalone/telemetry/structured_logger.go b/internal/lambda/rapidcore/standalone/telemetry/structured_logger.go similarity index 99% rename from lambda/rapidcore/standalone/telemetry/structured_logger.go rename to internal/lambda/rapidcore/standalone/telemetry/structured_logger.go index 8d9382b..c72d117 100644 --- a/lambda/rapidcore/standalone/telemetry/structured_logger.go +++ b/internal/lambda/rapidcore/standalone/telemetry/structured_logger.go @@ -4,8 +4,9 @@ package telemetry import ( - "github.com/sirupsen/logrus" "os" + + "github.com/sirupsen/logrus" ) var log = getLogger() diff --git a/lambda/rapidcore/standalone/telemetry/tracer.go b/internal/lambda/rapidcore/standalone/telemetry/tracer.go similarity index 94% rename from lambda/rapidcore/standalone/telemetry/tracer.go rename to internal/lambda/rapidcore/standalone/telemetry/tracer.go index ba7f32d..3fa57b3 100644 --- a/lambda/rapidcore/standalone/telemetry/tracer.go +++ b/internal/lambda/rapidcore/standalone/telemetry/tracer.go @@ -9,11 +9,11 @@ import ( "fmt" "time" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/metering" - "go.amzn.com/lambda/rapi/model" - "go.amzn.com/lambda/telemetry" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/metering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/model" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/telemetry" "github.com/sirupsen/logrus" ) diff --git a/lambda/rapidcore/standalone/util.go b/internal/lambda/rapidcore/standalone/util.go similarity index 96% rename from lambda/rapidcore/standalone/util.go rename to internal/lambda/rapidcore/standalone/util.go index 7ba7420..ea46c56 100644 --- a/lambda/rapidcore/standalone/util.go +++ b/internal/lambda/rapidcore/standalone/util.go @@ -9,8 +9,8 @@ import ( "io" "net/http" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/model" log "github.com/sirupsen/logrus" - "go.amzn.com/lambda/rapi/model" ) const ( diff --git a/lambda/rapidcore/standalone/waitUntilInitializedHandler.go b/internal/lambda/rapidcore/standalone/waitUntilInitializedHandler.go similarity index 85% rename from lambda/rapidcore/standalone/waitUntilInitializedHandler.go rename to internal/lambda/rapidcore/standalone/waitUntilInitializedHandler.go index 95d64ac..59dd8a8 100644 --- a/lambda/rapidcore/standalone/waitUntilInitializedHandler.go +++ b/internal/lambda/rapidcore/standalone/waitUntilInitializedHandler.go @@ -6,7 +6,7 @@ package standalone import ( "net/http" - "go.amzn.com/lambda/rapidcore" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapidcore" ) func WaitUntilInitializedHandler(w http.ResponseWriter, r *http.Request, s InteropServer) { diff --git a/lambda/rapidcore/standalone/waitUntilReleaseHandler.go b/internal/lambda/rapidcore/standalone/waitUntilReleaseHandler.go similarity index 90% rename from lambda/rapidcore/standalone/waitUntilReleaseHandler.go rename to internal/lambda/rapidcore/standalone/waitUntilReleaseHandler.go index 1caeb8c..bb489c7 100644 --- a/lambda/rapidcore/standalone/waitUntilReleaseHandler.go +++ b/internal/lambda/rapidcore/standalone/waitUntilReleaseHandler.go @@ -6,7 +6,7 @@ package standalone import ( "net/http" - "go.amzn.com/lambda/rapidcore" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapidcore" ) func WaitUntilReleaseHandler(w http.ResponseWriter, r *http.Request, s InteropServer) { diff --git a/cmd/aws-lambda-rie/handlers.go b/internal/lambda/rie/handlers.go similarity index 95% rename from cmd/aws-lambda-rie/handlers.go rename to internal/lambda/rie/handlers.go index 2cca12d..c4310fd 100644 --- a/cmd/aws-lambda-rie/handlers.go +++ b/internal/lambda/rie/handlers.go @@ -1,7 +1,7 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -package main +package rie import ( "bytes" @@ -15,10 +15,10 @@ import ( "strings" "time" - "go.amzn.com/lambda/core/statejson" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/rapidcore" - "go.amzn.com/lambda/rapidcore/env" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core/statejson" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapidcore" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapidcore/env" "github.com/google/uuid" @@ -121,6 +121,7 @@ func InvokeHandler(w http.ResponseWriter, r *http.Request, sandbox Sandbox, bs i InvokedFunctionArn: fmt.Sprintf("arn:aws:lambda:us-east-1:012345678912:function:%s", GetenvWithDefault("AWS_LAMBDA_FUNCTION_NAME", "test_function")), TraceID: r.Header.Get("X-Amzn-Trace-Id"), LambdaSegmentID: r.Header.Get("X-Amzn-Segment-Id"), + TenantID: interop.TenantID(r.Header.Get("X-Amz-Tenant-Id")), Payload: bytes.NewReader(bodyBytes), ClientContext: string(rawClientContext), } diff --git a/cmd/aws-lambda-rie/http.go b/internal/lambda/rie/http.go similarity index 78% rename from cmd/aws-lambda-rie/http.go rename to internal/lambda/rie/http.go index 88bd39b..deaaf59 100644 --- a/cmd/aws-lambda-rie/http.go +++ b/internal/lambda/rie/http.go @@ -1,14 +1,14 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -package main +package rie import ( "net/http" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapidcore" log "github.com/sirupsen/logrus" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/rapidcore" ) func startHTTPServer(ipport string, sandbox *rapidcore.SandboxBuilder, bs interop.Bootstrap) { diff --git a/internal/lambda/rie/run.go b/internal/lambda/rie/run.go new file mode 100644 index 0000000..8c14fda --- /dev/null +++ b/internal/lambda/rie/run.go @@ -0,0 +1,154 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package rie + +import ( + "context" + "fmt" + "net" + "os" + "runtime/debug" + + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapidcore" + "github.com/jessevdk/go-flags" + + log "github.com/sirupsen/logrus" +) + +const ( + optBootstrap = "/opt/bootstrap" + runtimeBootstrap = "/var/runtime/bootstrap" +) + +type options struct { + LogLevel string `long:"log-level" description:"The level of AWS Lambda Runtime Interface Emulator logs to display. Can also be set by the environment variable 'LOG_LEVEL'. Defaults to the value 'info'."` + InitCachingEnabled bool `long:"enable-init-caching" description:"Enable support for Init Caching"` + // Do not have a default value so we do not need to keep it in sync with the default value in lambda/rapidcore/sandbox_builder.go + RuntimeAPIAddress string `long:"runtime-api-address" description:"The address of the AWS Lambda Runtime API to communicate with the Lambda execution environment."` + RuntimeInterfaceEmulatorAddress string `long:"runtime-interface-emulator-address" default:"0.0.0.0:8080" description:"The address for the AWS Lambda Runtime Interface Emulator to accept HTTP request upon."` +} + +func Run() { + // More frequent GC reduces the tail latencies, equivalent to export GOGC=33 + debug.SetGCPercent(33) + + opts, args := getCLIArgs() + + logLevel := "info" + + // If you specify an option by using a parameter on the CLI command line, it overrides any value from either the corresponding environment variable. + // + // https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html + if opts.LogLevel != "" { + logLevel = opts.LogLevel + } else if envLogLevel, envLogLevelSet := os.LookupEnv("LOG_LEVEL"); envLogLevelSet { + logLevel = envLogLevel + } + + rapidcore.SetLogLevel(logLevel) + + if opts.RuntimeAPIAddress != "" { + _, _, err := net.SplitHostPort(opts.RuntimeAPIAddress) + + if err != nil { + log.WithError(err).Fatalf("The command line value for \"--runtime-api-address\" is not a valid network address %q.", opts.RuntimeAPIAddress) + } + } + + _, _, err := net.SplitHostPort(opts.RuntimeInterfaceEmulatorAddress) + + if err != nil { + log.WithError(err).Fatalf("The command line value for \"--runtime-interface-emulator-address\" is not a valid network address %q.", opts.RuntimeInterfaceEmulatorAddress) + } + + bootstrap, handler := getBootstrap(args, opts) + sandbox := rapidcore. + NewSandboxBuilder(). + AddShutdownFunc(context.CancelFunc(func() { os.Exit(0) })). + SetExtensionsFlag(true). + SetInitCachingFlag(opts.InitCachingEnabled) + + if len(handler) > 0 { + sandbox.SetHandler(handler) + } + + if opts.RuntimeAPIAddress != "" { + sandbox.SetRuntimeAPIAddress(opts.RuntimeAPIAddress) + } + + sandboxContext, internalStateFn := sandbox.Create() + // Since we have not specified a custom interop server for standalone, we can + // directly reference the default interop server, which is a concrete type + sandbox.DefaultInteropServer().SetSandboxContext(sandboxContext) + sandbox.DefaultInteropServer().SetInternalStateGetter(internalStateFn) + + startHTTPServer(opts.RuntimeInterfaceEmulatorAddress, sandbox, bootstrap) +} + +func getCLIArgs() (options, []string) { + var opts options + parser := flags.NewParser(&opts, flags.IgnoreUnknown) + args, err := parser.ParseArgs(os.Args) + + if err != nil { + log.WithError(err).Fatal("Failed to parse command line arguments:", os.Args) + } + + return opts, args +} + +func isBootstrapFileExist(filePath string) bool { + file, err := os.Stat(filePath) + return !os.IsNotExist(err) && !file.IsDir() +} + +func getBootstrap(args []string, opts options) (interop.Bootstrap, string) { + var bootstrapLookupCmd []string + var handler string + currentWorkingDir := "/var/task" // default value + + if len(args) <= 1 { + // set default value to /var/task/bootstrap, but switch to the other options if it doesn't exist + bootstrapLookupCmd = []string{ + fmt.Sprintf("%s/bootstrap", currentWorkingDir), + } + + if !isBootstrapFileExist(bootstrapLookupCmd[0]) { + var bootstrapCmdCandidates = []string{ + optBootstrap, + runtimeBootstrap, + } + + for i, bootstrapCandidate := range bootstrapCmdCandidates { + if isBootstrapFileExist(bootstrapCandidate) { + bootstrapLookupCmd = []string{bootstrapCmdCandidates[i]} + break + } + } + } + + // handler is used later to set an env var for Lambda Image support + handler = "" + } else if len(args) > 1 { + + bootstrapLookupCmd = args[1:] + + if cwd, err := os.Getwd(); err == nil { + currentWorkingDir = cwd + } + + if len(args) > 2 { + // Assume last arg is the handler + handler = args[len(args)-1] + } + + log.Infof("exec '%s' (cwd=%s, handler=%s)", args[1], currentWorkingDir, handler) + + } else { + log.Panic("insufficient arguments: bootstrap not provided") + } + + return NewSimpleBootstrap(bootstrapLookupCmd, currentWorkingDir), handler +} diff --git a/cmd/aws-lambda-rie/simple_bootstrap.go b/internal/lambda/rie/simple_bootstrap.go similarity index 88% rename from cmd/aws-lambda-rie/simple_bootstrap.go rename to internal/lambda/rie/simple_bootstrap.go index c9111a2..9d9ae70 100644 --- a/cmd/aws-lambda-rie/simple_bootstrap.go +++ b/internal/lambda/rie/simple_bootstrap.go @@ -1,16 +1,16 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -package main +package rie import ( "fmt" "os" "path/filepath" - "go.amzn.com/lambda/fatalerror" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/rapidcore/env" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/fatalerror" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapidcore/env" ) // the type implement a simpler version of the Bootstrap diff --git a/cmd/aws-lambda-rie/simple_bootstrap_test.go b/internal/lambda/rie/simple_bootstrap_test.go similarity index 95% rename from cmd/aws-lambda-rie/simple_bootstrap_test.go rename to internal/lambda/rie/simple_bootstrap_test.go index de00ee2..b6825d5 100644 --- a/cmd/aws-lambda-rie/simple_bootstrap_test.go +++ b/internal/lambda/rie/simple_bootstrap_test.go @@ -1,14 +1,14 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -package main +package rie import ( "os" "reflect" "testing" - "go.amzn.com/lambda/rapidcore/env" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapidcore/env" "github.com/stretchr/testify/assert" ) diff --git a/cmd/aws-lambda-rie/util.go b/internal/lambda/rie/util.go similarity index 96% rename from cmd/aws-lambda-rie/util.go rename to internal/lambda/rie/util.go index 1d539ec..f7592c2 100644 --- a/cmd/aws-lambda-rie/util.go +++ b/internal/lambda/rie/util.go @@ -1,11 +1,12 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -package main +package rie import ( "fmt" - "net/http") + "net/http" +) type ErrorType int diff --git a/lambda/supervisor/local_supervisor.go b/internal/lambda/supervisor/local_supervisor.go similarity index 98% rename from lambda/supervisor/local_supervisor.go rename to internal/lambda/supervisor/local_supervisor.go index 4405686..9e80782 100644 --- a/lambda/supervisor/local_supervisor.go +++ b/internal/lambda/supervisor/local_supervisor.go @@ -13,8 +13,8 @@ import ( "syscall" "time" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/supervisor/model" log "github.com/sirupsen/logrus" - "go.amzn.com/lambda/supervisor/model" ) // typecheck interface compliance diff --git a/lambda/supervisor/local_supervisor_test.go b/internal/lambda/supervisor/local_supervisor_test.go similarity index 98% rename from lambda/supervisor/local_supervisor_test.go rename to internal/lambda/supervisor/local_supervisor_test.go index 02a06f6..1ff6c8f 100644 --- a/lambda/supervisor/local_supervisor_test.go +++ b/internal/lambda/supervisor/local_supervisor_test.go @@ -11,10 +11,10 @@ import ( "testing" "time" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/supervisor/model" log "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "go.amzn.com/lambda/supervisor/model" ) func TestRuntimeDomainExec(t *testing.T) { diff --git a/lambda/supervisor/model/model.go b/internal/lambda/supervisor/model/model.go similarity index 100% rename from lambda/supervisor/model/model.go rename to internal/lambda/supervisor/model/model.go diff --git a/lambda/supervisor/model/model_test.go b/internal/lambda/supervisor/model/model_test.go similarity index 100% rename from lambda/supervisor/model/model_test.go rename to internal/lambda/supervisor/model/model_test.go diff --git a/lambda/telemetry/constants.go b/internal/lambda/telemetry/constants.go similarity index 100% rename from lambda/telemetry/constants.go rename to internal/lambda/telemetry/constants.go diff --git a/lambda/telemetry/events_api.go b/internal/lambda/telemetry/events_api.go similarity index 97% rename from lambda/telemetry/events_api.go rename to internal/lambda/telemetry/events_api.go index 371f439..d5dcc66 100644 --- a/lambda/telemetry/events_api.go +++ b/internal/lambda/telemetry/events_api.go @@ -7,8 +7,8 @@ import ( "fmt" "time" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/metering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/metering" ) func GetRuntimeDoneInvokeMetrics(runtimeStartedTime int64, invokeResponseMetrics *interop.InvokeResponseMetrics, runtimeDoneTime int64) *interop.RuntimeDoneInvokeMetrics { diff --git a/lambda/telemetry/events_api_test.go b/internal/lambda/telemetry/events_api_test.go similarity index 97% rename from lambda/telemetry/events_api_test.go rename to internal/lambda/telemetry/events_api_test.go index f69e4ea..decdc15 100644 --- a/lambda/telemetry/events_api_test.go +++ b/internal/lambda/telemetry/events_api_test.go @@ -7,9 +7,9 @@ import ( "testing" "time" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/metering" "github.com/stretchr/testify/assert" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/metering" ) func TestGetRuntimeDoneInvokeMetrics(t *testing.T) { diff --git a/lambda/telemetry/logs_egress_api.go b/internal/lambda/telemetry/logs_egress_api.go similarity index 100% rename from lambda/telemetry/logs_egress_api.go rename to internal/lambda/telemetry/logs_egress_api.go diff --git a/lambda/telemetry/logs_subscription_api.go b/internal/lambda/telemetry/logs_subscription_api.go similarity index 95% rename from lambda/telemetry/logs_subscription_api.go rename to internal/lambda/telemetry/logs_subscription_api.go index 2fa39f0..68b9188 100644 --- a/lambda/telemetry/logs_subscription_api.go +++ b/internal/lambda/telemetry/logs_subscription_api.go @@ -7,7 +7,7 @@ import ( "io" "net/http" - "go.amzn.com/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" ) // SubscriptionAPI represents interface that implementations of Telemetry API have to satisfy to be RAPID-compatible diff --git a/lambda/telemetry/tracer.go b/internal/lambda/telemetry/tracer.go similarity index 95% rename from lambda/telemetry/tracer.go rename to internal/lambda/telemetry/tracer.go index 889682b..478718b 100644 --- a/lambda/telemetry/tracer.go +++ b/internal/lambda/telemetry/tracer.go @@ -9,9 +9,9 @@ import ( "fmt" "strings" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/rapi/model" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/model" ) type traceContextKey int diff --git a/lambda/telemetry/tracer_test.go b/internal/lambda/telemetry/tracer_test.go similarity index 98% rename from lambda/telemetry/tracer_test.go rename to internal/lambda/telemetry/tracer_test.go index d67c389..d744069 100644 --- a/lambda/telemetry/tracer_test.go +++ b/internal/lambda/telemetry/tracer_test.go @@ -9,7 +9,7 @@ import ( "strings" "testing" - "go.amzn.com/lambda/rapi/model" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/model" ) var BigString = strings.Repeat("a", 255) diff --git a/lambda/testdata/agents/bash_true.sh b/internal/lambda/testdata/agents/bash_true.sh similarity index 100% rename from lambda/testdata/agents/bash_true.sh rename to internal/lambda/testdata/agents/bash_true.sh diff --git a/lambda/testdata/async_assertion_utils.go b/internal/lambda/testdata/async_assertion_utils.go similarity index 99% rename from lambda/testdata/async_assertion_utils.go rename to internal/lambda/testdata/async_assertion_utils.go index c29e4a0..5667c93 100644 --- a/lambda/testdata/async_assertion_utils.go +++ b/internal/lambda/testdata/async_assertion_utils.go @@ -29,4 +29,4 @@ func Eventually(t *testing.T, testFunc func() (bool, error), pollingIntervalMult time.Sleep(time.Duration(try) * pollingIntervalMultiple) } return false -} \ No newline at end of file +} diff --git a/lambda/testdata/bash_function.sh b/internal/lambda/testdata/bash_function.sh similarity index 100% rename from lambda/testdata/bash_function.sh rename to internal/lambda/testdata/bash_function.sh diff --git a/lambda/testdata/bash_runtime.sh b/internal/lambda/testdata/bash_runtime.sh similarity index 100% rename from lambda/testdata/bash_runtime.sh rename to internal/lambda/testdata/bash_runtime.sh diff --git a/lambda/testdata/bash_script_with_child_proc.sh b/internal/lambda/testdata/bash_script_with_child_proc.sh similarity index 100% rename from lambda/testdata/bash_script_with_child_proc.sh rename to internal/lambda/testdata/bash_script_with_child_proc.sh diff --git a/lambda/testdata/env_setup_helpers.go b/internal/lambda/testdata/env_setup_helpers.go similarity index 100% rename from lambda/testdata/env_setup_helpers.go rename to internal/lambda/testdata/env_setup_helpers.go diff --git a/lambda/testdata/flowtesting.go b/internal/lambda/testdata/flowtesting.go similarity index 91% rename from lambda/testdata/flowtesting.go rename to internal/lambda/testdata/flowtesting.go index e2c4b49..03280ad 100644 --- a/lambda/testdata/flowtesting.go +++ b/internal/lambda/testdata/flowtesting.go @@ -9,12 +9,12 @@ import ( "io/ioutil" "time" - "go.amzn.com/lambda/appctx" - "go.amzn.com/lambda/core" - "go.amzn.com/lambda/interop" - "go.amzn.com/lambda/rapi/rendering" - "go.amzn.com/lambda/telemetry" - "go.amzn.com/lambda/testdata/mockthread" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/appctx" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/core" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/interop" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/rapi/rendering" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/telemetry" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/testdata/mockthread" ) const ( diff --git a/lambda/testdata/mockcommand.go b/internal/lambda/testdata/mockcommand.go similarity index 84% rename from lambda/testdata/mockcommand.go rename to internal/lambda/testdata/mockcommand.go index b99a226..4947fa3 100644 --- a/lambda/testdata/mockcommand.go +++ b/internal/lambda/testdata/mockcommand.go @@ -1,9 +1,12 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -/* Package testdata holds ancillary data needed by - the tests. The go tool ignores this directory. - https://golang.org/pkg/cmd/go/internal/test/ */ +/* +Package testdata holds ancillary data needed by + + the tests. The go tool ignores this directory. + https://golang.org/pkg/cmd/go/internal/test/ +*/ package testdata import ( diff --git a/lambda/testdata/mockthread/mockthread.go b/internal/lambda/testdata/mockthread/mockthread.go similarity index 100% rename from lambda/testdata/mockthread/mockthread.go rename to internal/lambda/testdata/mockthread/mockthread.go diff --git a/lambda/testdata/mocktracer/mocktracer.go b/internal/lambda/testdata/mocktracer/mocktracer.go similarity index 97% rename from lambda/testdata/mocktracer/mocktracer.go rename to internal/lambda/testdata/mocktracer/mocktracer.go index 3fb7054..397fbe8 100644 --- a/lambda/testdata/mocktracer/mocktracer.go +++ b/internal/lambda/testdata/mocktracer/mocktracer.go @@ -7,7 +7,7 @@ import ( "context" "time" - "go.amzn.com/lambda/xray" + "github.com/aws/aws-lambda-runtime-interface-emulator/internal/lambda/xray" ) // MockStartTime is start time set in Start method diff --git a/lambda/testdata/parametrization.go b/internal/lambda/testdata/parametrization.go similarity index 100% rename from lambda/testdata/parametrization.go rename to internal/lambda/testdata/parametrization.go