AWS CloudFormation状态机YAML含null值无法部署如何解决
可行方案
以下三种方法均可以在CloudFormation YAML模板中正常使用null值,同时满足Step Functions的ResultPath配置要求:
- 方法1:使用YAML显式null标签
在需要设置null的字段前加!!null标签声明类型,CloudFormation会正确解析为null值而非忽略该字段,部署不会报错:ResultPath: !!null '' - 方法2:使用YAML null别名
~
YAML语法中~就是null的官方别名,CloudFormation对该符号的兼容性更高,不需要额外标签就能被识别为合法null值:ResultPath: ~ - 方法3:混合JSON格式的状态机定义
如果前两种方法在你的环境中存在兼容问题,可以保留整体模板用YAML编写,仅将状态机定义部分用JSON字符串传入,完全规避YAML null的解析问题:Resources: MyStateMachine: Type: AWS::StepFunctions::StateMachine Properties: DefinitionString: | { "States": { "MyTaskState": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-func", "ResultPath": null, "End": true } } } RoleArn: "your-state-machine-role-arn"
特别提醒:不要使用
AWS::NoValue伪参数配置该字段,该参数的作用是直接移除对应属性,而非将属性值设为null,无法实现丢弃状态执行结果、保留原始输入的逻辑。
内容的提问来源于stack exchange,提问作者user19906
相关产品推荐
相关产品推荐

