如何在 StepFunction 名称中使用 CloudFormation 参数

问题描述

在 python AWS CDK v1.92.0 中,我可以在 Step Function 名称中使用 CF 参数,但在 v1.93.0 中添加了一条 linting 规则,现在它破坏了我的代码

https://github.com/aws/aws-cdk/issues/13289
https://github.com/aws/aws-cdk/commit/6c3d4071746179dde30f615602592c2523daa56e
https://github.com/aws/aws-cdk/commit/58de0de5a54b9d8fb4658566e85ef408c8861088

我需要一个解决方案或变通办法,以便我可以继续部署我的代码

声明输入 cfn 参数


    project_id = core.CfnParameter(
        self,id='Project Id',description='Must be unique within your account. \
        Only lowercase characters,. and - are allowed. Max 12 character length.',constraint_description='Must be lowercase char,numbers,. or - with a length of 1-12 char.',allowed_pattern='([a-z0-9.-])+',max_length=12) 

创建阶梯函数


    sfn_sandBox_sm,sfn_preprod_sm,sfn_prod_sm = self.create_step_functions(
        suffix='inference',project_id=project_id)
    
    sfn_sandBox_sm = stepfunctions.StateMachine(
        self,f'state-machine-{suffix}-sandBox',deFinition=start_state_sandBox,state_machine_name=f'ml-factory-sf-{suffix}-{project_id.value_as_string}-sandBox'
    )

更新到 v1.93.0 后我收到的错误是:

  • ml-factory-sf-{suffix}-{project_id.value_as_string}-sandBox
  • 状态机名称必须匹配“^[0-9a-zA-Z+!@._-]+$”。已收到: ml-factory-sf-inference-${Token[TOKEN.327]}-sandBox

    Traceback (most recent call last):
      File "app.py",line 61,in <module>
        env=environ)
      File "/usr/local/share/pip-global/jsii/_runtime.py",line 83,in __call__
        inst = super().__call__(*args,**kwargs)
      File "/workspaces/ml-factory-aws/stacks/cdk_pipeline_stack.py",line 95,in __init__
        deployment_id='test',env=preprod_env)
      File "/usr/local/share/pip-global/jsii/_runtime.py",**kwargs)
      File "/workspaces/ml-factory-aws/stacks/cdk_pipeline_stage_stack.py",line 51,in __init__
        env=account_env)
      File "/usr/local/share/pip-global/jsii/_runtime.py",**kwargs)
      File "/workspaces/ml-factory-aws/stacks/s3_resource_stack.py",line 42,**kwargs)
      File "/workspaces/ml-factory-aws/stacks/ds_sc_product_stack.py",line 77,in __init__
        suffix='inference',project_id=project_id)
      File "/workspaces/ml-factory-aws/stacks/ds_sc_product_stack.py",line 1199,in create_step_functions
        state_machine_name=f'ml-factory-sf-{suffix}-{project_id.value_as_string}-sandBox',File "/usr/local/share/pip-global/jsii/_runtime.py",**kwargs)
      File "/usr/local/share/pip-global/aws_cdk/aws_stepfunctions/__init__.py",line 5100,in __init__
        jsii.create(StateMachine,self,[scope,id,props])
      File "/usr/local/share/pip-global/jsii/_kernel/__init__.py",line 282,in create
        for iface in getattr(klass,"__jsii_ifaces__",[])
      File "/usr/local/share/pip-global/jsii/_kernel/providers/process.py",line 344,in create
        return self._process.send(request,CreateResponse)
      File "/usr/local/share/pip-global/jsii/_kernel/providers/process.py",line 326,in send
        raise JSIIError(resp.error) from JavaScriptError(resp.stack)
    jsii.errors.JSIIError: State Machine name must match "^[0-9a-zA-Z+!@._-]+$". Received: ml-factory-sf-inference-${Token[TOKEN.327]}-sandBox

解决方法

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

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

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