Запустите репозиторий CodeCommit с начальным кодом, хранящимся в S3, с помощью CDK

Я пытаюсь преобразовать шаблон Шаблон 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, но тогда я не могу вставить его в параметр codepipelinecodepipeline_actions.CodeCommitSourceAction стадии repository, потому что он ожидает объект IRepository.

Я также хочу придерживаться aws-cdk-lib.aws_codepipeline, чтобы понять фундаментальную логику CloudPipeline (в которой я тоже новичок) и избегать использования высокого уровня aws-cdk-lib.pipelines.

Любые идеи о том, как я могу это сделать?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Постройте 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.

Это сделало трюк! Большое спасибо!

AronNeewart 16.05.2022 04:14

Другие вопросы по теме