You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将AWS CDK与SageMaker Pipelines进行对接?

对接CDK与独立SageMaker Pipelines资源的推荐方案

基础方案:ARN跨资源引用

你想的没错,同一AWS账户(同区域)下直接通过ARN传递资源引用是完全可行的基础对接方式:

  • 对于CDK定义的服务(如Lambda、ECS、Step Functions),不要硬编码ARN,建议将SageMaker资源的ARN存储在AWS Parameter Store或Secrets Manager中,让CDK服务从这些存储中读取,避免手动维护的疏漏
  • 反过来,SageMaker Pipelines也可以直接通过ARN引用CDK创建的资源,比如用CDK创建的S3桶作为训练数据源,在Pipeline定义里指定桶的ARN即可

这种方式优势是简单,不需要改动现有两套代码结构,适合快速对接场景。

进阶方案:CDK直接集成SageMaker Pipelines

如果希望资源管理更统一、减少手动维护成本,可以直接在CDK中定义SageMaker Pipelines相关资源:

  • 使用AWS CDK的aws-sagemaker模块,在CDK栈里直接创建Pipeline、模型、端点等ML资源,所有资源的依赖关系由CDK自动管理,无需手动传递ARN
  • 示例代码(TypeScript):
import * as sagemaker from 'aws-cdk-lib/aws-sagemaker';
import * as lambda from 'aws-cdk-lib/aws-lambda';

// CDK中定义SageMaker Pipeline
const trainingPipeline = new sagemaker.CfnPipeline(this, 'CustomerChurnPipeline', {
  pipelineName: 'CustomerChurnTraining',
  pipelineDefinition: JSON.stringify(yourPipelineDefinition), // 你的Pipeline定义JSON
  roleArn: sagemakerExecutionRole.roleArn // CDK创建的SageMaker执行角色
});

// CDK创建的Lambda自动关联Pipeline ARN
const pipelineTrigger = new lambda.Function(this, 'TriggerPipelineLambda', {
  runtime: lambda.Runtime.PYTHON_3_11,
  handler: 'trigger.handler',
  code: lambda.Code.fromAsset('lambda/trigger'),
  environment: {
    PIPELINE_ARN: trainingPipeline.attrPipelineArn // CDK自动注入ARN
  }
});

// 自动配置Lambda触发Pipeline的权限
trainingPipeline.grantStartPipelineExecution(pipelineTrigger);
  • 这种方式能统一管理所有资源的生命周期,部署时CDK会自动处理IAM权限依赖,避免手动配置策略的错误

混合方案:CDK导入已有SageMaker资源

如果已经有独立创建好的SageMaker Pipelines,不想全部迁移到CDK,可以用CDK的from*方法导入已有资源:

  • 示例:导入已存在的SageMaker Pipeline
import * as sagemaker from 'aws-cdk-lib/aws-sagemaker';
import * as iam from 'aws-cdk-lib/aws-iam';

// 导入已有Pipeline
const existingPipeline = sagemaker.CfnPipeline.fromCfnPipelineArn(
  this, 
  'ExistingTrainingPipeline', 
  'arn:aws:sagemaker:us-east-1:123456789012:pipeline/ExistingChurnPipeline'
);

// 给CDK创建的ECS任务角色添加访问权限
ecsTaskExecutionRole.addToPrincipalPolicy(new iam.PolicyStatement({
  actions: ['sagemaker:StartPipelineExecution'],
  resources: [existingPipeline.attrPipelineArn]
}));
  • 这种方式既能保留现有SageMaker Pipeline的定义,又能让CDK管理的资源和它建立安全、可维护的依赖关系

关键注意事项

  • 权限配置:无论用哪种方案,都要确保CDK服务有对应的IAM权限访问SageMaker资源(如sagemaker:StartPipelineExecution、sagemaker:InvokeEndpoint),反之亦然
  • 状态同步:如果用独立的SageMaker Pipeline和CDK服务,要注意资源状态同步,比如Pipeline更新后,及时更新CDK服务中的ARN配置(用Parameter Store可自动同步)
  • 区域一致性:尽量保证CDK资源和SageMaker资源在同一AWS区域,跨区域访问会增加延迟和复杂度

内容的提问来源于stack exchange,提问作者jbuddy_13

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 13:07:34