Я пытаюсь преобразовать шаблон Шаблон MLOps для построения моделей, обучения и развертыванияCloudFormation в проект CDK, чтобы я мог легко обновлять определения, синтезировать шаблон и загружать его в CloudCatalog для использования в качестве шаблона проекта в Студия SageMaker.
Однако я новичок в CDK, и у меня возникли некоторые проблемы с попыткой инициализировать репозиторий КодКоммит с конвейером sagemaker seed-code
, хранящимся в 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'
В документах API CDK параметр code
в codecommit.Репозиторий упоминается как параметр инициализации, но только для локальных файлов, которые сжимаются и загружаются в S3 и т.п. Это потому, что он предполагает развертывание проекта CDK, а мне нужен только шаблон, сгенерированный cdk synth
.
Конечно, я всегда могу использовать codecommit.CfnRepository и его параметр code
, чтобы указать на S3, но тогда я не могу вставить его в параметр codepipeline
codepipeline_actions.CodeCommitSourceAction стадии repository
, потому что он ожидает объект IRepository
.
Я также хочу придерживаться aws-cdk-lib.aws_codepipeline
, чтобы понять фундаментальную логику CloudPipeline (в которой я тоже новичок) и избегать использования высокого уровня aws-cdk-lib.pipelines
.
Любые идеи о том, как я могу это сделать?
Постройте Repository
без Code
реквизита. Получите ссылку аварийный люк на его слой L1 CfnRepository
. Установите свойство 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',
});
Приведенный выше код будет синтезировать вывод YAML в OP. Передайте repo
как исходное действие пайплайна.
Не забудьте предоставить необходимые разрешения IAM для корзины S3.
Это сделало трюк! Большое спасибо!