无服务器框架正在忽略CLI选项



当使用无服务器部署函数时,我试图动态传递要解决的选项,但它们总是为空或处于回退状态。

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'}

两者都会产生"缺失",但为什么呢?

sls deploy --stage=prod --sendgridapi=xxx

如果我尝试使用空格而不是=,也会失败。

编辑:工作解决方案

在我的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"

最新更新