Amazon s3 使用localstack从s3调用lambda时出现问题
我正在使用localstack并试图让lambda的s3调用正常工作。我可以成功地从cli调用lambda,s3似乎正在尝试,但什么也没发生 我使用以下命令创建了lambda:Amazon s3 使用localstack从s3调用lambda时出现问题,amazon-s3,aws-lambda,localstack,Amazon S3,Aws Lambda,Localstack,我正在使用localstack并试图让lambda的s3调用正常工作。我可以成功地从cli调用lambda,s3似乎正在尝试,但什么也没发生 我使用以下命令创建了lambda: $ awslocal lambda create-function --function-name mylambda-local --zip-file fileb://mylambda.zip --handler mylambda --runtime go1.x --role somerole { "Functi
$ awslocal lambda create-function --function-name mylambda-local --zip-file fileb://mylambda.zip --handler mylambda --runtime go1.x --role somerole
{
"FunctionName": "mylambda-local",
"FunctionArn": "arn:aws:lambda:us-east-1:000000000000:function:mylambda-local",
"Runtime": "go1.x",
"Role": "somerole",
"Handler": "mylambda",
"CodeSize": 7968172,
"Description": "",
"Timeout": 3,
"LastModified": "2019-08-22T15:16:32.638+0000",
"CodeSha256": "jyMyhp6H2FryoUGqH1Pyj911KIZO66KLnJs6cWGVb84=",
"Version": "$LATEST",
"TracingConfig": {
"Mode": "PassThrough"
},
"RevisionId": "028c8385-ec67-4fe4-b77a-5db05282005a"
}
然后,我从cli调用lambda,如下所示:
$ awslocal lambda invoke --function-name mylambda-local --payload='{}' out --log-type Tail
{
"StatusCode": 200
}
在localstack中,我看到了这个输出。“Lambda start”和“S3 event received”是我的日志消息,所以我知道到目前为止它工作正常
localstack_1 | 2019-08-22T15:54:56:DEBUG:localstack.services.awslambda.lambda_executors: Lambda arn:aws:lambda:us-east-1:000000000000:mylambda-local result / log output:
localstack_1 | null
localstack_1 | >{"level":"info","msg":"Lambda starting","time":"2019-08-22T15:54:56Z"}
localstack_1 | > START RequestId: 6d2cc238-bc8f-1d42-17d7-10a95d4d2109 Version: $LATEST
localstack_1 | > {"level":"info","msg":"S3 event received","time":"2019-08-22T15:54:56Z"}
localstack_1 | > END RequestId: 6d2cc238-bc8f-1d42-17d7-10a95d4d2109
localstack_1 | > REPORT RequestId: 6d2cc238-bc8f-1d42-17d7-10a95d4d2109 Duration: 1.05 ms Billed Duration: 100 ms Memory Size: 1536 MB Max Memory Used: 10 MB
接下来,我创建我的bucket,设置一个事件通知,并推送一个文件
$ awslocal s3 mb s3://test-bucket
$ awslocal s3api put-bucket-notification-configuration --bucket test-bucket --notification-configuration file://notification.json
$ awslocal s3api get-bucket-notification-configuration --bucket test-bucket
{
"LambdaFunctionConfigurations": [
{
"Id": "bfc3da24-6b82-4f03-b5dc-03e49f4059b6",
"LambdaFunctionArn": "arn:aws:lambda:us-east-1:000000000000:function:mylambda-local",
"Events": [
"s3:ObjectCreated:*"
],
"Filter": {}
}
]
}
$ awslocal s3 cp test.txt s3://test-bucket
此时,我在localstack中看到了以下内容。看起来它想调用我的lambda。所有lambda执行跟踪看起来与我直接运行它时发生的情况完全相同,但实际上似乎什么都没有发生
localstack_1 | 2019-08-22 15:17:33,314:API: 127.0.0.1 - - [22/Aug/2019 15:17:33] "PUT /test-bucket/test.txt HTTP/1.1" 200 -
localstack_1 | 2019-08-22 15:17:33,341:API: 172.18.0.2 - - [22/Aug/2019 15:17:33] "GET / HTTP/1.1" 404 -
localstack_1 | 2019-08-22 15:17:33,348:API: 172.18.0.2 - - [22/Aug/2019 15:17:33] "POST / HTTP/1.1" 200 -
localstack_1 | 2019-08-22 15:17:33,354:API: 172.18.0.2 - - [22/Aug/2019 15:17:33] "POST / HTTP/1.1" 200 -
localstack_1 | 2019-08-22 15:17:33,361:API: 172.18.0.2 - - [22/Aug/2019 15:17:33] "POST / HTTP/1.1" 200 -
localstack_1 | 2019-08-22 15:17:33,368:API: 172.18.0.2 - - [22/Aug/2019 15:17:33] "POST / HTTP/1.1" 200 -
localstack_1 | 2019-08-22T15:17:33:DEBUG:localstack.services.awslambda.lambda_executors: Running lambda cmd: CONTAINER_ID="$(docker create -e AWS_LAMBDA_EVENT_BODY="$AWS_LAMBDA_EVENT_BODY" -e HOSTNAME="$HOSTNAME" -e LOCALSTACK_HOSTNAME="$LOCALSTACK_HOSTNAME" -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" "lambci/lambda:go1.x" "mylambda")";docker cp "/tmp/localstack/zipfile.45928c79/." "$CONTAINER_ID:/var/task"; docker start -a "$CONTAINER_ID";
localstack_1 | 2019-08-22T15:17:33:DEBUG:localstack.services.awslambda.lambda_executors: Lambda arn:aws:lambda:us-east-1:000000000000:function:mylambda-local result / log output:
localstack_1 | {"asynchronous": "True"}
localstack_1 | >Lambda executed asynchronously
我希望在localstack中看到与通过cli直接调用lambda时相同的输出。相反,看起来lambda实际上没有被调用。Localstack刚刚说mylambda执行了异步,没有任何明显的变化
有人能指出我遗漏了什么吗
谢谢 嘿,你有什么解决办法吗?嘿,你有什么解决办法吗?