如何从环境变量中注入无服务器参数?

问题描述 投票:0回答:1

我正在尝试使用无服务器到AWS进行部署,但是出现以下错误。

发生错误:{ProjectName}-无效的状态机定义:'SCHEMA_VALIDATION_FAILED:类型为Integer的期望值,位于/ States / WaitForCampusM / Seconds'(服务:AWSStepFunctions;状态代码:400;错误代码:InvalidDefinition;要求编号:1facfbb9-9570-456d-8c33-1a2dadaea5ff)。

当我使用硬编码值时,此方法工作正常,但现在我正尝试使用环境变量,以便可以在部署和集成测试之间不同地控制等待时间。所有这些都通过BitBucket管道进行部署。

这是步骤功能中我的状态的定义:

WaitForCampusM:
    Type: Wait
    Seconds: ${env:CAMPUSM_WAIT_DELAY}
    Next: CampusMPull

此值是在BitBucket部署设置中设置的,我决定echo删除该值,所以这是我的管道

script:
    - npm install -g serverless
    - echo $CAMPUSM_WAIT_DELAY
    - sls deploy

这似乎记录了我的值,这是一个有效的数字(但是由于某种原因,我认为它被视为字符串?)

enter image description here

我也尝试在无服务器中使用SecondsPath,但不幸的是,这似乎也不起作用。谁能看到我可能还会缺少的东西?

serverless-framework bitbucket-pipelines
1个回答
1
投票

我看到您遇到了一个问题,可以总结为:“环境变量始终是字符串”]。始终在代码中使用process.env并将值强制为Integer进行处理。显然serverless-step-functions的维护者尚未这样做。我看到您创建了一个GitHub Issue来通知他们问题,谢谢!

在此之前,直到他们修复它,也许您应该考虑使用另一种方法来为每个阶段/环境设置不同的配置数据。这是一个可以为您服务的代码示例。在这里阅读有关我发现的博客文章的详细说明:https://www.jeremydaly.com/how-to-manage-serverless-environment-variables-per-stage/

custom:
  CAMPUSM_WAIT_DELAY:
    stg: 43200
    prod: 43200
    other: 99999
WaitForCampusM:
    Type: Wait
    Seconds: ${self:custom.CAMPUSM_WAIT_DELAY.${self:provider.stage}, self:custom.CAMPUSM_WAIT_DELAY.other}
    Next: CampusMPull
© www.soinside.com 2019 - 2024. All rights reserved.