Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

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

errorMessage: Unable to determine handler from trigger event #217

Closed
VictorBac opened this issue Jan 10, 2022 · 0 comments
Closed

errorMessage: Unable to determine handler from trigger event #217

VictorBac opened this issue Jan 10, 2022 · 0 comments

Comments

@VictorBac
Copy link

Hey guys,

I am trying to build d coker iamge to deploy on aws lambda following the doc and:
https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-create-from-base
https://docs.aws.amazon.com/lambda/latest/dg/python-image.html#python-image-base

My Dockerfile:

FROM public.ecr.aws/lambda/python:3.8

# Copy function code
COPY app.py ${LAMBDA_TASK_ROOT}

# Install the function's dependencies using file requirements.txt
# from your project folder.

COPY requirements.txt  .
RUN  pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"

# Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile)
CMD [ "app.handler" ]

requirement.txt:

fastapi == 0.71.*
uvicorn[standard]
mangum == 0.12

app.py:

from fastapi import FastAPI
from mangum import Mangum

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

handler = Mangum(app, spec_version=2)

then:

docker build -t hello-world .
docker run -p 9000:8080 hello-world

But when I try to query locally (following the doc):

$ curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'
{
  "errorMessage": "Unable to determine handler from trigger event",
  "errorType": "TypeError",
  "stackTrace": [
    "  File \"/var/task/mangum/adapter.py\", line 86, in __call__\n    handler = AbstractHandler.from_trigger(\n",
    "  File \"/var/task/mangum/handlers/abstract_handler.py\", line 113, in from_trigger\n    raise TypeError(\"Unable to determine handler from trigger event\")\n"
  ]
}

I tried using (found in some discussions)

handler = Mangum(app, spec_version=2)

and even from another discussion:

import uvicorn
from fastapi import FastAPI
from mangum import Mangum
# TODO: Add this line
from starlette.middleware.cors import CORSMiddleware

app = FastAPI(title="FastAPI Mangum Example", version='1.0.0')

# TODO: Add these lines
app.add_middleware(
    CORSMiddleware,
    allow_origins='*',
    allow_credentials=False,
    allow_methods=["GET", "POST", "OPTIONS"],
    allow_headers=["x-apigateway-header", "Content-Type", "X-Amz-Date"],
)

handler = Mangum(app)


@app.get('/', name='Hello World', tags=['Hello'])
def hello_world():
    return {"Hello": "Python"}


if __name__ == '__main__':
    uvicorn.run(app)

it never works. (same error when deployed to aws lamda and not run locally)

I tried to use previous version but also had issue...
does anyone has a working example for this ?

Repository owner locked and limited conversation to collaborators Jan 10, 2022
@jordaneremieff jordaneremieff converted this issue into discussion #218 Jan 10, 2022

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant