首页 > 解决方案 > aws serverless.yml 文件“找不到满足声明‘opt:stage’的有效选项”错误

问题描述

尝试运行无服务器时收到以下警告。

无服务器警告 --------------------------------------------

找不到满足声明“opt:stage”的有效选项。下面是我的 serverless.yml 文件

# Serverless Config
service: api-service

# Provider
    provider:
      name: aws
      runtime: nodejs8.10
      region: ${opt:region, 'ap-east-1'}
      stage: ${opt:stage, 'dev'}
      # Enviroment Varibles
      environment:
        STAGE: ${self:custom.myStage}
        MONGO_DB_URI: ${file(./serverless.env.yml):${opt:stage}.MONGO_DB_URI}
        LAMBDA_ONLINE: ${file(./serverless.env.yml):${opt:stage}.LAMBDA_ONLINE}


    # Constants Varibles
    custom:
        # environments Variables used for convert string in upper case format
        environments:
        myStage: ${opt:stage, self:provider.stage}
        stages:
          - dev
          - qa
          - staging
          - production
        region:
          dev: 'ap-east-1'
          stage: 'ap-east-1'
          production: 'ap-east-1'

    # Function
    functions:
      testFunc:
        handler: index.handler
        description: ${opt:stage} API's
        events:
          - http:
              method: any
              path: /{proxy+}
              cors:
                origin: '*'

    #package
    package:
      exclude:
        - .env
        - node_modules/aws-sdk/**
        - node_modules/**

标签: jenkinsaws-lambdaserverless

解决方案


在您使用的 testFunc 的描述中${opt:stage}。如果您直接使用它,则需要在运行 deploy 命令时传递 --stage 标志。

你应该做的是使用${self:provider.stage},因为你将在那里计算阶段。


推荐阅读