无服务器事件丢失
serverless events are missing
我的无服务器配置存在问题,导致在没有触发器的情况下部署 lambda 函数。
我有一个主要的serverless.yml技能,如下:
服务:${文件(./${env:DEPLOY_FILE_NAME}):服务}
provider:
name: aws
custom:
globalSchedule: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):globalSchedule}
roleName: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):roleName}
profileName: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):profileName}
plugins:
- pluginHandler
runtime: nodejs4.3
cfLogs: true
stage: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):stage}
region: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):region}
memorySize: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):memorySize}
timeout: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):timeout}
keepWarm: false
useApigateway: false
events:
${file(./${env:DEPLOY_FILE_NAME}):events}
package:
exclude:
${file(./${env:DEPLOY_FILE_NAME}):exclude}
functions:
smartHome:
handler: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):handler}
然后,我有两套yaml设置文件。一个用于 ${skill_type}_${localization} 即 customskill_eu.yml
另一个阶段特定的 ${skill_type}${localization}{$ stage} 比如 smarthome_us_dev.yml
等等
service: alexa-SmartHomeSkillAdapter
exclude:
- app.js
- .idea/**
- .npmignore/**
- .jshintrc
- build/**
- documentation.docx
- dist/**
- event.json
- lambda_function_custom_skill.js
- resources/**
- custom_skill_eu.yml
- custom_skill_us.yml
- smart_home_eu.yml
- smart_home_us.yml
- serverless_settings/**
- tests/**
events:
- s3: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):s3}
- alexaSmartHome: amzn1.ask.skill.d48263be-c7ef-4d61-a773-d6431567e6d6
怎么了?请指教
谢谢。
您需要向函数中添加事件。通读无服务器 documentation 事件。
目前,无服务器支持由 API GateWay、Kinesis、DynamoDB、S3、Schedule、SNS 和 Alexa Skill 调用的 lambda。 (read more)
所以在这种情况下,添加一个必需的 events
标签应该可以解决您的问题。
...
functions:
smartHome:
handler: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):handler}
events: ${file(./${env:DEPLOY_FILE_NAME}):events}
...
或者,您始终可以在无服务器 resources
节点中使用传统的 CloudFormation 格式定义所有资源及其操作。
我的无服务器配置存在问题,导致在没有触发器的情况下部署 lambda 函数。
我有一个主要的serverless.yml技能,如下:
服务:${文件(./${env:DEPLOY_FILE_NAME}):服务}
provider:
name: aws
custom:
globalSchedule: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):globalSchedule}
roleName: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):roleName}
profileName: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):profileName}
plugins:
- pluginHandler
runtime: nodejs4.3
cfLogs: true
stage: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):stage}
region: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):region}
memorySize: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):memorySize}
timeout: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):timeout}
keepWarm: false
useApigateway: false
events:
${file(./${env:DEPLOY_FILE_NAME}):events}
package:
exclude:
${file(./${env:DEPLOY_FILE_NAME}):exclude}
functions:
smartHome:
handler: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):handler}
然后,我有两套yaml设置文件。一个用于 ${skill_type}_${localization} 即 customskill_eu.yml
另一个阶段特定的 ${skill_type}${localization}{$ stage} 比如 smarthome_us_dev.yml
等等
service: alexa-SmartHomeSkillAdapter
exclude:
- app.js
- .idea/**
- .npmignore/**
- .jshintrc
- build/**
- documentation.docx
- dist/**
- event.json
- lambda_function_custom_skill.js
- resources/**
- custom_skill_eu.yml
- custom_skill_us.yml
- smart_home_eu.yml
- smart_home_us.yml
- serverless_settings/**
- tests/**
events:
- s3: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):s3}
- alexaSmartHome: amzn1.ask.skill.d48263be-c7ef-4d61-a773-d6431567e6d6
怎么了?请指教
谢谢。
您需要向函数中添加事件。通读无服务器 documentation 事件。
目前,无服务器支持由 API GateWay、Kinesis、DynamoDB、S3、Schedule、SNS 和 Alexa Skill 调用的 lambda。 (read more)
所以在这种情况下,添加一个必需的 events
标签应该可以解决您的问题。
...
functions:
smartHome:
handler: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):handler}
events: ${file(./${env:DEPLOY_FILE_NAME}):events}
...
或者,您始终可以在无服务器 resources
节点中使用传统的 CloudFormation 格式定义所有资源及其操作。