AWS Step Functions:返回 Python 中占位符的子字符串

AWS Step Functions: returning a substring of a placeholder in Python

我有一个 SageMaker TrainingStep,后跟一个 ProcessingStep。我需要将 TrainingStep 的输出路径传递给 ProcessingStep。

TrainingStep 正在将 S3 文件夹的输出写入名为 s3://mybucket/output.tar.gz 的文件中。但是,作为输出,在路径 $['ModelArtifacts']['S3ModelArtifacts'] 中,它返回了一个错误的文件名:s3://mybucket/model.tar.gz

为了能够解决这个错误,我必须删除路径的最后 12 个字符。所以我需要 运行 的 Amazon States Language 表达式是:

$['ModelArtifacts']['S3ModelArtifacts'][0,-12]

我正在使用 Python 配置我的状态机,所以我有以下代码:

ProcessingInput(
  source=
    train_step.output()["$['ModelArtifacts']['S3ModelArtifacts'][0,-12]"], 
  destination='/opt/ml/processing/inference_output/',
  input_name='inference_output'
),

生成以下亚马逊状态语言字符串:

        "S3Input": {
          "S3Uri.$": "$['$['ModelArtifacts']['S3ModelArtifacts'][0,-12]']",
          "LocalPath": "/opt/ml/processing/inference_output/",
          "S3DataType": "S3Prefix",
          "S3InputMode": "File",
          "S3DataDistributionType": "FullyReplicated",
          "S3CompressionType": "None"
        }

这不是期望的结果,因为期望的结果是产生以下内容:

"S3Uri.$": "$['ModelArtifacts']['S3ModelArtifacts'][0,-12]"

如何修改我的 Python 代码以产生所需的结果?

解决方法是将正确的 S3 路径指定为执行输入参数。