AWS Codedeploy не работает в событии DownloadBundle: нет такого файла или каталога.

Я использую AWS Codedeploy для развертывания кода из GitHub в экземпляр AWS EC2 (сервер Windows 2008). Сбой развертывания в событии DownloadBundle

Стек ошибок в логах AWS:

No such file or directory - C:\ProgramData/Amazon/CodeDeploy/4fbb84fd-caa5-4d1a-9894-16b25abcea76/d-QUPXMDBCF/deployment-archive-temp/My-Application-163e9d3343be82038fe2e5c58a9fcae86683d4ea/src/main/java/com/myapp/dewa/customexceptions/EventNotPublishedException.java

Проблема здесь может быть связана с ограничением пути к файлу в Windows.

ОБНОВЛЕНИЕ: команда поддержки AWS CodeDeploy подтвердила, что это ограничение с их стороны. CodeDeploy использует более половины пути к файлу, из-за чего превышен лимит


person balajiprasadb    schedule 27.05.2016    source источник
comment
Я пользователь Mac, но мне было любопытно, что путь в Windows начинается с C: \, а не с C: /   -  person error2007s    schedule 27.05.2016
comment
@ error2007s Путь в Windows начинается с - C: \   -  person Mr Roshan Pawar    schedule 27.05.2016
comment
Вы подтвердили, что указанный выше путь существует?   -  person error2007s    schedule 27.05.2016
comment
В моем случае: C: \ ProgramData / Amazon / CodeDeploy / 1941fc02-0bcc-4253-a2b9-71b6ee7f092e / d-4WQNY2T9O / deployment-archive / PatientPortal / platform / browser / cordova / node_modules / cordova-serve / node_modules / express / node_modules / accept / node_modules / mime-types / node_modules / mime-db ............ этот путь существует, но файл mime-db отсутствует, поэтому я должен получить свое приложение развернут в желаемом месте, указанном в appspec.yml   -  person Ashish Karpe    schedule 31.08.2017


Ответы (3)


Заменили ли вы какие-то строки из file_path и / или file_name?

Эта ошибка возникает, когда общая длина file_path превышает 260 символов. Эта длина включает один нулевой символ в конце для завершения. Ваша общая длина составляет 239 + 1 = 240.

Для справки см. Эту статью: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx#maxpath

Если вы проверите путь в месте назначения, вы не должны увидеть файл, потому что он не был скопирован, но находится в zip-файле вашей ревизии.

В моем случае общая длина составляла 266. Возможно, не удастся сократить строки фактического пути к файлу в ревизии, поскольку многие из них создаются инструментами разработчика. Amazon вкладывает свои средства сейчас, чтобы увидеть, как это преодолеть.

Вы можете проверить и подтвердить, выполнив следующие действия:

  1. Выполните следующую команду в командной строке, чтобы создать папку архива развертывания: mkdir "c: \ ProgramDat0 / Amazon / CodeDeploy / 4fbb84fd-caa5-4d1a-9894-16b25abcea76 / d-QUPXMDBCF / deployment-archive-temp"

  2. Просто попробуйте распаковать zip-файл с ревизией прямо в папку «deployment-archive-temp». Вы должны получить следующую ошибку для файла, превышающего максимальную длину пути 260: «Ошибка 0x80010135: слишком длинный путь».

Ссылка: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx#maxpath

Надеюсь, это поможет.

person Rafiq    schedule 01.06.2016
comment
В моем случае: C: \ ProgramData / Amazon / CodeDeploy / 1941fc02-0bcc-4253-a2b9-71b‌ 6ee7f092e / d-4WQNY2T9‌ O / deployment-archive‌ / PatientPortal / platf orms / browser / cordova‌ / node_modules / cordov‌ A-serve / node_modules‌ / express / node_module‌ s / accept / node_modul‌ es / mime-types / node_m odules / mime-db ............ этот путь существует, но mime- db отсутствует, поэтому я должен развернуть свое приложение в желаемом месте, указанном в appspec.yml - person Ashish Karpe; 31.08.2017
comment
Точка 2: zip извлечен, но не было ошибок для файла, пересекающего максимальную длину пути 260: «Ошибка 0x80010135: слишком длинный путь» - person Ashish Karpe; 31.08.2017
comment
Но мое развертывание терпит неудачу - person Ashish Karpe; 31.08.2017

Хотя это и не полное решение, у меня возникла та же проблема, и мы смогли удалить предыдущий «ProgramData \ Amazon \ CodeDeploy», чтобы сохранить 29 символов, если вы можете выдержать беспорядок в своей корневой папке.

Для этого мы изменили файл conf.yml, расположенный в c: \ programdata \ amazon \ codedeploy \

Я изменил ... root_dir: 'Amazon \ CodeDeploy' ... на ... root_dir: 'C: \'

person Neil Fahardoh    schedule 13.12.2016
comment
Наш путь к файлу репозитория github слишком длинный, поэтому выполнение вышеупомянутых действий не помогает. - person balajiprasadb; 14.12.2016
comment
bty Я не понимаю, я могу загрузить zip из s3 и извлечь его, я развертываю код aws с проблемой длины пути! - person Ashish Karpe; 14.09.2017
comment
изменен config.yml = ›---: log_dir: 'Amazon / CodeDeploy / log': root_dir: 'C: \ cd': verbose: true: wait_between_runs: 1: wait_after_error: 1: bundle_name: 'artifact_bundle.tar' .. ................ все еще отображается ошибка: нет такого файла или каталога - C: \ ProgramData / Amazon / CodeDeploy / - person Ashish Karpe; 14.09.2017
comment
@balajiprasadb нашел какое-либо решение! Если да, поделитесь здесь - person Ashish Karpe; 14.09.2017
comment
@AshishKarpe К сожалению, эта проблема еще не решена AWS. - person balajiprasadb; 22.09.2017

Если вы используете Windows 2016, установка значения 1 для следующей записи реестра устранит проблему с длинными путями.

HKLM:SYSTEM\CurrentControlSet\Control\FileSystem

Ссылка на сообщение Искандара, это можно сделать с помощью PowerShell. script, если вы хотите автоматизировать его во что-то вроде сценария запуска.

# @see https://github.com/aws/aws-codedeploy-agent/issues/46
# @see https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file#paths
Write-Verbose "----> Enabling Long Path Support"
$RegistryPath = "HKLM:SYSTEM\CurrentControlSet\Control\FileSystem"
$Name = "LongPathsEnabled"
New-ItemProperty -Path $RegistryPath -Name $Name -Value 1 -PropertyType DWORD -Force | Out-Null
# You'll want to reboot to make sure; this is Windows we're working with.
Restart-Computer

Вы также можете использовать метод графического интерфейса пользователя, описанный в этом сообщении.

Примечание - для любого метода обязательно потребуется перезапуск, чтобы настройки вступили в силу.

person Nick Rubino    schedule 26.06.2019