无服务器事件丢失

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 格式定义所有资源及其操作。