4

在我的无服务器 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} 的字符串中。请确保该属性的值是一个字符串。

4

1 回答 1

1

我有同样的问题,原来根本原因是因为我使用了这样的可选: ${opt:variableName, '${self:custom.someVariable'} 其中 custom.someVariable 使用了 GetAtt 函数。

显然,可选变量不适用于 GetAtt 函数,只要我删除了可选部分,一切都开始工作了。

环境:SOME_VARIABLE:Fn::GetAtt:[RedisCluster,RedisEndpoint.Port]

于 2019-08-05T22:37:01.123 回答