Localstack Lambda Invoke 在 Windows 上失败 [英] Localstack Lambda Invoke fails on Windows
问题描述
我有一个类似于
同样,我可以通过调用 AWS CLI 查看函数:
aws lambda get-function --function-name serverless1-lambda1"--endpoint-url=http://localhost:4566
返回:
<代码>{配置":{FunctionName":serverless1-lambda1",FunctionArn":arn:aws:lambda:us-east-1:000000000000:function:serverless1-lambda1",运行时":nodejs10.x",角色":arn:aws:iam::000000000000:role/serverless_example_lambda",处理程序":lambda1.handler",代码大小":342,描述":",超时":3,内存大小":128,LastModified":2021-05-07T10:17:32.305+0000",CodeSha256":qoP7ORF4AUC8VJWLR0bGGRRKGtNrQwRj2hCa1n+3wk4=",版本":$LATEST",VpcConfig":{},跟踪配置":{模式":通过"},RevisionId":ea163f0f-81ce-4b3a-a0d1-7b44379c6492",状态":活动",LastUpdateStatus":成功",PackageType":Zip"},代码":{位置":http://localhost:4566/2015-03-31/functions/serverless1-lambda1/code"},标签":{}}
但是,当我尝试使用以下方法调用它时:
aws --endpoint-url=http://localhost:4566 lambda 调用 --function-name serverless1-lambda1"输出.json
返回是:
<代码>{errorMessage":Lambda 进程返回错误状态代码:1.结果:.输出: 无法在本地找到图像 'lambci/lambda:nodejs10.x' 来自守护进程的错误响应:获取 https://registry-1.docker.io/v2/:net/http: 请求在等待连接时取消(等待标头时超出 Client.Timeout) 必须指定至少一个容器源 json: 无法将数组解组为类型为 types.ContainerJSON"的 Go 值",errorType":InvocationException",堆栈跟踪":["文件 "/opt/code/localstack/localstack/services/awslambda/lambda_api.py",第 602 行,在 run_lambda 结果 = LAMBDA_EXECUTOR.execute(func_arn, func_details, event, context=context, ","文件 "/opt/code/localstack/localstack/services/awslambda/lambda_executors.py",第 176 行,在执行中 return do_execute() ","文件 "/opt/code/localstack/localstack/services/awslambda/lambda_executors.py",第 168 行,在 do_execute return _run(func_arn=func_arn) ","文件 "/opt/code/localstack/localstack/utils/cloudwatch/cloudwatch_util.py",第 149 行,已包装 raise e ","文件 "/opt/code/localstack/localstack/utils/cloudwatch/cloudwatch_util.py",第 145 行,已包装 结果 = func(*args, **kwargs) ","文件 "/opt/code/localstack/localstack/services/awslambda/lambda_executors.py",第 159 行,在 _run raise e ","文件 "/opt/code/localstack/localstack/services/awslambda/lambda_executors.py",第 147 行,在 _run 结果 = self._execute(func_arn, func_details, event, context, version) ","文件 "/opt/code/localstack/localstack/services/awslambda/lambda_executors.py",第 325 行,在 _execute 结果 = self.run_lambda_executor(cmd, stdin, env_vars=environment, func_details=func_details) ","文件 "/opt/code/localstack/localstack/services/awslambda/lambda_executors.py",第 231 行,在 run_lambda_executor raise InvocationException('Lambda 进程返回错误状态代码:%s.结果:%s.输出:\n%s' % "]}
Docker 窗口跟踪显示:
localstack_serverless1 |2021-05-07T10:59:50:WARNING:localstack.services.awslambda.lambda_executors:为调用 Lambda arn:aws:lambda:us-east-1:000000000000:function:serverless1-lambda1"指定的空事件主体localstack_serverless1 |2021-05-07T10:59:50:INFO:localstack.services.awslambda.lambda_executors: 运行 lambda cmd: CONTAINER_ID="$(docker create -i -e AWS_REGION="$AWS_REGION" -e DOCKER_LAMBDA_USE_STDIN="$DOCKER_LAMBDA_USE_STDIN" -e LOCALSTACK_HOSTNAME = QUOT; $ LOCALSTACK_HOSTNAME" -e EDGE_PORT = QUOT; $ EDGE_PORT" -e _handler = QUOT; $ _ HANDLER" -e AWS_LAMBDA_FUNCTION_TIMEOUT = QUOT; $ AWS_LAMBDA_FUNCTION_TIMEOUT" -e AWS_LAMBDA_FUNCTION_NAME = QUOT; $ AWS_LAMBDA_FUNCTION_NAME" -e AWS_LAMBDA_FUNCTION_VERSION= QUOT; $ AWS_LAMBDA_FUNCTION_VERSION" -e AWS_LAMBDA_FUNCTION_INVOKED_ARN = QUOT; $ AWS_LAMBDA_FUNCTION_INVOKED_ARN" -e AWS_LAMBDA_COGNITO_IDENTITY = QUOT; $ AWS_LAMBDA_COGNITO_IDENTITY" -e NODE_TLS_REJECT_UNAUTHORIZED = QUOT; $ NODE_TLS_REJECT_UNAUTHORIZED" --rm" lambci/λ:nodejs10.x"" lambda1.处理程序")";docker cp /tmp/localstack/zipfile.9cb3ff88/."$CONTAINER_ID:/var/task";docker start -ai "$CONTAINER_ID";localstack_serverless1 |2021-05-07T11:00:05:DEBUG:localstack.services.awslambda.lambda_executors: Lambda arn:aws:lambda:us-east-1:000000000000:function:serverless1-lambda1 结果/日志输出:localstack_serverless1 |localstack_serverless1 |>无法在本地找到图像lambci/lambda:nodejs10.x"localstack_serverless1 |>来自守护进程的错误响应:获取 https://registry-1.docker.io/v2/:net/http: 等待连接时请求已取消(等待标头时超出 Client.Timeout)localstack_serverless1 |>必须指定至少一个容器来源localstack_serverless1 |>json:无法将数组解组为 types.ContainerJSON 类型的 Go 值localstack_serverless1 |2021-05-07T11:00:05:INFO:localstack.services.awslambda.lambda_api: 执行 Lambda 函数时出错 arn:aws:lambda:us-east-1:000000000000:function:serverless1-lambda1: Lambda 进程返回错误状态代码: 1. 结果: .输出:localstack_serverless1 |无法在本地找到图像lambci/lambda:nodejs10.x"localstack_serverless1 |来自守护进程的错误响应:获取 https://registry-1.docker.io/v2/:net/http: 等待连接时请求已取消(等待标头时超出 Client.Timeout)localstack_serverless1 |必须指定至少一个容器来源localstack_serverless1 |json:无法将数组解组为类型的 Go 值.ContainerJSON Traceback(最近一次调用最后一次):localstack_serverless1 |文件/opt/code/localstack/localstack/services/awslambda/lambda_api.py",第 602 行,在 run_lambdalocalstack_serverless1 |结果= LAMBDA_EXECUTOR.execute(func_arn,func_details,事件,上下文=上下文,localstack_serverless1 |文件/opt/code/localstack/localstack/services/awslambda/lambda_executors.py",第 176 行,在执行中localstack_serverless1 |返回 do_execute()localstack_serverless1 |文件/opt/code/localstack/localstack/services/awslambda/lambda_executors.py",第 168 行,在 do_executelocalstack_serverless1 |返回 _run(func_arn=func_arn)localstack_serverless1 |文件/opt/code/localstack/localstack/utils/cloudwatch/cloudwatch_util.py",第 149 行,已包装localstack_serverless1 |提高elocalstack_serverless1 |文件/opt/code/localstack/localstack/utils/cloudwatch/cloudwatch_util.py",第 145 行,已包装localstack_serverless1 |结果 = func(*args, **kwargs)localstack_serverless1 |_run 中的文件/opt/code/localstack/localstack/services/awslambda/lambda_executors.py",第 159 行localstack_serverless1 |提高elocalstack_serverless1 |_run 中的文件/opt/code/localstack/localstack/services/awslambda/lambda_executors.py",第 147 行localstack_serverless1 |结果 = self._execute(func_arn,func_details,事件,上下文,版本)localstack_serverless1 |_execute 中的文件/opt/code/localstack/localstack/services/awslambda/lambda_executors.py",第 325 行localstack_serverless1 |结果 = self.run_lambda_executor(cmd,标准输入,env_vars=环境,func_details=func_details)localstack_serverless1 |文件/opt/code/localstack/localstack/services/awslambda/lambda_executors.py",第 231 行,在 run_lambda_executorlocalstack_serverless1 |raise InvocationException('Lambda 进程返回错误状态代码:%s.结果:%s.输出:
%s' %localstack_serverless1 |localstack.services.awslambda.lambda_executors.InvocationException:Lambda 进程返回错误状态代码:1.结果:.输出:localstack_serverless1 |无法在本地找到图像lambci/lambda:nodejs10.x"localstack_serverless1 |来自守护进程的错误响应:获取 https://registry-1.docker.io/v2/:net/http: 等待连接时请求已取消(等待标头时超出 Client.Timeout)localstack_serverless1 |必须指定至少一个容器来源localstack_serverless1 |json:无法将数组解组为 types.ContainerJSON 类型的 Go 值localstack_serverless1 |
我通过将 docker-compose.yml 更改为以下内容来实现此功能:
版本:'3.2'服务:本地堆栈:图片:localstack/localstack-full:最新容器名称:localstack_serverless1端口:- '4566:4566'- '4571:4571'- '8055:8080'环境:# - HOSTNAME_EXTERNAL=localstack- COMPOSE_CONVERT_WINDOWS_PATHS=1- 调试=1- DATA_DIR=/tmp/localstack/数据- LAMBDA_EXECUTOR=码头工人- START_WEB=1- DOCKER_HOST=unix:///var/run/docker.sock- HOST_TMP_FOLDER=./.localstack卷:- './.localstack:/tmp/localstack'- '/var/run/docker.sock:/var/run/docker.sock' # 我不明白这在我的电脑上对应什么?但这是我可以上班的唯一选择!
最后一行很好奇,因为我不明白它在我的 Windows PC 上映射到什么?
I have a problem similar to Unable to invoke lambda function from localstack via aws cli, but with a different symptom. The solution described in that SO does not work for me.
I am running on Windows 10, with the latest versions of Docker, Terraform and LocalStack (as of April/May 2021). All commands are typed into an Windows cmd
window with Administrator permissions, set to the correct working folder.
I start local stack using docker-compose up -d
, with the following docker-compose.yml
version: '3.2'
services:
localstack:
image: localstack/localstack-full:latest
container_name: localstack_serverless1
ports:
- '4566:4566'
- '8055:8080'
environment:
# - HOSTNAME_EXTERNAL=localstack
- COMPOSE_CONVERT_WINDOWS_PATHS=1
- DEBUG=1
- DATA_DIR=/tmp/localstack/data
- LAMBDA_EXECUTOR=docker
- START_WEB=1
#- DOCKER_HOST=unix:///var/run/docker.sock
volumes:
- './.localstack:/tmp/localstack'
- '/var/run/docker.sock:/var/run/docker.sock'
#- './docker.sock:/var/run/docker.sock'
The lines commented out are things I have tried that didn't make a difference.
I then run terraform init
, and terraform apply
, with the following input:
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 3.27"
}
}
required_version = ">= 0.14.9"
}
provider "aws" {
access_key = "mock_access_key"
region = "us-east-1"
s3_force_path_style = true
secret_key = "mock_secret_key"
skip_credentials_validation = true
skip_metadata_api_check = true
skip_requesting_account_id = true
# AWS Provider version held back for this issue:
# https://github.com/localstack/localstack/issues/1818
# (localstack's fix not released yet)
# version = "2.39.0"
endpoints {
apigateway = "http://localhost:4566"
cloudformation = "http://localhost:4566"
cloudwatch = "http://localhost:4566"
dynamodb = "http://localhost:4566"
ec2 = "http://localhost:4566"
es = "http://localhost:4566"
firehose = "http://localhost:4566"
iam = "http://localhost:4566"
kinesis = "http://localhost:4566"
lambda = "http://localhost:4566"
route53 = "http://localhost:4566"
redshift = "http://localhost:4566"
s3 = "http://localhost:4566"
secretsmanager = "http://localhost:4566"
ses = "http://localhost:4566"
sns = "http://localhost:4566"
sqs = "http://localhost:4566"
ssm = "http://localhost:4566"
stepfunctions = "http://localhost:4566"
sts = "http://localhost:4566"
}
}
resource "aws_s3_bucket" "serverless1_bucket1" {
bucket = "serverless1-bucket1"
acl = "private"
}
resource "aws_s3_bucket_object" "upload_code_lambda1" {
bucket = "serverless1-bucket1"
key = "v1.0.0/lambda1.zip"
source = "lambda1.zip"
depends_on = [aws_s3_bucket.serverless1_bucket1]
}
resource "aws_lambda_function" "serverless1_lambda1" {
function_name = "serverless1-lambda1"
# The bucket name as created earlier with "aws s3api create-bucket"
s3_bucket = "serverless1-bucket1"
s3_key = "v1.0.0/lambda1.zip"
# "lambda1" is the filename within the zip file (lambda1.js) and "handler"
# is the name of the property under which the handler function was
# exported in that file.
handler = "lambda1.handler"
runtime = "nodejs10.x"
role = aws_iam_role.lambda_exec.arn
# Ant Waters: I have added this to make lambda creation wait until the code has been uploaded. I'm not sure if it is needed or not.
depends_on = [aws_s3_bucket_object.upload_code_lambda1]
}
# IAM role which dictates what other AWS services the Lambda function
# may access.
resource "aws_iam_role" "lambda_exec" {
name = "serverless_example_lambda"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Effect": "Allow",
"Sid": ""
}
]
}
EOF
}
resource "aws_api_gateway_rest_api" "example" {
name = "ServerlessExample1"
description = "Terraform Serverless Application Example"
}
resource "aws_api_gateway_resource" "proxy" {
rest_api_id = aws_api_gateway_rest_api.example.id
parent_id = aws_api_gateway_rest_api.example.root_resource_id
path_part = "{proxy+}"
}
resource "aws_api_gateway_method" "proxy" {
rest_api_id = aws_api_gateway_rest_api.example.id
resource_id = aws_api_gateway_resource.proxy.id
http_method = "ANY"
authorization = "NONE"
}
resource "aws_api_gateway_integration" "lambda" {
rest_api_id = aws_api_gateway_rest_api.example.id
resource_id = aws_api_gateway_method.proxy.resource_id
http_method = aws_api_gateway_method.proxy.http_method
integration_http_method = "POST"
type = "AWS_PROXY"
uri = aws_lambda_function.serverless1_lambda1.invoke_arn
}
resource "aws_api_gateway_method" "proxy_root" {
rest_api_id = aws_api_gateway_rest_api.example.id
resource_id = aws_api_gateway_rest_api.example.root_resource_id
http_method = "ANY"
authorization = "NONE"
}
resource "aws_api_gateway_integration" "lambda_root" {
rest_api_id = aws_api_gateway_rest_api.example.id
resource_id = aws_api_gateway_method.proxy_root.resource_id
http_method = aws_api_gateway_method.proxy_root.http_method
integration_http_method = "POST"
type = "AWS_PROXY"
uri = aws_lambda_function.serverless1_lambda1.invoke_arn
}
resource "aws_api_gateway_deployment" "example" {
depends_on = [
aws_api_gateway_integration.lambda,
aws_api_gateway_integration.lambda_root,
]
rest_api_id = aws_api_gateway_rest_api.example.id
stage_name = "test"
}
resource "aws_lambda_permission" "apigw" {
statement_id = "AllowAPIGatewayInvoke"
action = "lambda:InvokeFunction"
function_name = aws_lambda_function.serverless1_lambda1.function_name
principal = "apigateway.amazonaws.com"
# The "/*/*" portion grants access from any method on any resource
# within the API Gateway REST API.
source_arn = "${aws_api_gateway_rest_api.example.execution_arn}/*/*"
}
output "base_url" {
value = aws_api_gateway_deployment.example.invoke_url
}
The gateway stuff is copied from a tutorial, and I don't understand it yet.
I can then see the lambda in "https://app.localstack.cloud/resources" and "https://app.localstack.cloud/resources/gateway", and there is an Invoke button on the gateway page. However, when I press this nothing seems to happen, except an error log in CloudWatch:
Similarly, I can see the function using the AWS CLI, with the call:
aws lambda get-function --function-name "serverless1-lambda1" --endpoint-url=http://localhost:4566
which returns:
{
"Configuration": {
"FunctionName": "serverless1-lambda1",
"FunctionArn": "arn:aws:lambda:us-east-1:000000000000:function:serverless1-lambda1",
"Runtime": "nodejs10.x",
"Role": "arn:aws:iam::000000000000:role/serverless_example_lambda",
"Handler": "lambda1.handler",
"CodeSize": 342,
"Description": "",
"Timeout": 3,
"MemorySize": 128,
"LastModified": "2021-05-07T10:17:32.305+0000",
"CodeSha256": "qoP7ORF4AUC8VJWLR0bGGRRKGtNrQwRj2hCa1n+3wk4=",
"Version": "$LATEST",
"VpcConfig": {},
"TracingConfig": {
"Mode": "PassThrough"
},
"RevisionId": "ea163f0f-81ce-4b3a-a0d1-7b44379c6492",
"State": "Active",
"LastUpdateStatus": "Successful",
"PackageType": "Zip"
},
"Code": {
"Location": "http://localhost:4566/2015-03-31/functions/serverless1-lambda1/code"
},
"Tags": {}
}
However, when I try to invoke it using:
aws --endpoint-url=http://localhost:4566 lambda invoke --function-name "serverless1-lambda1" output.json
The return is:
{
"errorMessage": "Lambda process returned error status code: 1. Result: . Output:
Unable to find image 'lambci/lambda:nodejs10.x' locally
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
must specify at least one container source
json: cannot unmarshal array into Go value of type types.ContainerJSON",
"errorType": "InvocationException",
"stackTrace": [
" File "/opt/code/localstack/localstack/services/awslambda/lambda_api.py", line 602, in run_lambda
result = LAMBDA_EXECUTOR.execute(func_arn, func_details, event, context=context,
",
" File "/opt/code/localstack/localstack/services/awslambda/lambda_executors.py", line 176, in execute
return do_execute()
",
" File "/opt/code/localstack/localstack/services/awslambda/lambda_executors.py", line 168, in do_execute
return _run(func_arn=func_arn)
",
" File "/opt/code/localstack/localstack/utils/cloudwatch/cloudwatch_util.py", line 149, in wrapped
raise e
",
" File "/opt/code/localstack/localstack/utils/cloudwatch/cloudwatch_util.py", line 145, in wrapped
result = func(*args, **kwargs)
",
" File "/opt/code/localstack/localstack/services/awslambda/lambda_executors.py", line 159, in _run
raise e
",
" File "/opt/code/localstack/localstack/services/awslambda/lambda_executors.py", line 147, in _run
result = self._execute(func_arn, func_details, event, context, version)
",
" File "/opt/code/localstack/localstack/services/awslambda/lambda_executors.py", line 325, in _execute
result = self.run_lambda_executor(cmd, stdin, env_vars=environment, func_details=func_details)
",
" File "/opt/code/localstack/localstack/services/awslambda/lambda_executors.py", line 231, in run_lambda_executor
raise InvocationException('Lambda process returned error status code: %s. Result: %s. Output:\n%s' %
"
]
}
and the Docker window trace shows:
localstack_serverless1 | 2021-05-07T10:59:50:WARNING:localstack.services.awslambda.lambda_executors: Empty event body specified for invocation of Lambda "arn:aws:lambda:us-east-1:000000000000:function:serverless1-lambda1"
localstack_serverless1 | 2021-05-07T10:59:50:INFO:localstack.services.awslambda.lambda_executors: Running lambda cmd: CONTAINER_ID="$(docker create -i -e AWS_REGION="$AWS_REGION" -e DOCKER_LAMBDA_USE_STDIN="$DOCKER_LAMBDA_USE_STDIN" -e LOCALSTACK_HOSTNAME="$LOCALSTACK_HOSTNAME" -e EDGE_PORT="$EDGE_PORT" -e _HANDLER="$_HANDLER" -e AWS_LAMBDA_FUNCTION_TIMEOUT="$AWS_LAMBDA_FUNCTION_TIMEOUT" -e AWS_LAMBDA_FUNCTION_NAME="$AWS_LAMBDA_FUNCTION_NAME" -e AWS_LAMBDA_FUNCTION_VERSION="$AWS_LAMBDA_FUNCTION_VERSION" -e AWS_LAMBDA_FUNCTION_INVOKED_ARN="$AWS_LAMBDA_FUNCTION_INVOKED_ARN" -e AWS_LAMBDA_COGNITO_IDENTITY="$AWS_LAMBDA_COGNITO_IDENTITY" -e NODE_TLS_REJECT_UNAUTHORIZED="$NODE_TLS_REJECT_UNAUTHORIZED" --rm "lambci/lambda:nodejs10.x" "lambda1.handler")";docker cp "/tmp/localstack/zipfile.9cb3ff88/." "$CONTAINER_ID:/var/task"; docker start -ai "$CONTAINER_ID";
localstack_serverless1 | 2021-05-07T11:00:05:DEBUG:localstack.services.awslambda.lambda_executors: Lambda arn:aws:lambda:us-east-1:000000000000:function:serverless1-lambda1 result / log output:
localstack_serverless1 |
localstack_serverless1 | > Unable to find image 'lambci/lambda:nodejs10.x' locally
localstack_serverless1 | > Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
localstack_serverless1 | > must specify at least one container source
localstack_serverless1 | > json: cannot unmarshal array into Go value of type types.ContainerJSON
localstack_serverless1 | 2021-05-07T11:00:05:INFO:localstack.services.awslambda.lambda_api: Error executing Lambda function arn:aws:lambda:us-east-1:000000000000:function:serverless1-lambda1: Lambda process returned error status code: 1. Result: . Output:
localstack_serverless1 | Unable to find image 'lambci/lambda:nodejs10.x' locally
localstack_serverless1 | Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
localstack_serverless1 | must specify at least one container source
localstack_serverless1 | json: cannot unmarshal array into Go value of type types.ContainerJSON Traceback (most recent call last):
localstack_serverless1 | File "/opt/code/localstack/localstack/services/awslambda/lambda_api.py", line 602, in run_lambda
localstack_serverless1 | result = LAMBDA_EXECUTOR.execute(func_arn, func_details, event, context=context,
localstack_serverless1 | File "/opt/code/localstack/localstack/services/awslambda/lambda_executors.py", line 176, in execute
localstack_serverless1 | return do_execute()
localstack_serverless1 | File "/opt/code/localstack/localstack/services/awslambda/lambda_executors.py", line 168, in do_execute
localstack_serverless1 | return _run(func_arn=func_arn)
localstack_serverless1 | File "/opt/code/localstack/localstack/utils/cloudwatch/cloudwatch_util.py", line 149, in wrapped
localstack_serverless1 | raise e
localstack_serverless1 | File "/opt/code/localstack/localstack/utils/cloudwatch/cloudwatch_util.py", line 145, in wrapped
localstack_serverless1 | result = func(*args, **kwargs)
localstack_serverless1 | File "/opt/code/localstack/localstack/services/awslambda/lambda_executors.py", line 159, in _run
localstack_serverless1 | raise e
localstack_serverless1 | File "/opt/code/localstack/localstack/services/awslambda/lambda_executors.py", line 147, in _run
localstack_serverless1 | result = self._execute(func_arn, func_details, event, context, version)
localstack_serverless1 | File "/opt/code/localstack/localstack/services/awslambda/lambda_executors.py", line 325, in _execute
localstack_serverless1 | result = self.run_lambda_executor(cmd, stdin, env_vars=environment, func_details=func_details)
localstack_serverless1 | File "/opt/code/localstack/localstack/services/awslambda/lambda_executors.py", line 231, in run_lambda_executor
localstack_serverless1 | raise InvocationException('Lambda process returned error status code: %s. Result: %s. Output:
%s' %
localstack_serverless1 | localstack.services.awslambda.lambda_executors.InvocationException: Lambda process returned error status code: 1. Result: . Output:
localstack_serverless1 | Unable to find image 'lambci/lambda:nodejs10.x' locally
localstack_serverless1 | Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
localstack_serverless1 | must specify at least one container source
localstack_serverless1 | json: cannot unmarshal array into Go value of type types.ContainerJSON
localstack_serverless1 |
I got this working by changing docker-compose.yml to the following:
version: '3.2'
services:
localstack:
image: localstack/localstack-full:latest
container_name: localstack_serverless1
ports:
- '4566:4566'
- '4571:4571'
- '8055:8080'
environment:
# - HOSTNAME_EXTERNAL=localstack
- COMPOSE_CONVERT_WINDOWS_PATHS=1
- DEBUG=1
- DATA_DIR=/tmp/localstack/data
- LAMBDA_EXECUTOR=docker
- START_WEB=1
- DOCKER_HOST=unix:///var/run/docker.sock
- HOST_TMP_FOLDER=./.localstack
volumes:
- './.localstack:/tmp/localstack'
- '/var/run/docker.sock:/var/run/docker.sock' # I don't understand what this corresponds to on my PC? But it is the only option I can get to work!
The last line is very curious, as I don't understand what that maps to on my windows PC?
这篇关于Localstack Lambda Invoke 在 Windows 上失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!