dherault / serverless-offline

Emulate AWS λ and API Gateway locally when developing your Serverless project
MIT License
5.19k stars 796 forks source link

Boto3/Python can't invoke lambda function. #1666

Open dhmoon91 opened 1 year ago

dhmoon91 commented 1 year ago

Bug Report

Current Behavior

Using postman for httpPort triggers local lambda correctly.

Sample Code

serverless.yml:

service: slackService
frameworkVersion: "3"

provider:
  name: aws
  runtime: python3.8
  stackName: ${opt:stage, 'dev'}-${self:service}
  deploymentBucket:
    name: ${opt:stage, 'dev'}-slack-service

plugins:
  - serverless-python-requirements
  - serverless-deployment-bucket
  - serverless-latest-layer-version
  - serverless-offline

functions:
  slack-service:
    handler: app.dispatcher.dispatcher
    events:
      - httpApi: "POST /slack-service"

custom:
  pythonRequirements:
    dockerizePip: true
  serverless-offline:
    lambdaPort: 4006
    httpPort: 4005

def dispatcher(event, context): body = { "message": "Go Serverless v3.0! Your function executed successfully!", "input": event, } print("event") print(event) record = event["Records"][0]

response = {"statusCode": 200, "body": json.dumps(body)}

return response

Output from running `sls offline start`: 

Starting Offline at stage dev (us-east-1)

Offline [http for lambda] listening on http://localhost:4006 Function names exposed for local invocation by aws-sdk:

How I'm invoking it:

  lambda_client = boto3.client(
                    "lambda",
                    region_name="local",
                    aws_access_key_id="test",
                    aws_secret_access_key="test2",
                    endpoint_url="http://localhost:4006",
                )

lambda_client.invoke(
                    FunctionName="slackService-dev-slack-service",
                    Payload=(json.dumps({"eventId": event.id})),
                )

error msg:

Expected behavior/code

Environment

optional, if you are using any of the following frameworks to invoke handlers

Possible Solution

Additional context/Screenshots

strombergdev commented 1 year ago

Did you find a solution for this? Have the same issue.

TiberioG commented 1 year ago

Same issue invoking lambda locally with boto3 inside docker container