【发布时间】:2020-09-19 02:43:56
【问题描述】:
我开始尝试使用 node 和 puppeteer 编写 lambda 函数。我正在使用无服务器框架
我一直在尝试关注 https://codissimo.sinumo.tech/2019/12/27/serverless-puppeteer-with-aws-lambda-layers-and-node-js/ 以使用在 https://github.com/shelfio/chrome-aws-lambda-layer 提供的 chrome。我的功能在本地按预期工作。
我的 handler.js 包含:
module.exports.main = async event => {
console.log('IN HANDLER');
return {
statusCode: 200,
body: JSON.stringify(
{
message: 'main function executed!',
input: event,
},
null,
2
),
};
我的 index.js 包含一个长时间运行(45-60 秒)的 puppeteer 函数(main),它返回一个对象数组:
async function main(event, context, callback) {
const chromium = require('chrome-aws-lambda');
...................................
var obj_arr = [];
var keys = head[0];
for (let index = 0; index < body.length; index++) {
var row = body[index];
var obj = {};
for (let i = 0; i < keys.length; i++) {
var k = keys[i];
obj[k] = row[i];
console.log(obj);
}
obj_arr.push(obj);
};
console.log(obj_arr);
return obj_arr;
使用无服务器框架将我的函数上传到 lambda 后没有错误。我按照文章底部关于在我的图层仪表板中测试预配置 chrome 的说明进行操作。正如您在屏幕截图中看到的那样,它似乎工作正常。
对此我是全新的,我不明白日志输出:
START RequestId: f62dcf47-e2ff-4a96-9807-b34c39f218e3 Version: $LATEST
2020-05-31T19:10:21.280Z f62dcf47-e2ff-4a96-9807-b34c39f218e3 INFO SERVERLESS_ENTERPRISE {"c":true,"b":"H4sIAAAAAAAAA7VWbU/cOBD+Kyi6D3fSJms7ifNSIR1aoK1UKsouVe+ADyZxdlMSO9gJL0X732+cZF9ZEJzUL7CZeTyemWf82E+WVPk0F1Zs6ULbbMpFbQ0sncx4yb5zpXNpfMhBYK3zkuualRVYCCLIRr7t4gmOYoxigh0ShP8CTPHbBnCfU4BllKRJ5gU2J1lmeyyidhSiwL52vcSNMoJD7prIjxUHdK2Y0CypzaYDq2KPhWQQ5anPZ9KhtK0rJl7MUlZcMRPiKys7+FpYO2vEIj6UoupJ3oJ2l+OZcrhIXwW1NadNt6cVuw5ClAQuxIcsR1LU/KE2NUAWCX9PU8z6Fo+J5+IsRLYbUNf2QopsljFkezhKSYhpwMNrwD9MljucSVnvY9vnqYcwTgDpRiRKeeZSlvihl0VeSpIo+XDKFDC+j9yMJggSSVOCvYR/GAPLBU/3kTUHdthU72Dhpbb+z9lpmy3V1BQgmqIYWKyqijzZ4JIXBVdmE67u8oSvmesZL5hIhbzvqJ0unCm/A8siwZ0rbMDYJctFn6hsgDE6sBJZVk3N+4rZvXYKVl6nzFq6zhpRd8Ox8jpCpvyndjBxMHXcNTCfdi1ptM2Zrm288p3wUqrHcf7LxMKIeNuuc80Ns0+XltL6EuYsotSn1BtcWjPOqomsWQFmjJChmvZmswqslLoB8kIwwjByJToojjANw/n2TqdcJTAU0MFuT+T4oR+5gb/EmamGbnF1XnXVI6iUBL7nmrnvQZ/1SBbp2BwyK65Vw1ceAfwIGFVxJzt6RxL6CBmtdmh0Lcvx5sD1PhtabW8Tsb5ge/Y2IMdvHYSdq1ah//hyMDkaT7aBB8o4mRIxZBl3WcZLvmPs+6ZN1EUejRczGb8xidfmp0O8MkUdwLT8hq+O2Gbu9/rs/dq9EeLHb9GgrU2+yOlHJZuqp3AInR52nR6+sZMQYVwrzso+hFGkIfKHLh5e9MReURJGDLtpkEQIimchYYTD34S51zjJyHbMI3F3WrA6k6qEiEUumocdkAOVzMD9QJ9RA86OvvYow2EgOIJJ8T3vJeCx4tyc+MAPgBhMn+NGVQPKbV2AapQgSubUX1qf4Uoq/jz7a+8Hl8L8P1Uy4VpLtff3HnF89PHTr0sLtEJXvFUP4iMEn62EwycEa0B/WwVpHQKUGL7MT/1oEL7b2vO0MHYSwqh0IXJ1a4Dz+eA3ZdQ7nmVEvK2MCA42M7oyV/0dDGIvN424gQkSS+vb7q8WO5YNKOjiiLWmXp6MqC6vJK6UVKuj2H4es5b7NcuoKSqV1xu2o4eEV0Y5ulx3eU6gfe1mu5yQR3LTvkcW/rW7/D1PjpoLJjq1kG3kmYQ2YaNLcHmf58ZRfvqZfvNn3yYn9+NDF539g5cLO8D3sNCH09vR4bFOk1l0gkzkqmjgWbqSW9ehThu3NqdjDE8jbfh976sKXjOFbF8z8+6BBT8vrhYct++ci6v5/D/G0CmZFwsAAA==","origin":"sls-agent"}
END RequestId: f62dcf47-e2ff-4a96-9807-b34c39f218e3
REPORT RequestId: f62dcf47-e2ff-4a96-9807-b34c39f218e3 Duration: 14.09 ms Billed Duration: 100 ms Memory Size: 1024 MB Max Memory Used: 71 MB Init Duration: 190.72 ms
当我通过 api 网关运行部署的函数时,我得到了类似的日志输出,但我没有看到 console.log 在我的本地函数中,我能够看到 console.log 语句或返回的对象数组看看我什么时候在本地运行。运行时如何在已部署的 lambda 函数中查看它们?
编辑:
我添加了我认为您所指内容的屏幕截图。我没有看到我在本地看到的控制台记录输出。你能进一步解释一下还是我找错地方了?
编辑1:
{ origin: 'sls-agent',
schemaVersion: '0.0',
timestamp: '2020-06-03T13:13:52.763Z',
requestId: 'f4a4cb9b-3e09-46d3-adba-6f14753cdce3',
type: 'transaction',
payload:
{ schemaType: 's-span',
.....
tags:
{ schemaType: 's-transaction-function',
schemaVersion: '0.0',
timestamp: '2020-06-03T13:13:52.758Z',
orgId: null,
applicationName: 'xxxx',
serviceName: 'xxxxxx',
stageName: 'dev',
functionName: 'xxxxx-dev-main',
timeout: 6,
computeType: 'aws.lambda',
computeRuntime: 'aws.lambda.nodejs.12.16.3',
computeRegion: 'us-east-1',
computeMemorySize: '1024',
computeMemoryUsed:
'{"rss":39337984,"heapTotal":10039296,"heapUsed":6716000,"external":1191688}',
......
eventCustomRequestTime: '03/Jun/2020:13:13:51 +0000',
eventCustomRequestTimeEpoch: 1591190031809,
eventCustomHttpPath: '/main/get',
eventCustomHttpMethod: 'GET',
eventCustomXTraceId: 'Root=1-5ed7a20f-9a64d880002f1600092ec680',
eventCustomXForwardedFor: null,
eventCustomUserAgent:
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0',
errorId: null,
errorFatal: null,
errorCulprit: null,
errorExceptionType: null,
errorExceptionMessage: null,
errorExceptionStacktrace: null,
transactionId: '77fef8cb-3f2c-4f5a-be2c-7fcd51e9ed92',
tenantId: 'option88',
appUid: 'mHjdQ5hQ0RY1',
tenantUid: 'V8lsDgch9M0b',
pluginVersion: '3.6.11',
totalSpans: 0,
traceId: 'f4a4cb9b-3e09-46d3-adba-6f14753cdce3' },
logs: {},
spans: [],
eventTags: [] } }
编辑2:
编辑3:
我将处理程序更改为:
'use strict';
var index = require('./index.js');
module.exports.main = async event => {
var res = await index.main();
console.log('hello');
console.log(res);
console.log('IN HANDLER');
return {
statusCode: 200,
body: JSON.stringify(
{
message: 'main function executed!',
input: event,
},
null,
2
),
};
};
现在看到错误消息。
【问题讨论】:
-
“我没有看到我在本地看到的控制台记录的输出” - 你能解释一下你在本地看到了什么,或者你希望在 CW 日志中看到什么?
-
嗨@Marcin,我已经更新了问题...
标签: node.js amazon-web-services google-chrome aws-lambda serverless-framework