【发布时间】:2021-06-21 03:30:28
【问题描述】:
我正在按照以下示例设置 Lambda Edge 函数:
https://www.serverless.com/blog/lambda-at-edge-support-added
代码:./handler.js
// SAME CODE STRUCTURE AS ORIGINAL, JUST ADDING A HEADER TO TEST
'use strict';
exports.handler = (event, context, callback) => {
const response = event.Records[0].cf.response;
const headers = response.headers;
headers['test-lambda-edge'] = [{ key: 'test-lambda-edge', value: 'working' }]
callback(null, response);
};
配置:./serverless.yml
# SAME CONFIG AS ORIGINAL, JUST CHANGING eventType and origin
service: mylambda
provider:
name: aws
runtime: nodejs12.x
lambdaHashingVersion: 20201221
functions:
cfLambda:
handler: functions/handler.cloudfront
events:
- cloudFront:
eventType: origin-response
origin: https://example.org
函数部署正确:
$ sls deploy
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
Serverless: Uploading mylambda.zip file to S3 (554 B)...
Serverless: Validating template...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
................
Serverless: Stack update finished...
Service Information
service: mylambda
stage: dev
region: us-east-1
stack: mylambda-dev
resources: 8
api keys:
None
endpoints:
CloudFront - ---------------.cloudfront.net
functions:
cfLambda: mylambda-dev-cfLambda
layers:
None
我正在使用 Amazon CloudFront Modify Response Headers 测试模板进行测试。
尝试 1) 使用与 article 命名相同的处理程序
我收到以下错误,我可以理解为文章似乎有误,未定义云端功能:
"errorMessage": "functions/handler.cloudfront 是否未定义 出口”
尝试 2) 尝试修复 serverless.yml
我将handler: functions/handler.cloudfront 替换为handler: functions/handler 以匹配代码,但出现以下错误:
{"errorType":"Runtime.MalformedHandlerName","errorMessage":"Bad handler","stack":["Runtime.MalformedHandlerName: Bad handler"," at _splitHandlerString
如果我查看官方文档,处理程序命名是相同的(即exports.handler = ):
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-edge-how-it-works-tutorial.html
'use strict';
exports.handler = (event, context, callback) => {
问:我应该如何在代码/配置中命名我的处理程序?
【问题讨论】:
标签: node.js amazon-web-services aws-lambda handler serverless-framework