Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for Aws Lambda #688

Open
YasiruShaminda opened this issue Nov 3, 2022 · 5 comments
Open

Add support for Aws Lambda #688

YasiruShaminda opened this issue Nov 3, 2022 · 5 comments
Labels
help wanted Extra attention is needed kind/enhancement New feature or request
Milestone

Comments

@YasiruShaminda
Copy link

Description:
Add support for invoke Aws Lambda

@YasiruShaminda YasiruShaminda added the kind/enhancement New feature or request label Nov 3, 2022
@arkodg
Copy link
Contributor

arkodg commented Nov 3, 2022

thanks for raising this issue, this will most likely require EG to run in a non K8s environment as well as be able to route to non K8s Backend, hoping the community has cycles to design for this in 2023, moving it to the backlog for now

@arkodg arkodg added this to the Backlog milestone Nov 3, 2022
@YasiruShaminda
Copy link
Author

I am proposing the following design for the AWS Lambda filter for the Envoy Gateway. What do you think about the design? Is this fit with requirements on envoy side and align with the other filters/policies that are available in the Envoy Gateway?

apiVersion: gateway.envoy.io/v1alpha1
kind: AWSLambda
metadata:
  name: lambdafunc-order
Spec:
  arn: arn:aws:lambda:us-east-1:65xxxxxxxxxx:function:randomFunc
  payloadPasstrough : false
  invocationMode: synchronous
apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
  name: http-route-randomFunc
spec:
  parentRefs:
  - name: my-gateway
  hostnames:
  - "gateway.apis.com"
  rules:
  - matches:
    -	path:
        type: PathPrefix
        value: /randomFunc/1.0.1/order
     	method: GET
queryParams:
      - type: Exact
        name: status
        value: available
    - path:
        type: PathPrefix
        value: /randomFunc/1.0.1/menu
    filters:
	- type: extensionRef
  extensionRef:
    group: gateway.envoy.io/v1alpha1
    kind: AWSLambda
    name: lambdafunc-order

@arkodg
Copy link
Contributor

arkodg commented Nov 18, 2022

thanks for kickstarting this debate, would recommend looking into BackendObjectReference to consider routing to a AWSLambda backend.

   backendRefs:
   - group: gateway.envoy.io/v1alpha1
     kind: AWSLambda
     name: lambdafunc-order
     port: 8080

This should solve the user feature but before we attempt to support custom backends the project will need to think of a way
to provide extensions for service / backend to endpoint resolvers, else it might become hard to manage all these vendor based backends
for e.g. an external process can consume the user's AWS creds and translate all cloud map services to some Custom Backend resource similar to Istio's Service Entry which EG can consume

@danehans danehans added the help wanted Extra attention is needed label Dec 1, 2022
@arkodg
Copy link
Contributor

arkodg commented Apr 25, 2023

closing this issue since it can be solved with ServiceImport which is being tracked with #9 where Envoy Gateway is the ServiceImport consumer and AWS Lattice is the ServiceImport MCS producer https://github.com/aws/aws-application-networking-k8s/blob/main/docs/multi-sn.md

@arkodg arkodg closed this as completed Apr 25, 2023
@arkodg
Copy link
Contributor

arkodg commented Sep 26, 2024

reopening this issue, since this cannot be solved with ServiceImport

Backend API can be enhanced to support this use case
and this is already supported by Envoy https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/aws_lambda_filter#configuration-as-an-upstream-http-filter
cc @mathetake

@arkodg arkodg reopened this Sep 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed kind/enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants