在我的无服务器Yaml中,我试图在自定义变量中捕获完整的StateMachine名称:
STATEMACHINE_ARN_NAME:
Fn::GetAtt: ["preMobilizatonStateMachine", "Name"]
状态机被定义为...
stepFunctions:
stateMachines:
preMobilizatonStateMachine:
根据http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html
{ "Fn::GetAtt": ["MyStateMachine", "Name"] }
应该返回一个字符串值:MyStateMachine-ABCDEFGHIJ1K
但是,当我尝试部署时,出现以下错误:
尝试将非字符串值填充到变量$ {self:custom.STATEMACHINE_ARN_NAME}的字符串中。请确保该属性的值是一个字符串。
最佳答案
我遇到了同样的问题,根本原因是因为我使用了这样的可选内容:$ {opt:variableName,'$ {self:custom.someVariable'}
其中custom.someVariable使用的是GetAtt函数。
显然,可选变量不适用于GetAtt函数,一旦我删除了可选部件,一切就开始起作用。
环境:
SOME_VARIABLE:
Fn :: GetAtt:[RedisCluster,RedisEndpoint.Port]