Не удалось подписать файл из-за ошибки выполнения функции

Обновлено: 02.07.2024

Ошибка сохранения — это тип ошибки, из-за которой пользователь не может сохранить свой сценарий. Этот тип ошибок в основном возникает из-за неправильного синтаксиса и объявления переменных. В следующей таблице перечислены ошибки сохранения в Deluge.

(Строка №: 3) В критериях левое выражение имеет тип, а правое выражение имеет тип, а оператор недействителен

Несоответствие типов:
Это сообщение об ошибке отображается, если пользователь пытается выполнить операцию с двумя операндами несовместимых типов данных.

Пример:
Решение:
В приведенном выше примере оба операнда операции умножения снабжены числовыми значениями.

(Строка №: 2) Переменная '' не определена

Это сообщение об ошибке отображается, если переменная используется до ее определения. Одним из распространенных способов определения переменной является использование задачи установки переменной.

Пример:
Решение.
Переменная b определена числовым значением.

(строка №: 5) Ожидается '>', но найдено ''

Это сообщение об ошибке отображается, если открывающая скобка не полностью совпадает с закрывающей скобкой. Закрывающая скобка отмечает конец блока операторов.

Пример:
Решение.
Открывающая скобка правильно соответствует закрывающей скобке.

(строка №: 5) Комментарий Задача закрыта неправильно

Это сообщение об ошибке отображается, если символ открывающего комментария (/*) неправильно сочетается с символом закрывающего комментария (*/). Все, что находится между этими двумя символами комментария, не выполняется.

Пример:
Решение.
Символ открывающего комментария идеально сочетается с символом закрывающего комментария.

(Строка №: 1) Ошибка неправильного утверждения может быть связана с отсутствием ';' в конце строки или неполное выражение

В Deluge каждая строка должна заканчиваться точкой с запятой, чтобы называть ее оператором. Упомянутое сообщение об ошибке отображается, если оператор неправильно завершается точкой с запятой.

Пример:

Решение:
оператор определения переменной завершается точкой с запятой.

Текст всегда должен быть заключен в двойные кавычки. Если он не заключен должным образом, возникает ошибка неправильного оператора.

Пример:

Решение.
Текстовое значение Гарри правильно заключено в двойные кавычки.

Ошибочно интерпретируется как escape-последовательность:
рассмотрите текстовое значение, которое заканчивается обратной косой чертой (пример: a = "test\";). В этом случае закрывающая двойная кавычка ошибочно интерпретируется как символ, который следует экранировать при обычном выполнении. Таким образом, возникает ошибка неправильного оператора, предполагающая, что текстовое значение неправильно заключено в двойные кавычки.

Пример:

Решение.
К текстовому значению добавляется еще одна закрывающая двойная кавычка, чтобы убедиться, что текст правильно заключен в двойные кавычки.

(Строка №: 2) Количество несоответствий аргументов

Это сообщение об ошибке отображается, если количество аргументов, указанное пользователем в задаче, не соответствует количеству аргументов, которые должны присутствовать.

Пример:

Решение.
Задача IF() имеет три аргумента.

(строка №: 4) В случаях, когда адрес From: не является zoho.adminuserid или zoho.loginuserid, адрес To: может быть только zoho.adminuserid, а задача sendmail не может иметь никаких адресов CC: или BCC:.

В задаче sendmail адрес отправителя или адресата должен быть zoho.adminuserid или zoho.loginuserid. Это ограничение позволяет избежать связи между двумя неизвестными учетными записями в целях безопасности.

Пример:

Решение:
Адрес отправителя в задаче sendmail заменен на zoho.adminuserid.

(Строка №: 7) Недопустимая скрытая копия: Адрес отправителя не соответствует zoho.adminuserid или zoho.loginuserid, поэтому адрес скрытой копии не разрешен

Во избежание спам-сообщений, если адрес отправителя отличается от zoho.adminuserid или zoho.loginuserid, использование полей скрытой копии и копии ограничено. Упомянутое сообщение об ошибке отображается, если пользователь пытается включить поле скрытой копии, когда адрес отправителя не является ни zoho.adminuserid, ни zoho.loginuserid.

Пример:

Решение.
Адрес отправителя заменяется на zoho.loginuserid.

(Строка №: 7) Недопустимая копия: Адрес отправителя не соответствует zoho.adminuserid или zoho.loginuserid, поэтому адрес копии не разрешен

Это сообщение об ошибке отображается, если пользователь пытается включить поле «Копия», когда адрес отправителя не является ни zoho.adminuserid, ни zoho.loginuserid.

Пример:

Решение.
Адрес отправителя заменяется на zoho.loginuserid.

(строка №: 3) Обнаружен недействительный адрес электронной почты

Это сообщение об ошибке отображается, если в поле "От" или "Кому" в задаче sendmail указано значение, отличное от текстового типа данных.

Пример:

Решение.
Адрес отправителя заменяется действительным адресом электронной почты.

(Строка №: 3) Отсутствует сообщение FROM для задачи sendmail

Это сообщение об ошибке отображается, если поле "от" не включено пользователем в задачу sendmail.
Пример:

Решение:
Обязательное поле "от" включено в задаче sendmail

(Строка №: 4) Сообщение "TO" отсутствует для задачи sendmail

Это сообщение об ошибке отображается, если поле «Кому» не включено пользователем в задачу sendmail.
Пример:

Решение:
Обязательное поле «Кому» включено в задаче sendmail

(Строка №: 6) Сообщение SUBJECT отсутствует для задачи sendmail

Это сообщение об ошибке отображается, если поле темы не включено пользователем в задачу sendmail.
Пример:

Решение:
Обязательное поле — тема включена в задаче sendmail

(Строка №: 7) Ошибка в поле "ТЕМА" или "СООБЩЕНИЕ"

Это сообщение об ошибке отображается, если поле сообщения не включено пользователем в задачу sendmail.
Пример:

Решение:
Обязательное поле — сообщение включено в задаче sendmail

(Строка №: 4) "СООБЩЕНИЕ" отсутствует для задачи sendsms

В задаче sendsms поля Сообщение и Кому являются обязательными. Упомянутое сообщение об ошибке отображается, если поле Сообщение не включено пользователем.

Пример:

Решение.
Поле MESSAGE включено в задачу sendsms.

(Строка №: 3) Отсутствует сообщение "TO" для задачи sendsms

Это сообщение об ошибке отображается, если поле "Кому" не включено пользователем в задачу sendsms.

Пример:

Решение.
Поле TO включено в задачу sendsms.

(строка №: 1) Отсутствует оператор возврата: укажите выражение MAP для возврата

Это сообщение об ошибке отображается, если оператор return определен, но значение не возвращается.

(строка №: 1) Не удалось найти функцию ''

Это сообщение об ошибке отображается, если функция вызывается, но изначально не определена. Также отображается, если пользователь не назначил переменную для хранения возвращаемого значения из функции.

Сохранить ошибки для функций

(строка №: 2) функция должна быть назначена переменной

Это сообщение об ошибке будет отображаться, если значение, возвращаемое функцией, не присвоено переменной или используется как часть выражения.

Пример:

Решение:
Значение, возвращаемое функцией — подтекст, присваивается переменной — результат.

(строка №: 2) функция не может быть назначена переменной или использована в выражении

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

Пример:

Решение:
Функция -insert не назначена переменной.

(Строка №: 2) Несоответствие количества аргументов функции

Это сообщение об ошибке будет отображаться, если количество аргументов, предоставленных функции, отличается от количества аргументов, ожидаемых функцией.

Пример:

Решение:
Функция - contains имеет один аргумент.

(Строка №: 2) Несоответствие типа аргумента функции по индексу

Это сообщение об ошибке будет отображаться, если тип данных аргумента, предоставленного функции, отличается от типа данных, ожидаемого функцией.

Пример:

Решение:
Функция - подтекст предоставляется с аргументом типа данных NUMBER.

Сохранить ошибки для задач интеграции

(строка №: 1) Недопустимое имя модуля для функции в индексе

Это сообщение об ошибке будет отображаться, если в качестве параметра задачи интеграции Zoho указано неподдерживаемое или неправильное имя модуля.

Пример:

Решение:
Действительное имя модуля – контакты предоставлены задаче интеграции Zoho Inventory — Создать запись.

(строка №: 1) не поддерживается для этой функции

Появится следующее сообщение об ошибке:

  • Если задача интеграции, предназначенная для выполнения только из редактора Deluge определенной службы Zoho, пытается сохраниться в другом месте.
    Например, задачи интеграции - zoho.salesiq.visitorsession.get и zoho.salesiq.visitorsession.put разрешено выполнять только в редакторе Deluge Zoho Sales IQ. Упомянутое сообщение об ошибке будет отображаться, если любая из этих задач будет выполнена в любой службе Zoho, отличной от Zoho Sales IQ.
  • Если параметр подключения не указан для задачи интеграции при ее сохранении в Zoho Cliq.
    Примечание. Параметр подключения является обязательным при выполнении любой задачи интеграции в редакторе Deluge Zoho Cliq.

Ошибки выполнения

Во время выполнения скрипта возникает ошибка времени выполнения. Этот тип ошибки чаще всего возникает из-за неправильных действий пользователя. В следующей таблице перечислены ошибки времени выполнения в Deluge.

(Строка №: 2) Недопустимая строка формата JSON

Это сообщение об ошибке отображается, если пользователь пытается преобразовать текстовое значение, которое имеет неправильный формат JSON, в набор "ключ-значение".

Пример:

Сообщение об ошибке:

Решение:
Переменной a назначается правильный текст в формате JSON.

(Строка №: 3) Ошибка при выполнении операции / : Ошибка деления на ноль

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

Пример:

Сообщение об ошибке:

Решение:
Переменной b присвоено числовое значение, отличное от нуля.

(Строка №: 2) Данная строка меньше применяемой границы, поэтому возникло исключение индекса за пределами границ.

Эта ошибка возникает, когда скрипт использует манипуляции со значениями Text. Упомянутое сообщение об ошибке отображается, если длина текста меньше значения индекса, вызванного пользователем.

Пример:

Сообщение об ошибке:

Решение:
Аргументам функции subText() присваиваются порядковые номера, не превышающие длина текстового значения.

(Строка №: 2) Указанный индекс больше, чем размер списка

Это сообщение об ошибке отображается, если размер коллекции меньше значения индекса, вызванного пользователем.

Пример:

Сообщение об ошибке:

Решение:
Аргумент функции get() содержит значение индекса, которое меньше размера коллекции.

(Строка №: 3) При выполнении операции произошло нулевое значение

Этот тип сообщения об ошибке отображается, если пользователь пытается выполнить операцию с нулевым значением.

Пример:

Сообщение об ошибке:

Решение:
Переменной a присваивается числовое значение.

(Строка №: 3) При выполнении операции модификации обнаружено несоответствие выражений типа данных

Этот тип сообщения об ошибке отображается, если пользователь пытается выполнить операцию по модулю с нулевым значением.

Пример:

Сообщение об ошибке:

Решение:
Переменной a присваивается числовое значение.

(строка №: 1) При выполнении этого действия произошла ошибка

Это сообщение об ошибке отображается, если пользователь пытается сравнить два нечисловых операнда с помощью оператора отношения.

(Строка №: 1) '' нельзя преобразовать в 'MAP'.

Это сообщение об ошибке отображается, если пользователь пытается подставить числовое значение вместо набора "ключ-значение".

Ошибки выполнения: встроенные функции

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

Сообщения об ошибках при выполнении функций TEXT

(Строка №: 2) Данная строка меньше применяемой границы, поэтому возникло исключение индекса за пределами границ

Отображается, когда значение параметра index выходит за пределы допустимого диапазона.

Пример:

Сообщение об ошибке:

Решение:
Параметры поставляются со значениями, которые находятся в диапазоне индекса исходного текста.

(Строка №: 2) 'TEXT' не может быть преобразовано в '[BIGINT]' для функции

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

Пример:

Сообщение об ошибке:

Решение:
Параметры имеют числовые значения.

Сообщения об ошибках при выполнении функций NUMBER

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

Пример:

Сообщение об ошибке:

Решение:
Переменной присваивается числовое значение - число, которое в свою очередь передается в качестве параметра.

Сообщения об ошибках при выполнении функций XML

(строка №: 2) Недопустимый XML или недопустимый XPath

Отображается, если предоставленный XML или XPath неверен.

Пример:

Сообщение об ошибке:

Решение:
В качестве параметра указан действительный XPath.

Сообщения об ошибках при выполнении общих функций

(Строка №: 2) «ТЕКСТ» не может быть преобразован в «[ДЕСЯТИЧНОЕ ЧИСЛО, ДАТА, ДАТА-ВРЕМЯ]» для функции «текст»


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

Сообщение об ошибке:

Решение:
Переменной fieldValue присваивается числовое значение.

(Строка №: 2) Дата, которую невозможно разобрать

Отображается, если предоставленное значение даты имеет недопустимый формат даты.

Пример:

Сообщение об ошибке:

Решение:
Действительная дата назначается переменной - dateString.

Сообщения об ошибках при выполнении функций COLLECTION

(Строка №: 2) TEXT» не может быть приведен к «[BOOLEAN]» для функции «sort»

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

Пример:

Сообщение об ошибке:

Решение:
Параметр имеет логическое значение.

(Строка №: 2) Данная строка меньше применяемой границы, поэтому возникло исключение индекса за пределами границ

Отображается, когда значение параметра index выходит за пределы допустимого диапазона.

Пример:

Сообщение об ошибке:

Решение:
Параметры поставляются со значениями, которые находятся в диапазоне индекса исходного текста.

Сообщения об ошибках при выполнении функций DATE-TIME

(Строка №: 2) ТЕКСТ' не может быть приведен к '[ДАТА-ВРЕМЯ, ДАТА]' для функции ' '

Отображается, если предоставленное значение имеет недопустимый формат даты.

Пример:

Сообщение об ошибке:

Решение:
Переменной - current_date присваивается значение в допустимом формате даты.
< /p>

(Строка №: 2) TEXT' не может быть приведен к '[BIGINT]' для функции ' '

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

Пример:

Сообщение об ошибке:
Параметр имеет числовое значение.

Решение:

(строка №: 2) Несовместимые типы для функции с индексом аргумента 1
Требуется: [DATE-TIME, DATE]
Найдено: NUMBER

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

Пример:

Сообщение об ошибке:

Решение:
Значение даты присваивается переменной - current_date.

Наиболее распространенные типы ошибок при использовании SignTool являются внутренними и обычно выглядят примерно так:

Если код ошибки начинается с 0x8008, например 0x80080206 (APPX_E_CORRUPT_CONTENT), подписываемый пакет недействителен. Если вы получаете ошибку такого типа, вы должны пересобрать пакет и снова запустить SignTool.

SignTool имеет параметр отладки для отображения ошибок сертификата и фильтрации. Чтобы использовать функцию отладки, поместите параметр /debug сразу после знака, а затем полную команду SignTool.

Более распространенная ошибка — 0x8007000B. Дополнительные сведения об ошибках этого типа можно найти в журнале событий.

Чтобы найти дополнительную информацию в журнале событий:

  • Запустить Eventvwr.msc
  • Откройте журнал событий: Средство просмотра событий (локальное) -> Журналы приложений и служб -> Microsoft -> Windows -> AppxPackagingOM -> Microsoft-Windows-AppxPackaging/Operational
  • Найти самое последнее событие ошибки

Внутренняя ошибка 0x8007000B обычно соответствует одному из следующих значений:

Идентификатор события Пример строки события Предложение
150 ошибка 0x8007000B: имя издателя манифеста приложения (CN=Contoso) должно совпадать с именем субъекта подписывающего сертификата (CN=Contoso, C=US). Имя издателя манифеста приложения должно точно совпадать с именем субъекта подписи.
151 ошибка 0x8007000B: указанный метод хеширования подписи (SHA512) должен совпадать хэш-метод, используемый в карте блоков пакета приложения (SHA256). Алгоритм hashAlgorithm, указанный в параметре /fd, неверен. Повторно запустите SignTool, используя hashAlgorithm, который соответствует карте блока пакета приложения (используется для создания пакета приложения)
152 ошибка 0x8007000B: содержимое пакета приложения должно пройти проверку против его карты блоков. Пакет приложения поврежден, и его необходимо перестроить для создания новой карты блоков. Дополнительные сведения о создании пакета приложения см. в разделе Создание пакета приложения с помощью инструмента MakeAppx.exe

Еще одна распространенная ошибка — 0x80080057. При попытке подписать файл Portable Executable (PE) с помощью инструмента SignTool в Windows могут возникнуть следующие проблемы:

Не удалось подписать PE-файл размером 4 гигабайта (ГБ) или больше. При попытке подписать появляется сообщение об ошибке "Недопустимый параметр (0x80080057)".

Для файлов размером более 4 ГБ сгенерированный хэш может быть неточным, даже если в противном случае SignTool может успешно подписать файл.

Это особенно верно для файлов .cat.

Эта проблема возникает для PE-файлов, таких как .exe, .sys и т. д. Эта проблема возникает из-за переменной ULONG в заголовке PE, которая указывает размер изображения. (Размер образа составляет 2 ГБ для операционных систем нижнего уровня, таких как Vista и более ранние версии.) Это конструктивное ограничение с 1996 года. Максимальное ограничение для этого значения составляет 4 ГБ для PE-файлов, таких как .exe и .sys. . Хотя файлы .cat обычно могут быть подписаны, сгенерированный внутренний хэш может быть неточным.

Чтобы обойти эту проблему, убедитесь, что размер любого PE-файла, который вы пытаетесь подписать, не превышает 4 ГБ. Из-за риска обратной совместимости в настоящее время невозможно ни обратное портирование, ни постоянное исправление.Однако этот вопрос изучается.

Эта проблема не связана с SignTool. Размер PE-заголовка ограничен 4 ГБ для Windows 7 и более поздних версий Windows, независимо от того, какой инструмент используется.

Часто задаваемые вопросы (FAQ)

В1. Каков текущий официальный предел размера файла для цифровой подписи (и подписи с отметкой времени) в Windows?

A1. Для PE-файлов, таких как .exe и .sys, максимальный размер файла для подписи составляет 4 ГБ.

Вопрос 2. Существует ли конкретная версия Windows, например Windows Server 2016, с наибольшими возможностями для подписи больших файлов?

A2: Нет, проблема затрагивает все версии Windows.

Q3: 64-разрядная версия Signtool поддерживает эту функцию лучше, чем 32-разрядная версия?

О: Нет, 64-разрядная версия SignTool использует те же значения, что и 32-разрядная версия. Таким образом, проблема остается в 64-разрядной версии.

Вопрос 4. Могут ли клиенты, использующие 32-разрядную версию Windows, столкнуться с проблемами при попытке использовать файлы, подписанные с помощью 64-разрядной версии SignTool?

О: Нет. Однако ограничения останутся вне зависимости от того, какая версия SignTool используется.

Когда вы вызываете функцию Lambda, Lambda проверяет запрос и проверяет возможность масштабирования перед отправкой события в вашу функцию или, при асинхронном вызове, в очередь событий. Ошибки вызова могут быть вызваны проблемами с параметрами запроса, структурой события, настройками функций, разрешениями пользователей, разрешениями ресурсов или ограничениями.

Если вы вызовете свою функцию напрямую, вы увидите все ошибки вызова в ответе от Lambda. Если вы вызываете свою функцию асинхронно с сопоставлением источника события или через другую службу, вы можете обнаружить ошибки в журналах, очередь недоставленных сообщений или назначение события сбоя. Параметры обработки ошибок и поведение при повторных попытках различаются в зависимости от того, как вы вызываете функцию и от типа ошибки.

Список типов ошибок, которые может возвращать операция Invoke, см. в разделе Invoke.

IAM: lambda:InvokeFunction не авторизован

Ошибка: Пользователь: arn:aws:iam::123456789012:пользователь/разработчик не имеет права выполнять: lambda:InvokeFunction на ресурсе: my-function

Ваш пользователь AWS Identity and Access Management (IAM) или роль, которую вы принимаете, должны иметь разрешение на вызов функции. Это требование также относится к функциям Lambda и другим вычислительным ресурсам, которые вызывают функции. Добавьте политику AWSLambdaRole, управляемую AWS, к своему пользователю IAM или добавьте пользовательскую политику, которая разрешает действие lambda:InvokeFunction для целевой функции.

В отличие от других операций Lambda API, имя действия IAM ( lambda:InvokeFunction ) не совпадает с именем операции API ( Invoke ) для вызова функции.

Лямбда: операция не может быть выполнена ResourceConflictException

Ошибка: ResourceConflictException: операция не может быть выполнена в данный момент. В настоящее время функция находится в следующем состоянии: Ожидание

При подключении функции к виртуальному частному облаку (VPC) во время создания функция переходит в состояние ожидания, пока Lambda создает эластичные сетевые интерфейсы. В течение этого времени вы не можете вызывать или изменять свою функцию. Если вы подключаете свою функцию к VPC после создания, вы можете вызывать ее во время ожидания обновления, но вы не можете изменять ее код или конфигурацию.

Лямбда: функция зависла в ожидании

Ошибка: Функция зависла в состоянии ожидания на несколько минут.

Если функция зависла в состоянии ожидания более шести минут, вызовите одну из следующих операций API, чтобы разблокировать ее:

Lambda отменяет незавершенную операцию и переводит функцию в состояние Failed. Затем вы можете удалить функцию и создать ее заново или попытаться выполнить еще одно обновление.

Лямбда: одна функция использует весь параллелизм

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

Чтобы разделить доступный параллелизм вашего аккаунта AWS в регионе AWS на пулы, используйте зарезервированный параллелизм. Зарезервированный параллелизм гарантирует, что функция всегда может масштабироваться до назначенного параллелизма и не выходит за рамки назначенного параллелизма.

Общие: невозможно вызвать функцию с другими учетными записями или службами

Проблема: Вы можете вызывать свою функцию напрямую, но она не запускается, когда ее вызывает другая служба или учетная запись.

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

Общие: вызов функции зацикливается

Проблема: функция постоянно вызывается в цикле.

Обычно это происходит, когда ваша функция управляет ресурсами в том же сервисе AWS, который ее запускает.Например, можно создать функцию, сохраняющую объект в корзине Amazon Simple Storage Service (Amazon S3), для которой настроено уведомление, которое снова вызывает функцию. Чтобы остановить выполнение функции, на странице конфигурации функции выберите Throttle. Затем определите путь кода или ошибку конфигурации, вызвавшую рекурсивный вызов.

Lambda: псевдоним маршрутизации с обеспеченным параллелизмом

Проблема: Подготовленные параллельные параллельные вызовы во время маршрутизации псевдонимов.

Lambda использует простую вероятностную модель для распределения трафика между двумя версиями функции. При низком уровне трафика вы можете увидеть большую разницу между настроенным и фактическим процентом трафика для каждой версии. Если ваша функция использует подготовленный параллелизм, вы можете избежать побочных вызовов, настроив большее количество подготовленных экземпляров параллелизма во время действия маршрутизации псевдонимов.

Lambda: холодный запуск с подготовленным параллелизмом

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

Если количество одновременных выполнений функции меньше или равно заданному уровню параллельного выполнения, никаких холодных запусков быть не должно. Чтобы убедиться, что подготовленный параллелизм работает нормально, выполните следующие действия:

Подготовленный параллелизм нельзя настроить в $LATEST версии.

Убедитесь, что ваши триггеры вызывают правильную версию функции или псевдоним. Например, если вы используете Amazon API Gateway, убедитесь, что API Gateway вызывает версию функции или псевдоним с подготовленным параллелизмом, а не $LATEST. Чтобы убедиться, что используется подготовленный параллелизм, вы можете проверить метрику ProvisionedConcurrencyInvocations Amazon CloudWatch. Ненулевое значение указывает, что функция обрабатывает вызовы в инициализированных средах выполнения.

Определите, превышает ли параллелизм вашей функции настроенный уровень подготовленного параллелизма, проверив метрику ProvisionedConcurrencySpilloverInvocations CloudWatch. Ненулевое значение указывает на то, что используется весь предоставленный параллелизм, а некоторые вызовы произошли с холодным запуском.

Проверьте частоту вызовов (количество запросов в секунду). Функции с подготовленным параллелизмом имеют максимальную скорость 10 запросов в секунду на подготовленный параллелизм. Например, функция, настроенная на 100 подготовленных параллелизмов, может обрабатывать 1000 запросов в секунду. Если частота вызовов превышает 1000 запросов в секунду, возможны холодные запуски.

Существует известная проблема, из-за которой при первом вызове в инициализированной среде выполнения в журналах CloudWatch отображается ненулевая метрика Init Duration, даже если холодный запуск не произошел. Мы разрабатываем исправление для исправления отчетов в журналах CloudWatch.

Лямбда: изменчивость задержки с обеспеченным параллелизмом

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

Lambda: холодный старт с новыми версиями

Проблема: вы видите холодный запуск при развертывании новых версий вашей функции.

Когда вы обновляете псевдоним функции, Lambda автоматически переключает подготовленный параллелизм на новую версию на основе весов, настроенных для псевдонима.

Ошибка: KMSDisabledException: Lambda не удалось расшифровать переменные среды, так как используемый ключ KMS отключен. Пожалуйста, проверьте настройки ключа KMS функции.

Эта ошибка может возникнуть, если ваш ключ службы управления ключами AWS (AWS KMS) отключен или если разрешение, позволяющее Lambda использовать ключ, отозвано. Если грант отсутствует, настройте функцию на использование другого ключа. Затем переназначьте пользовательский ключ для повторного создания гранта.

EFS: функции не удалось смонтировать файловую систему EFS

Ошибка: EFSMountFailureException: функция не смогла смонтировать файловую систему EFS с точкой доступа arn:aws:elasticfilesystem:us-east-2:123456789012:access-point/fsap-015cxmplb72b405fd.

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

EFS: функции не удалось подключиться к файловой системе EFS

Ошибка: EFSMountConnectivityException: функции не удалось подключиться к файловой системе Amazon EFS с точкой доступа arn:aws:elasticfilesystem:us-east-2:123456789012:access-point/fsap-015cxmplb72b405fd. Проверьте конфигурацию сети и повторите попытку.

Функции не удалось установить соединение с файловой системой функции по протоколу NFS (TCP-порт 2049). Проверьте группу безопасности и конфигурацию маршрутизации для подсетей VPC.

EFS: функции не удалось смонтировать файловую систему EFS из-за тайм-аута

Ошибка: EFSMountTimeoutException: функция не смогла смонтировать файловую систему EFS с точкой доступа < arn:aws:elasticfilesystem:us-east-2:123456789012:access-point/fsap-015cxmplb72b405fd>из-за превышения времени монтирования .

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

Lambda: Lambda обнаружила слишком долгий процесс ввода-вывода

EFSIOException: этот экземпляр функции был остановлен, так как Lambda обнаружила, что процесс ввода-вывода занимает слишком много времени.

Время ожидания предыдущего вызова истекло, и Lambda не смогла завершить обработчик функции. Эта проблема может возникать, когда в подключенной файловой системе заканчиваются кредиты, а базовая пропускная способность недостаточна. Чтобы увеличить пропускную способность, вы можете увеличить размер файловой системы или использовать подготовленную пропускную способность. Дополнительную информацию см. в разделе Пропускная способность.

Моя Java-программа упакована в файл jar и использует внешнюю библиотеку jar, надувной замок. Мой код компилируется нормально, но запуск jar приводит к следующей ошибке:

Исключение в потоке "main" java.lang.SecurityException: неверный дайджест файла подписи для основных атрибутов манифеста

Я гуглил более часа в поисках объяснения и нашел очень мало полезного. Если кто-то видел эту ошибку раньше и может предложить некоторую помощь, я был бы признателен.

Нет, по крайней мере, я так не думаю. Xcode может пытаться подписать его самостоятельно, но, похоже, нет никаких настроек, чтобы отключить это.

22 ответа 22

Для тех, кто получил эту ошибку при попытке создать затененный uber-jar с помощью maven-shade-plugin , решение состоит в том, чтобы исключить файлы сигнатур манифеста, добавив следующие строки в конфигурацию плагина:

У меня возникло искушение создать совершенно новую тему, но, поскольку она занимает первое место в результатах Google, мне показалось целесообразным оставить ее здесь. Перечисленные здесь строки находятся в файле POM, который я использую, и я все еще получаю сообщение об ошибке безопасности при запуске приложения. Он отлично строится — и, конечно же, работает нормально, когда НЕ использует банку Uber — как и ожидалось. И хотя это, безусловно, вариант — держите их отдельно — это не решит проблему, если вы хотите Uber Jar.

Это работает для меня, но. почему мы должны были игнорировать файлы сигнатур? Я уверен, что манифест подписи существует не просто так.

@JerylCook Файлы подписи указывают на то, что в содержимом этой банки есть эти файлы. Когда вы создаете банку uber, вы добавляете в банку еще кучу файлов, и поэтому подпись неверна. Если бы очень хотелось, то можно было бы переподписать новую банку, но конечно же своей подписью, а не старой. В качестве альтернативы вы можете не распространять uber jar, а вместо этого включить подписанный jar как отдельный файл, но тогда это в первую очередь противоречит цели uber jar.

Для тех, кто использует gradle и пытается создать и использовать толстую банку, может помочь следующий синтаксис.

Это просто исключает все файлы с расширениями .RSA, .SF или .DSA внутри каталога META-INF.

При подписании файла jar эти файлы добавляются в META-INF, но когда они включены, подписи больше не согласуются с содержимым jar. Таким образом, их удаление позволяет избежать несоответствия подписи.

Это также устраняет ошибку Ошибка: не удалось найти или загрузить приложение основного класса. Причина: java.lang.ClassNotFoundException: приложение

Используйте следующую команду

Спасибо, у меня сработало в Windows. Просто открыл банку с помощью 7zip, удалил файлы .SF. У меня не было файлов .RSA для удаления

Вау, могу я просто сказать, что это решение было потрясающим (и я узнал кое-что очень полезное по пути!) Это требует большего количества голосов.

Некоторые из ваших зависимостей, скорее всего, являются подписанными jar-файлами. Когда вы объединяете их все в один большой jar-файл, соответствующие файлы сигнатур все еще присутствуют и больше не соответствуют «большому комбинированному» jar-файлу, поэтому среда выполнения останавливается, думая, что jar-файл был подделан (что, так сказать). .

Предполагая, что вы используете ant, вы можете решить проблему, удалив файлы сигнатур из ваших зависимостей jarfile. К сожалению, в ant это невозможно сделать за один шаг.

Однако я смог заставить это работать с Ant в два этапа, не называя конкретно каждую зависимость jarfile, используя:

Другие варианты, которые я нашел в связанных темах, мне не подошли.

Перечисленное здесь решение может служить указателем.

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

Как мне отразить это в файле манифеста? Я никогда раньше не редактировал. Я использую Xcode, и общепринятым соглашением является размещение внешних jar-библиотек в каталоге myproject/lib для включения, что я и делаю.

К сожалению, некоторые из нас используют такие вещи, как "плагин maven Shade", поэтому в таких случаях не так просто включить дословные копии оригинального jar-файла.

Эта проблема возникла при использовании IntelliJ IDEA 14.01.

Мне удалось это исправить:

Файл->Структура проекта->Добавить новый (артефакты)->jar->Из модулей с зависимостями в окне «Создать банку из модуля»:

Выберите основной класс

Файл JAR из библиотек Выберите копию в выходной каталог и свяжите через манифест

Безопасность — это уже сложная тема, но я разочарован тем, что наиболее популярным решением является удаление сигнатур безопасности. JCE требует этих подписей. Maven Shade взрывает файл jar BouncyCastle, который помещает подписи в META-INF, но подписи BouncyCastle недействительны для нового uber-jar (только для jar BC), и это вызывает ошибку Invalid signal в этом потоке. .

Да, исключение или удаление подписей, предложенное @ruhsuzbaykus, действительно устраняет первоначальную ошибку, но также может привести к новым загадочным ошибкам:

Явно указав, где найти алгоритм следующим образом:

Мне удалось получить другую ошибку:

JCE не может аутентифицировать поставщика, поскольку мы удалили криптографические подписи, следуя предложению в другом месте этой же темы.

Решением, которое я нашел, стал исполняемый подключаемый модуль упаковщика, который использует подход jar-in-jar для сохранения подписи BouncyCastle в одном исполняемом jar-файле.

ОБНОВЛЕНИЕ:

Еще один способ сделать это (правильный?) — использовать подписывающее устройство Maven Jar. Это позволяет вам продолжать использовать оттенок Maven, не получая ошибок безопасности. ОДНАКО у вас должен быть сертификат подписи кода (Oracle предлагает искать «Сертификат подписи кода Java»). Конфигурация POM выглядит так:

Нет, заставить JCE распознавать самозаверяющий сертификат невозможно, поэтому, если вам нужно сохранить сертификаты BouncyCastle, вам нужно либо использовать подключаемый модуль jar-in-jar, либо получить сертификат JCE.

Это определенно правильный способ сделать это, даже если это требует больших усилий. Спасибо за подробное указание на предостережения при использовании утвержденного ответа. Знаете ли вы, должен ли сертификат JCE быть подписан Sun? Или может

Существуют третьи стороны, которые могут выдавать сертификаты подписи кода. Найдите "Сертификат подписи кода Java", чтобы просмотреть варианты.

Мне помогло. В этой библиотеке есть некоторые файлы, которые я не использую, поэтому, кроме них, помогите мне с файлом fat-jar

Я столкнулся с той же проблемой, после ссылки где-то она работала, как показано ниже:

Предполагая, что вы создаете свой jar-файл с помощью ant, вы можете просто указать ant не включать каталог META-INF. Это упрощенная версия моей цели муравья:

Наконец мне это помогло

Угадайте, что было удалено из моего jar-файла?!

Похоже, проблема связана с некоторыми файлами, относящимися к eclipse.

У меня была такая же проблема в gradle при создании толстого Jar, обновление файла build.gradle с помощью строки исключения решило проблему.

исключить 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA' Это отсутствовало, проблема была вызвана каким-то зависимым jar-файлом

Если вы используете gradle, вот полная задача farJar:

Сравните папку META-INF в новой банке со старой (перед добавлением новых библиотек). Вполне возможно, что будут новые файлы. Если да, то их можно удалить. Должно помочь. С уважением, 999michal

Стратегия заключается в использовании ANT для упрощения удаления подписи из каждого JAR-файла. Он будет выполнять следующие шаги:

  1. Копирование MANIFEST.MF во временный файл
  2. Удаление записей Name и SHA из временного файла
  3. Создание временного JAR-файла с временным манифестом
  4. Удаление временного манифеста
  5. Замена исходного JAR-файла временным

Вот макрос ANT, выполняющий работу:

Затем определение можно вызвать в задаче ANT следующим образом:

Что мне помогло (IntelliJ IDEA 2016.3): «Файл» -> «Структура проекта» -> «Артефакты» -> «Добавить JAR» -> «Выбрать основной класс» -> «Копировать в выходной каталог и связать через манифест» -> «ОК» -> «Применить» — > Построить -> Построить артефакты. -> Построить

В этом разделе рассматриваются распространенные проблемы, связанные с функциями Oracle, и способы их решения.

Используйте следующие методы, чтобы узнать больше об ошибке или проблеме:

  • Используйте диаграмму "Ошибки" на странице "Метрики" в консоли, чтобы просмотреть коды ошибок и сообщения для отдельных функций. Если функция не запускается или работает не так, как ожидалось, когда вы ее вызываете, вы можете использовать диаграмму "Ошибки" на странице "Метрики". в консоли, чтобы увидеть коды ошибок и сообщения об ошибках для этой функции. Дополнительные сведения см. в разделе Метрики функций.
  • Используйте трассировку для наблюдения за выполнением функции. Если функция не запускается или работает не так, как ожидалось, когда вы ее вызываете, вы можете использовать трассировку для устранения проблем с выполнением и производительностью.Чтобы использовать трассировку, необходимо включить трассировку для приложения, содержащего функцию, а затем включить трассировку для одной или нескольких функций. Затем вы можете просматривать трассировки функций в обозревателе трассировки APM. Дополнительные сведения см. в разделе Распределенная трассировка для функций.
  • Использование журналов функций для просмотра информации о вызовах функций. Служба ведения журналов Oracle Cloud Infrastructure Logging — это рекомендуемый вариант по умолчанию для доступа, поиска и хранения журналов функций. Обратите внимание, что для хранения и просмотра журналов функции функция должна включать операторы печати. Дополнительные сведения см. в разделе Хранение и просмотр журналов функций.

Обратите внимание, что DEBUG=1 должно стоять перед командой и что DEBUG должно быть в верхнем регистре.

Если вы обратились в службу поддержки Oracle и отправили запрос в службу поддержки, вы можете прикрепить результат к запросу.

Обратите внимание, что если вы настроили локальный компьютер в качестве среды разработки функций Oracle (указав --provider oracle в контексте Fn Project CLI), вы должны установить переменную среды OCI_GO_SDK_DEBUG=v, а также запустить команду с помощью ОТЛАДКА=1 .

Вопросы в этой теме разбиты на следующие широкие категории:

Настройка и запуск функций Oracle

<й заголовки = "Troubleshooting_Oracle_Functions__table_vts_n5c_snb__entry__1" сфера = "строка"> 404: Ресурс не разрешено или не найден <й заголовки = "Troubleshooting_Oracle_Functions__table_vts_n5c_snb__entry__1" сфера =» row">Ошибка ответа от демона. unknown: Unauthorized > <й заголовки = "Troubleshooting_Oracle_Functions__table_vts_n5c_snb__entry__1" Scope = "строка"> ASN1: ошибка структуры: метки не совпадают
Номер ошибки и сообщение (если применимо) Описание и ссылка
401: не аутентифицирован Запуск FN Project CLI Команды возвращает 401 ошибки
Выполнение команд Fn Project CLI возвращает ошибку 404
x509: decr yption пароль неправильный Запуск Fn CLI проекта команда, возвращает X509: дешифрование пароля неправильных ошибки
При выполнении операций, связанных с Docker, с интерфейсом командной строки Fn Project отображается сообщение "Ответ об ошибке от демона. unknown: Unauthorized"
выполнения команды отображается Fn CLI проекта в «Fn: ASN1: структура сообщение об ошибке: теги не совпадают"
Версия клиента: nnnn не является последней: < em>nnnn Ru nning fn version показывает, что доступна более поздняя версия интерфейса командной строки Fn Project

Создание приложений и функций

Номер ошибки и сообщение (если применимо) Описание и ссылка< /th>
Не удалось создать приложение, повторите попытку. При создании нового приложения в диалоговом окне "Новое приложение" отображается сообщение об ошибке

Развертывание приложений и функций

отказано: запрошенный доступ к ресурсу запрещен

Fn: ошибка при запуске docker push, вы вошли в docker?: статус выхода 1

Вызов функций

413: запрос слишком велик

429: Превышен лимит количества пользователей

502: тело ответа функции слишком велико

заголовок ответа функции слишком велик

502: невозможно получить токен авторизации ресурса из-за того, что ресурс функции соответствует слишком большому количеству динамических групп. Обновите правила соответствия ваших динамических групп

502: ошибка получения ответа функции

502: функция не выполнена

502: неверный ответ функции

503: Время истекло — сервер слишком занят

504: Не удалось инициализировать контейнер. Убедитесь, что вы используете последнюю версию FDK, и проверьте журналы

'ModuleNotFoundError: нет модуля с именем 'contextvars'

504: время ожидания инициализации контейнера истекло, убедитесь, что вы используете последнюю версию FDK, и проверьте журналы

Читайте также: