如何以编程方式解析CloudFormation模板并解析字段?

问题描述

我想从CloudFormation模板中提取特定字段。具体来说,我正在使用CDK创建一个堆栈,其中有一个StepFunction资源,其模板内的定义如下所示:

"MyStateMachineE7CD0EAE": {
  "Type": "AWS::StepFunctions::StateMachine","Properties": {
    "RoleArn": {
      "Fn::GetAtt": [
        "MyStateMachineRoleEC8990B2","Arn"
      ]
    },"DeFinitionString": {
      "Fn::Join": [
        "",[
          "{\"StartAt\":  ...part of state machine deFinition here...,\"Resource\":\"arn:",{
            "Ref": "AWS::Partition"
          },":states:::lambda:invoke\",\"Parameters\":{\"FunctionName\":\"",{
            "Fn::GetAtt": [
              "SingletonLambda2a860ff582bf4d828a504282814af94c7CEF2D65","Arn"
            ]
          },"...remainder of state machine deFinition here...}"
        ]
      ]
    },"LoggingConfiguration": {
      "Destinations": [
        {
          "CloudWatchLogsLogGroup": {
            "LogGroupArn": {
              "Fn::GetAtt": [
                "MyStatemachineLogGroup2DEF8C9E","Arn"
              ]
            }
          }
        }
      ],"IncludeExecutionData": true,"Level": "ALL"
    },"StateMachineType": "STANDARD"
  },"DependsOn": [
    "MyStateMachineRoleDefaultPolicy4C064A65","MyStateMachineRoleEC8990B2"
  ],"Metadata": {
    "aws:cdk:path": "some/path/here"
  }
}

当存在字符串数组时,DeFinitionString由对Fn:Join调用组成,其中一些字符串是对其他CloudFormation资源的引用。取决于StateMachine定义的复杂程度,可以有很多这样的引用。

我希望能够使用StepFunctions Local来测试通过StepFunctions状态机的数据流,特别是要检查InputPath和ResultSelector数据输入和输出,作为对某些集成测试的一部分状态机整体。 StepFunction本地CLI工具需要输入一个字符串,该字符串是DeFinitionString字段的求值。

是否可以通过CloudFormation客户端API从CloudFormation模板中提取字段?除非绝对必要,否则我不想直接尝试解析JSON。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)