yandex-cloud/serverless-plugin

Добавить рабочие примеры

polRk opened this issue · 4 comments

polRk commented

Почему-то не получается задеплоить функции на go, в ответе неясная ошибка:

Unknown function "actions" found
Unknown function "triggers" found
Unknown function "api" found
[object Object]
Failed to update function
telegram: betteraskbot-dev-telegram
Unknown function "web-app" found
Unknown function "telegram" found
[object Object]
Failed to update function
actions: betteraskbot-dev-actions
[object Object]
Failed to update function
triggers: betteraskbot-dev-triggers
[object Object]
Failed to update function
api: betteraskbot-dev-api
[object Object]
Failed to create function "web-app"
Service deployed successfully

serverless.yml

service: betteraskbot
frameworkVersion: "3"

provider:
  name: yandex-cloud
  runtime: golang117
  environment:
    YDB_ENDPOINT: 
    YDB_DATABASE: 
    AWS_ACCESS_KEY_ID: 
    AWS_SECRET_ACCESS_KEY: 

plugins:
  - '@yandex-cloud/serverless-plugin'
package:
  include:
    - functions/**

functions:
  triggers:
    handler: functions/triggers.TriggersHandler
    memorySize: 128
    timeout: 30
    account: betteraskbot-cf
    events:
      - sqs:
          arn: yrn:yc:ymq:ru-central1:b1gv32ui3q6vnrs08cfh:triggers
          batchSize: 10
          enabled: true
          maximumRetryAttempts: 5

  actions:
    handler: functions/actions.ActionsHandler
    memorySize: 128
    timeout: 30
    account: betteraskbot-cf

  api:
    handler: functions/api.ApiHandler
    memorySize: 128
    timeout: 30
    account: betteraskbot-cf

  telegram:
    handler: functions/telegram.TelegramHandler
    memorySize: 128
    timeout: 30
    account: betteraskbot-cf
    events:
      - http:
          path: /telegram/{merchantID}/{channelID}
          method: post
          request:
            parameters:
              paths:
                merchantID: true
                channelID: true

  web-app:
    handler: functions/web_app.WebAppHandler
    memorySize: 128
    timeout: 30
    account: betteraskbot-cf

resources:
  betteraskbot-cf:
    type: yc::ServiceAccount
    roles:
      - editor
      - ydb.editor
      - serverless.functions.invoker
  betteraskbot-mq:
    type: yc::ServiceAccount
    roles:
      - editor
      - ymq.writer
      - serverless.functions.invoker

Структура проекта

Снимок экрана 2022-04-27 в 12 55 12

С такой структурой проекта у вас скорее всего получается что все файлы *.go после распаковки также останутся в директории functions/. А для того чтобы функция корректно создалась, нужно чтобы файлы лежали в корне.
Фреймворк serverless корнем считает ту директорию, где лежит файл serverless.yml.
Таким образом самым простым решением будет перенести его в functions/ и соответственно избавиться от этого префикса в хэндлерах.

polRk commented

@nikolaymatrosov Попробую

@nikolaymatrosov Попробую

@polRk получилось?

polRk commented

@nikolaymatrosov Попробую

@polRk получилось?

А я забросил тогда это дело и не отписался 😅