swift-server / swift-aws-lambda-runtime

Swift implementation of AWS Lambda Runtime
Apache License 2.0
1.12k stars 100 forks source link

Local lambda invocation endpoint env var #321

Closed jsonfry closed 1 month ago

jsonfry commented 3 months ago

Allow the changing of the local lambda server's invocation endpoint

Motivation:

[Explain here the context, and why you're making that change. What is the problem you're trying to solve.]

As described in https://github.com/swift-server/swift-aws-lambda-runtime/issues/320 I want to be able to use other tooling that expects the local invocation endpoint to have a specific path, not just /invoke.

Modifications:

I have added an envionrment variable option that lets you override the invocation endpoint url.

Result:

If you set LOCAL_LAMBDA_SERVER_ENABLED to run locally, you can now also set LOCAL_LAMBDA_SERVER_INVOCATION_ENDPOINT to any value to change the path, e.g. to /2015-03-31/functions/function/invocations to match how the "runtime interface emulator" works.

jsonfry commented 3 months ago

fixes #320

jsonfry commented 1 month ago

Is this likely to progress any further?

tomerd commented 1 month ago

seems reasonable to me. a test to make sure this works / does not regress would be useful. @sebsto ?

tomerd commented 1 month ago

@swift-server-bot test this please

sebsto commented 1 month ago

Thank you @jsonfry for submitting this PR. What happens when LOCAL_LAMBDA_SERVER_INVOCATION_ENDPOINT is not defined ?

@tomerd I think it's a valid use case and we should support the runtime interface emulator.

jsonfry commented 1 month ago

What happens when LOCAL_LAMBDA_SERVER_INVOCATION_ENDPOINT is not defined ?

Lambda.env("LOCAL_LAMBDA_SERVER_INVOCATION_ENDPOINT") returns nil, so eventually this line of code is reached: self.invocationEndpoint = invocationEndpoint ?? "/invoke" and it's set to /invoke, as before.

Or in short, it behaves as it did before.

sebsto commented 1 month ago

Oh, I missed that line of code. Good for me then.

sebsto commented 1 month ago

@tomerd feel free to approve when you have time - thanks

sebsto commented 1 month ago

@swift-server-bot test this please

UPDATE : looks like I don't have permissions to trigger a CI test and without test, I can not merge :-(

sebsto commented 1 month ago

@tomerd can you trigger a set of test. Apparently, I don't have permissions to do so. Thanks

tomerd commented 1 month ago

@swift-server-bot test this please