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 路径指定为执行输入参数。
我有一个 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 路径指定为执行输入参数。