在我的无服务器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]

07-24 09:39