有没有办法获取在 AWS CDK 中创建的状态机的 Amazon State Language JSON 表示
Is there a way to get the Amazon State Language JSON representation of a State Machine created within AWS CDK
我的 CDK 基础设施(打字稿文件)有一个 lambda,它会在运行时创建一个新的状态机。为此,它需要我要创建的机器的 Amazon State Langauge JSON 表示。我在我的 AWS 基础设施打字稿文件中创建了状态机,因为许多状态都引用了该基础设施中的 lambda 或 dynamoDB 表。
我的问题是,给定一个 CDK 状态机(Here is the CDK documentation for it, also here 是 Step Function 的链 class 的文档,它基本上代表 CDK 中的 ASL JSON)你能生成ASL JSON 代表?在我的例子中,我可以将这个 ASL JSON 传递到我的 lambda 环境之一。
根据文档,这似乎不太可能,这对我来说很奇怪,因为您可以查看 AWS 控制台,单击您的状态机,然后单击“定义”选项卡并查看 ASL JSON。在定义和创建状态机的 CDK 基础结构中,必须有某种方法可以访问它。
是的,您可以将 L2 StateMachine
生成的 JSON 定义传递给位于 synth-time 的 Lambda。该定义在其 L1 CfnStateMachine child construct. Use escape hatch syntax 上公开以获取对 CfnStateMachine
的引用。将其字符串化定义作为环境变量传递给 Lambda。
// MyStack.ts
const sm = new sfn.StateMachine(this, 'StateMachine', {definition: new sfn.Succeed(this, 'SuccessTask'),});
const cfnSm = sm.node.defaultChild as sfn.CfnStateMachine; // cast to L1 type
if (!cfnSm.definitionString) throw new Error('CfnStateMachine definitionString must be defined');
new lambda.Function(this, 'MyFunction', {
// ...
environment: { SM_DEFINITION: cfnSm.definitionString,},
});
备注:
- 或者,Lambda 可以使用 DescribeStateMachine API
在 run-time 获取定义
- 字符串化 JSON 定义在
cdk.out
目录中的合成堆栈模板中可用 post-synth(用于测试等)。
我的 CDK 基础设施(打字稿文件)有一个 lambda,它会在运行时创建一个新的状态机。为此,它需要我要创建的机器的 Amazon State Langauge JSON 表示。我在我的 AWS 基础设施打字稿文件中创建了状态机,因为许多状态都引用了该基础设施中的 lambda 或 dynamoDB 表。
我的问题是,给定一个 CDK 状态机(Here is the CDK documentation for it, also here 是 Step Function 的链 class 的文档,它基本上代表 CDK 中的 ASL JSON)你能生成ASL JSON 代表?在我的例子中,我可以将这个 ASL JSON 传递到我的 lambda 环境之一。
根据文档,这似乎不太可能,这对我来说很奇怪,因为您可以查看 AWS 控制台,单击您的状态机,然后单击“定义”选项卡并查看 ASL JSON。在定义和创建状态机的 CDK 基础结构中,必须有某种方法可以访问它。
是的,您可以将 L2 StateMachine
生成的 JSON 定义传递给位于 synth-time 的 Lambda。该定义在其 L1 CfnStateMachine child construct. Use escape hatch syntax 上公开以获取对 CfnStateMachine
的引用。将其字符串化定义作为环境变量传递给 Lambda。
// MyStack.ts
const sm = new sfn.StateMachine(this, 'StateMachine', {definition: new sfn.Succeed(this, 'SuccessTask'),});
const cfnSm = sm.node.defaultChild as sfn.CfnStateMachine; // cast to L1 type
if (!cfnSm.definitionString) throw new Error('CfnStateMachine definitionString must be defined');
new lambda.Function(this, 'MyFunction', {
// ...
environment: { SM_DEFINITION: cfnSm.definitionString,},
});
备注:
- 或者,Lambda 可以使用 DescribeStateMachine API 在 run-time 获取定义
- 字符串化 JSON 定义在
cdk.out
目录中的合成堆栈模板中可用 post-synth(用于测试等)。