jenkins - 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/**
解决方案
在您使用的 testFunc 的描述中${opt:stage}
。如果您直接使用它,则需要在运行 deploy 命令时传递 --stage 标志。
你应该做的是使用${self:provider.stage}
,因为你将在那里计算阶段。
推荐阅读
- php - 如何将一个巨大的科学计数法数字转换为浮点数或双精度数?
- reactjs - 如何使用注入的属性实例化反应组件
- html - Angular Material Schematics 生成的代码
- curl - 不支持的媒体类型,即使没有在标头中传递任何 Content-Type
- docker - Traefik 和 https 私有存储库 - tls 错误
- java - 杰克逊注释不适用于多对多关系:无限循环
- f# - 将变量定义注入 F# 引用
- haskell - 为什么有一个用于 exceptT 的 MonadMask 实例?
- go - 有没有办法操纵延迟堆栈?
- ios - Flutter:未连接到 Android Studio 中的 IOS 模拟器