Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 检测选项状态中状态机定义的更新_Amazon Web Services_Aws Lambda_Continuous Deployment_Aws Cdk_Aws Step Functions - Fatal编程技术网

Amazon web services 检测选项状态中状态机定义的更新

Amazon web services 检测选项状态中状态机定义的更新,amazon-web-services,aws-lambda,continuous-deployment,aws-cdk,aws-step-functions,Amazon Web Services,Aws Lambda,Continuous Deployment,Aws Cdk,Aws Step Functions,这是一个非常好的模式,用于基于迭代计数重新启动长时间运行的状态机执行,因此我们不会违反1年执行时间和25k事件的标准配额- 我的问题:在选择状态下,是否可以检测到状态机定义是否已更改(自执行开始以来)?例如,在上述IsCount状态下。 我们计划使用AWS CDK处理状态机的创建和更新。这将使我们能够完全自动化状态机的部署,而不是手动终止执行并在状态机更改后重新启动。据我所知,没有这样的事情。这也没有真正意义,因为状态机是在状态机定义的“版本”上运行的。当您更改定义(新版本)时,通常不希望运行

这是一个非常好的模式,用于基于迭代计数重新启动长时间运行的状态机执行,因此我们不会违反1年执行时间和25k事件的标准配额-

我的问题:在选择状态下,是否可以检测到状态机定义是否已更改(自执行开始以来)?例如,在上述IsCount状态下。


我们计划使用AWS CDK处理状态机的创建和更新。这将使我们能够完全自动化状态机的部署,而不是手动终止执行并在状态机更改后重新启动。

据我所知,没有这样的事情。这也没有真正意义,因为状态机是在状态机定义的“版本”上运行的。当您更改定义(新版本)时,通常不希望运行的流程受此影响,因为这可能会产生意外的后果

这就是说,您应该能够相当容易地构建这样的东西:构建一个Lambda函数,该函数查找当前正在运行的状态机,停止它们并重新启动它们。如果定义发生更改,则在部署过程中调用此Lambda函数


这样,如果部署包含对状态机的更改,则当前运行的所有状态机都将重新启动,然后使用新定义。

DescribeSateMachine不返回updateDate,但DescribeSateMachineForExecution返回它:


我认为,能够发现当前“版本”是否已过时对于运行数月(通常是循环)的状态机非常有用。您关于停止执行并作为部署的一部分重新启动的建议很有趣。但在某些情况下,我们可能不希望突然调用StopExecution;“而是让国家机器自己来做。”纳文库马尔说。但通常你想要。这就是为什么我希望有一个外部“控制器”(如Lambda等)来跟踪并处理这些情况,而不是由step函数来处理这些情况。@NaveenKumar如果您不想立即停止执行并将责任移交给step函数,可以在布尔SSM参数中设置一个简单的标志(例如,
should_restart=true
)。然后,step函数会有一个步骤来检查此参数,如果设置为
true
,它会在“认为”时机合适时自行“重新启动”。此标志可以在部署期间使用AWS CLI设置。@NaveenKumar Yes,如果外部step函数仅涉及控制或“编曲"子步骤功能。感谢您的建议。我正在考虑解析和查找DescribeStateMachine返回的整个定义与DescribeStateMachineForExecution之间的差异。将元数据添加到注释中要简单得多。我想知道为什么DescribeStateMachine不返回UpdateDate。真是个麻烦。@NaveenKumar我宁愿使用定义的散列(
sha1(myDefinition.json)
)而不是进行差异。一旦您更改了定义,哈希就会更改,并且您知道有更新。这应该比差异容易得多。我会将此提交给AWS步骤函数团队。Naveen Kumar,@Jens:我更新了我的答案。DescribeSateMachineForExecution已更新了数据。