要实现Pipelines的EventBridge触发,您需要通过AWS Step Functions的有限状态机来触发AWS SageMaker Pipelines。如果您使用一个不同的触发器来触发Pipelines,比如S3对象被创建,或者为了进行调试而手动触发,则EventBridge可能无法触发Pipelines。
以下是一个示例,在有限状态机中使用Lambda函数作为中间步骤来实现Pipelines触发:
{
"Comment": "A SageMaker Pipeline triggered by CloudWatch Event Rule",
"StartAt": "Step1",
"States": {
"Step1": {
"Type": "Task",
"Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:LAMBDA_FUNCTION_NAME",
"Next": "Step2"
},
"Step2": {
"Type": "Task",
"Resource": "arn:aws:states:::sagemaker:createPipeline",
"Parameters": {
"PipelineDefinition": {
"Version": 1.0,
"PipelineParameters": [
{
"Name": "InstanceType",
"Value": "ml.t2.medium"
}
],
"Steps": [
{
"Name": "Step1",
"Action": {
"AlgorithmSpecification": {
"trainingInputMode": "File",
"trainingImage": "IMAGE_URI",
"metricDefinitions": [
{
"Name": "validation:accuracy",
"Regex": "validation:accuracy=([0-9\\.]+)"
}
]
},
"InputDataConfig": [
{
"DataSource": {
"S3DataSource": {
"S3DataType": "S3Prefix",
"S3Uri": "s3://BUCKET_NAME/INPUT_DATA",
"S3DataDistributionType": "FullyReplicated"
}
},
"ChannelName": "train"
}
],
"OutputDataConfig": {
"S3OutputPath": "s3://BUCKET_NAME/OUTPUT_PREFIX"
},
"ResourceConfig": {
"InstanceCount": 1,
"InstanceType": "ml.t2.medium",
"VolumeSizeInGB": 10
},
"RoleArn": "ROLE_ARN",
"StoppingCondition": {
"MaxRuntimeInSeconds": 900
}
},
"Type": "Training",
"Inputs": [
{
"Name": "InputData",
"OutputName": "train",
"S3Input": {
"S3Uri": "s3