当前位置: 首页 > 知识库问答 >
问题:

无法通过aws cli从localstack调用lambda函数

经和洽
2023-03-14

根据下面的命令/输出,我在localstack中看到了lambda函数

 aws lambda get-function --function-name books1 --endpoint-url=http://localhost:4574
{
    "Code": {
        "Location": "http://localhost:4574/2015-03-31/functions/books1/code"
    }, 
    "Configuration": {
        "Version": "$LATEST", 
        "FunctionName": "books1", 
        "CodeSize": 50, 
        "FunctionArn": "arn:aws:lambda:us-east-1:000000000000:function:books1", 
        "Environment": {}, 
        "Handler": "main", 
        "Runtime": "go1.x"
    }
}

当我尝试执行它时,如下所示,我得到一个错误,我的localstack正在docker容器内运行

AWS-Endpoint-url=http://localhost:4574 lambda invoke-function-name books1/tmp/output.json

An error occurred (InternalFailure) when calling the Invoke operation (reached max retries: 4): Error executing Lambda function: Unable to find executor for Lambda function "books1". Note that Node.js and .NET Core Lambdas currently require LAMBDA_EXECUTOR=docker Traceback (most recent call last):
  File "/opt/code/localstack/localstack/services/awslambda/lambda_api.py", line 269, in run_lambda
    event, context=context, version=version, asynchronous=asynchronous)
  File "/opt/code/localstack/localstack/services/awslambda/lambda_executors.py", line 466, in execute
    process.run()
  File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "/opt/code/localstack/localstack/services/awslambda/lambda_executors.py", line 462, in do_execute
    result = lambda_function(event, context)
  File "/opt/code/localstack/localstack/services/awslambda/lambda_api.py", line 390, in generic_handler
    'Note that Node.js and .NET Core Lambdas currently require LAMBDA_EXECUTOR=docker') % lambda_name)
Exception: Unable to find executor for Lambda function "books1". Note that Node.js and .NET Core Lambdas currently require LAMBDA_EXECUTOR=docker

这个lambda是用go编写的,当我在真正的AWS上手动执行它时,它工作得很好。

共有1个答案

裴存
2023-03-14

您应该使用传递的lambda_executor=docker环境和/var/run/docker.sock:/code>卷运行localstack容器

docker run \
  -itd \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e LAMBDA_EXECUTOR=docker \
  -p 4567-4583:4567-4583 -p 8080:8080 \
  --name localstack \
  localstack/localstack

 类似资料:
  • 我尝试用LocalStack运行lambda函数。我安装了awscli-local和localstack pip3安装awscli-local pip3安装--用户localstack--忽略-安装六个 然后我启动了localstack lamdba_executor=Docker本地堆栈启动--Docker 当我现在要创建lambda函数时 aws lambda create-function-

  • 好了,我说完了。请有人帮帮我:( 我不知道js和lambda是怎么工作的 null 最令人困惑的是!这个b给我这个测试结果: 运行1: DynamoDb是空的,这里我们看不到DynamoDb.BatchWriteItem结果的日志。

  • 是否可以通过http请求(GET或POST)直接调用AWS Lambda函数?如果没有,是否有通过SNS或S3的解决方案?因为我想不出一个。。。 具体来说,我想使用 JSON 创建一个小的 API

  • 我创建了一个节点lambda函数,它对Aurora数据库进行简单调用。当我在控制台中测试该函数时,查询返回,我可以在日志中看到结果,但回调似乎永远不会被调用,所以我的lambda函数超时了。我无法找出问题所在。希望这里有人能指出我的问题。 生成的Cloudwatch日志如下所示。。。

  • 问题内容: 我想在我的Android应用程序中对某些Java代码进行同步调用。 我的Java代码: 我的JavaScript代码: 当我点击按钮时,按钮进入按下状态。我可以在控制台日志中看到。一切正常,直到这里。 问题是,按钮永远不会回到其正常状态。它保持在按下状态。也许JavaScript执行中断了还是什么? 为什么按钮从不返回其正常状态? 问题答案: 我认为这不是让JavaScript执行Ja

  • 问题内容: 谁能告诉我如何将值作为函数的返回值返回。 当您点击注册表格中的提交时,上述功能就会触发(很明显)。问题是,无论响应是什么,此表单都将提交,并且警告框有时不显示任何内容(空白),有时根本不显示。但是,如果我将结尾更改为手动[即用] 替换,则正确的值将显示在警报框中。 PS我比JavaScript的菜鸟还差,因此也欢迎提出一般性改进代码的建议。 问题答案: 问题是,直到……等待……状态改变