我使用的是无服务器步骤函数插件,我需要从环境变量中指定超时。问题是我不知道如何将其转换为数字(Cloudformation在运行时预期(,我没有找到任何帮助函数来实现这一点:
serverless.yml
stepFunctions:
stateMachines:
MyStateMachine:
name: 'MyStateMachine'
definition:
Comment: ''
StartAt: Worker
States:
Worker:
Type: Task
Resource: arn:aws:states:::ecs:runTask.waitForTaskToken
InputPath: $
ResultPath: $
OutputPath: $
TimeoutSeconds: ${env:TIMEOUT_SECONDS} # Need this to be casted to a number
Parameters:
# ...
Catch:
- ErrorEquals: ["States.ALL"]
Next: Failure
Next: Success
Failure:
Type: Fail
Success:
Type: Succeed
使用Cloudformation
,您可以在Cloudformation
文件的顶部声明一个参数
使参数值默认为环境变量
Parameters:
TimeoutSecs:
Description: The specified timeout from an environment
Type: Number
Timeout: "60"
Default: ${{ env:TIMEOUT_SECONDS} }
根据文档将Type
定义为数字来自AWSCloudformation
文档
Number
整数或浮点值。AWSCloudFormation
将参数值验证为数字;但是,当您在模板的其他地方使用参数时(例如,通过使用Ref内部函数(,参数值将变为字符串。
例如,用户可以指定";8888";。
列表用逗号分隔的整数或浮点数组。AWS CloudFormation以数字形式验证参数值;但是,当您在模板中的其他地方使用参数时(例如,通过使用Ref内部函数(,参数值将变为字符串列表。
例如,用户可以指定"80,20"
,Ref将产生["80","20"]
。