Получение следующей ошибки на serverless.yaml: не удается прочитать запись сопоставления блоков; многострочный ключ не может быть неявным ключом

Я пытаюсь развернуть лямбда-функцию вместе с файлом serverless.yml в AWS, но она выдает следующую ошибку

Ниже приведена функция, определенная в файле YAML.

functions:
 s3-thumbnail-generator:
 handler:handler.s3_thumbnail_generator  
   events:
     - s3:
       bucket: ${self:custom.bucket}
       event: s3.ObjectCreated:*
       rules:
       - suffix: .png

plugins:
  - serverless-python-requirements  

Ошибка, которую я получаю:

не может прочитать запись сопоставления блоков; многострочный ключ не может быть неявным ключом в serverless.yml" в строке 45, столбце 10:

Мне нужно понять, как исправить эту проблему в файле YAML, чтобы развернуть функцию на AWS?


person Hari    schedule 01.05.2019    source источник
comment
Обратите внимание, что формат файла называется YAML, а с 2006 года рекомендуется использовать расширение .yaml. YML примерно такой же старый, как YAML, но что-то совершенно другое.   -  person Anthon    schedule 01.05.2019
comment
Мне было трудно отлаживать подобные синтаксические ошибки в онлайн-редакторе Swagger. Эти проблемы легче выявить в текстовых редакторах, таких как SublimeText, где для выделения синтаксических проблем используется цветовое кодирование.   -  person OneXer    schedule 14.05.2021


Ответы (2)


Проблема в том, что в конце строки нет индикатора значения (:):

handler:handler.s3_thumbnail_generator

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

Неясно, в чем ваша фактическая ошибка. Возможно, вам нужно добавить индикатор значения и добавить в ключ двоеточие:

functions:
 s3-thumbnail-generator:
 handler:handler.s3_thumbnail_generator:
   events:
     - s3:
       bucket: ${self:custom.bucket}
       event: s3.ObjectCreated:*
       rules:
       - suffix: .png

plugins:
  - serverless-python-requirements 

Или может случиться так, что это двоеточие должно было быть индикатором значения (который обычно требует следующего пробела), и вы были небрежны с отступом:

functions:
  s3-thumbnail-generator:
  handler: handler.s3_thumbnail_generator  
  events:
     - s3:
       bucket: ${self:custom.bucket}
       event: s3.ObjectCreated:*
       rules:
       - suffix: .png

plugins:
  - serverless-python-requirements 
person Anthon    schedule 01.05.2019
comment
Спасибо @Anthon за повтор .. Однако проблема еще не решена. я добавил индикатор значения (:), как предлагается здесь обработчик: обработчик. но все равно не помогло. Дайте мне знать, пожалуйста, если мне нужно предоставить более подробную информацию, чтобы получить какое-либо решение для того же? Большое спасибо .. Спасибо - person Hari; 02.05.2019
comment
Мне нужна ссылка на пример или документацию, на которой вы основывали свой код. (отредактируйте его в своем вопросе и оставьте все ОБНОВЛЕНИЕ или РЕДАКТИРОВАТЬ). У меня нет опыта работы с AWS, только с YAML, и не каждый действительный документ YAML будет иметь смысл для AWS. - person Anthon; 02.05.2019

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

functions:
 s3-thumbnail-generator:
 handler:handler.s3_thumbnail_generator  
   events:
     - s3:
       bucket: ${self:custom.bucket}
       event: s3.ObjectCreated:*
       rules:
       - suffix: .png
       ^^^ this line should be indented one level

plugins:
  - serverless-python-requirements
person superkeci    schedule 07.11.2020