无服务器框架忽略 CLI 选项
Serverless framework is ignoring CLI options
在使用无服务器部署我的函数时,我正在尝试动态传递选项以解决问题,但它们始终为 null 或命中回退。
custom:
send_grid_api: ${opt:sendgridapi, 'missing'}
SubscribedUsersTable:
name: !Ref UsersSubscriptionTable
arn: !GetAtt UsersSubscriptionTable.Arn
bundle:
linting: false
provider:
name: aws
lambdaHashingVersion: 20201221
runtime: nodejs12.x
memorySize: 256
stage: ${opt:stage, 'dev'}
region: us-west-2
environment:
STAGE: ${self:provider.stage}
SEND_GRID_API_KEY: ${self:custom.send_grid_api}
我也试过:
environment:
STAGE: ${self:provider.stage}
SEND_GRID_API_KEY: ${opt:sendgridapi, 'missing'}
两者都产生 'missing',但为什么呢?
sls deploy --stage=prod --sendgridapi=xxx
如果我尝试使用 space 而不是 =.
也会失败
编辑:工作解决方案
在我的 github 操作模板中,我定义了以下内容:
- name: create env file
run: |
touch .env
echo SEND_GRID_API_KEY=${{ secrets.SEND_GRID_KEY }} >> .env
ls -la
pwd
此外,我明确设置了这个阶段的工作目录,如下所示:
working-directory: /home/runner/work/myDir/myDir/
在我的 serverless.yml
中,我添加了以下内容:
environment:
SEND_GRID_API_KEY: ${env:SEND_GRID_API_KEY}
sls
将从文件中读取内容并正确加载它们
opt
用于无服务器的 CLI 选项。这些是 serverless
的一部分,不是您自己的代码。
您可以改为使用...
provider:
...
environment:
...
SEND_GRID_API_KEY: ${env:SEND_GRID_API_KEY}
并在部署步骤中将值作为环境变量传递。
- name: Deploy
run: sls deploy --stage=prod
env:
SEND_GRID_API_KEY: "insert api key here"
在使用无服务器部署我的函数时,我正在尝试动态传递选项以解决问题,但它们始终为 null 或命中回退。
custom:
send_grid_api: ${opt:sendgridapi, 'missing'}
SubscribedUsersTable:
name: !Ref UsersSubscriptionTable
arn: !GetAtt UsersSubscriptionTable.Arn
bundle:
linting: false
provider:
name: aws
lambdaHashingVersion: 20201221
runtime: nodejs12.x
memorySize: 256
stage: ${opt:stage, 'dev'}
region: us-west-2
environment:
STAGE: ${self:provider.stage}
SEND_GRID_API_KEY: ${self:custom.send_grid_api}
我也试过:
environment:
STAGE: ${self:provider.stage}
SEND_GRID_API_KEY: ${opt:sendgridapi, 'missing'}
两者都产生 'missing',但为什么呢?
sls deploy --stage=prod --sendgridapi=xxx
如果我尝试使用 space 而不是 =.
也会失败编辑:工作解决方案
在我的 github 操作模板中,我定义了以下内容:
- name: create env file
run: |
touch .env
echo SEND_GRID_API_KEY=${{ secrets.SEND_GRID_KEY }} >> .env
ls -la
pwd
此外,我明确设置了这个阶段的工作目录,如下所示:
working-directory: /home/runner/work/myDir/myDir/
在我的 serverless.yml
中,我添加了以下内容:
environment:
SEND_GRID_API_KEY: ${env:SEND_GRID_API_KEY}
sls
将从文件中读取内容并正确加载它们
opt
用于无服务器的 CLI 选项。这些是 serverless
的一部分,不是您自己的代码。
您可以改为使用...
provider:
...
environment:
...
SEND_GRID_API_KEY: ${env:SEND_GRID_API_KEY}
并在部署步骤中将值作为环境变量传递。
- name: Deploy
run: sls deploy --stage=prod
env:
SEND_GRID_API_KEY: "insert api key here"