使用 CDK 将种子代码存储在 S3 中初始化 CodeCommit 存储库
Init CodeCommit repository with seed-code stored in S3 using CDK
我正在尝试将 MLOps template for model building, training, and deployment CloudFormation 模板转换为 CDK 项目,这样我就可以轻松更新定义、合成模板并将其上传到 CloudCatalog 以便在 SageMaker Studio.
中用作项目模板
虽然我对 CDK 很陌生,但我在尝试使用存储在 S3,原模板中是这样实现的:
'ModelBuildCodeCommitRepository':
'Type': 'AWS::CodeCommit::Repository'
'Properties':
'RepositoryName':
'Fn::Sub': 'sagemaker-${SageMakerProjectName}-${SageMakerProjectId}-modelbuild'
'RepositoryDescription':
'Fn::Sub': 'SageMaker Model building workflow infrastructure as code for the
Project ${SageMakerProjectName}'
'Code':
'S3':
'Bucket': 'sagemaker-servicecatalog-seedcode-sa-east-1'
'Key': 'toolchain/model-building-workflow-v1.0.zip'
'BranchName': 'main'
CDK API 文档确实将 codecommit.Repository 中的 code
参数作为初始化选项,但它仅适用于压缩并上传到 的本地文件S3 等等。那是因为它假定部署了 CDK 项目,但我只想要 cdk synth
.
生成的模板
当然,我总是可以使用 codecommit.CfnRepository and its code
parameter to point into S3, but then I cannot insert it in the codepipeline
's stage codepipeline_actions.CodeCommitSourceAction 的 repository
参数,因为它需要一个 IRepository
对象。
我也想坚持aws-cdk-lib.aws_codepipeline
掌握CloudPipeline的基本逻辑(我也是新手),避免使用高层aws-cdk-lib.pipelines
.
关于如何完成此操作的任何想法?
构建一个没有 Code
道具的 Repository
。获取对其 L1 CfnRepository
层的 escape hatch 引用。将 CfnRepository
的 属性 手动设置为现有的 S3 存储桶:
const repo = new codecommit.Repository(this, 'Repo', { repositoryName: 'my-great-repo' });
const cfnRepo = repo.node.defaultChild as codecommit.CfnRepository;
cfnRepo.addPropertyOverride('Code', {
S3: {
Bucket: 'sagemaker-servicecatalog-seedcode-sa-east-1',
Key: 'toolchain/model-building-workflow-v1.0.zip',
},
BranchName: 'main',
});
以上代码将在 OP 中合成 YAML 输出。将 repo
作为管道的源操作传递。
不要忘记在 S3 存储桶上授予必要的 IAM 权限。
我正在尝试将 MLOps template for model building, training, and deployment CloudFormation 模板转换为 CDK 项目,这样我就可以轻松更新定义、合成模板并将其上传到 CloudCatalog 以便在 SageMaker Studio.
中用作项目模板虽然我对 CDK 很陌生,但我在尝试使用存储在 S3,原模板中是这样实现的:
'ModelBuildCodeCommitRepository':
'Type': 'AWS::CodeCommit::Repository'
'Properties':
'RepositoryName':
'Fn::Sub': 'sagemaker-${SageMakerProjectName}-${SageMakerProjectId}-modelbuild'
'RepositoryDescription':
'Fn::Sub': 'SageMaker Model building workflow infrastructure as code for the
Project ${SageMakerProjectName}'
'Code':
'S3':
'Bucket': 'sagemaker-servicecatalog-seedcode-sa-east-1'
'Key': 'toolchain/model-building-workflow-v1.0.zip'
'BranchName': 'main'
CDK API 文档确实将 codecommit.Repository 中的 code
参数作为初始化选项,但它仅适用于压缩并上传到 的本地文件S3 等等。那是因为它假定部署了 CDK 项目,但我只想要 cdk synth
.
当然,我总是可以使用 codecommit.CfnRepository and its code
parameter to point into S3, but then I cannot insert it in the codepipeline
's stage codepipeline_actions.CodeCommitSourceAction 的 repository
参数,因为它需要一个 IRepository
对象。
我也想坚持aws-cdk-lib.aws_codepipeline
掌握CloudPipeline的基本逻辑(我也是新手),避免使用高层aws-cdk-lib.pipelines
.
关于如何完成此操作的任何想法?
构建一个没有 Code
道具的 Repository
。获取对其 L1 CfnRepository
层的 escape hatch 引用。将 CfnRepository
的 属性 手动设置为现有的 S3 存储桶:
const repo = new codecommit.Repository(this, 'Repo', { repositoryName: 'my-great-repo' });
const cfnRepo = repo.node.defaultChild as codecommit.CfnRepository;
cfnRepo.addPropertyOverride('Code', {
S3: {
Bucket: 'sagemaker-servicecatalog-seedcode-sa-east-1',
Key: 'toolchain/model-building-workflow-v1.0.zip',
},
BranchName: 'main',
});
以上代码将在 OP 中合成 YAML 输出。将 repo
作为管道的源操作传递。
不要忘记在 S3 存储桶上授予必要的 IAM 权限。