Невозможно выбрать папку S3 в качестве источника для CodePipeline на AWS

Я пытаюсь настроить конвейер CI / CD на AWS с помощью CodePipeline со следующей настройкой

Источник: S3

Сборка: CodeBuild

Развертывание: CodeDeploy

Выпуск: экземпляр EC2

Мне удалось завершить настройку, перейдя по этой ссылке < / а>

Однако мой конвейер выходит из строя с сообщением об ошибке, которое

The object with key 'code-sashi/api' does not exist.

Я проверил и подтвердил, что имя корзины правильное и внутри корзины есть папка api.

Параметр для установки этого четко указывает, что я могу ввести либо ключ объекта S3, либо папку S3. В этом случае я хотел бы использовать папку S3, поскольку мой артефакт сборки будет готов только после запуска CodeBuild.

Однако CodePipeline продолжает искать ключ объекта и игнорирует мою папку.

Я также попытался установить папку S3 как «api», «/ api», «api /», и ни один из них не работает. Я попытался скопировать свои файлы в корзину напрямую и установить папку как '/', что не привело к другому сообщению об ошибке, что «ключ объекта не может заканчиваться завершающим /»

На основе этой ссылки I должен иметь возможность получить все содержимое корзины из папки S3 как '/'.

Если это помогает, я загружаю файлы из частного репозитория Bitbucket в S3 с помощью Bitbucket Pipelines. К сожалению, CodePipeline не может напрямую подключить Bitbucket и, следовательно, обходной путь S3. Странно, что у CodeBuild нет проблем с подключением к репозиторию Bitbucket, но он не может этого сделать, если он является частью CodePipeline.

Вопрос

Как правильно настроить CodePipeline, чтобы получать файлы из корзины code-sashi и папки api? В будущем появятся и другие папки, содержащие код, поэтому я хотел бы хранить их все в одном ведре.


person Sashi    schedule 06.12.2018    source источник


Ответы (1)


Я наконец понял это.

Даже если вы хотите использовать S3 в качестве источника, а не хранилища артефактов, файлы должны быть заархивированы, и вы должны указать заархивированный файл в качестве ключа объекта.

Поэтому я добавил этап zip в свой Bitbucket Pipeline и переконфигурировал CodePipeline, чтобы использовать заархивированный файл в качестве источника. Сработало отлично!

person Sashi    schedule 06.12.2018
comment
Я рада, что тебе удалось в этом разобраться. Я думаю, что вы все равно можете указать отдельный файл из S3, даже если это не ZIP-файл (не уверен, как вы бы его использовали, я не могу придумать действия, которые не принимают артефакты в виде zip-файлов), но поскольку вы обнаружено, если вы укажете префикс (каталог), мы не будем его заархивировать. - person Matthew Sainsbury; 06.12.2018
comment
Забавно, что у меня была такая же проблема, и они просто обновили документацию, чтобы сказать, что вы можете использовать только файл, а не папку. - person committedandroider; 12.12.2018