【问题标题】:Unable to find good bind path format when deploying AWS Lambda via GitHub action and serverless framework通过 GitHub 操作和无服务器框架部署 AWS Lambda 时找不到好的绑定路径格式
【发布时间】:2021-05-09 07:35:03
【问题描述】:

尝试使用无服务器框架部署 AWS Lambda,并在 Windows Server 2019 上运行 Github 操作,但部署失败

找不到好的绑定路径格式

这是我的动作模板的样子:

name: deploy-aws-lambda
on:
  push:
    branches:
      - master
jobs:
  deploy:
    runs-on: windows-latest
    strategy:
      matrix:
        node-version: [14.x]
    steps:
      - uses: actions/checkout@master
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v1
        with:
          node-version: ${{ matrix.node-version }}
      - name: Install Dependencies
        run: npm install
      - name: Configure AWS Credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: eu-west-1
      - name: Serverless Deploy
        run: npm run-script deploy

脚本部署运行serverless deploy

我的serverless.yml

service: test

provider:
  name: aws
  runtime: python3.8
  region: eu-west-1
  memorySize: 256
  timeout: 15

functions:
  main:
    handler: handler.main
    events:
      - http:
          path: /
          method: get
      
plugins:
  - serverless-python-requirements

custom:
  pythonRequirements:
    dockerizePip: non-linux

package:
  exclude:
    - node_modules/**
    - .vscode/**
    - .github/**

我的package.json

{
  "name": "test",
  "version": "1.0.0",
  "description": "This is test",
  "dependencies": {},
  "devDependencies": {
    "serverless": "^2.33.1",
    "serverless-python-requirements": "^5.1.1"
  },
  "scripts": {
    "deploy": "serverless deploy"
  },
  "author": "",
  "license": "ISC"
}

示例 lambda 函数 handler.py

import json


def main(event, context):
    body = {
        "message": "Go Serverless v1.0! Your function executed successfully!",
        "input": event
    }

    response = {
        "statusCode": 200,
        "body": json.dumps(body)
    }

    return response
}

示例requirements.txt

requests
numpy

调用deploy后登录并跟踪:

Serverless: Generated requirements from D:\a\telegram-bot\telegram-bot\requirements.txt in D:\a\telegram-bot\telegram-bot\.serverless\requirements.txt...
Serverless: Installing requirements from C:\Users\runneradmin\AppData\Local\UnitedIncome\serverless-python-requirements\Cache\5e61405b67ffec41db1bbd78f432bc4fd4ccdf0af1764200fd7a3859b7126a39_slspyc\requirements.txt ...
Serverless: Docker Image: lambci/lambda:build-python3.8
 
  Error --------------------------------------------------
 
  Error: Unable to find good bind path format
      at getBindPath (D:\a\telegram-bot\telegram-bot\node_modules\serverless-python-requirements\lib\docker.js:152:9)
      at installRequirements (D:\a\telegram-bot\telegram-bot\node_modules\serverless-python-requirements\lib\pip.js:198:39)
      at installRequirementsIfNeeded (D:\a\telegram-bot\telegram-bot\node_modules\serverless-python-requirements\lib\pip.js:556:3)
      at ServerlessPythonRequirements.installAllRequirements (D:\a\telegram-bot\telegram-bot\node_modules\serverless-python-requirements\lib\pip.js:635:29)
      at ServerlessPythonRequirements.tryCatcher (D:\a\telegram-bot\telegram-bot\node_modules\bluebird\js\release\util.js:16:23)
      at Promise._settlePromiseFromHandler (D:\a\telegram-bot\telegram-bot\node_modules\bluebird\js\release\promise.js:547:31)
      at Promise._settlePromise (D:\a\telegram-bot\telegram-bot\node_modules\bluebird\js\release\promise.js:604:18)
      at Promise._settlePromise0 (D:\a\telegram-bot\telegram-bot\node_modules\bluebird\js\release\promise.js:649:10)
      at Promise._settlePromises (D:\a\telegram-bot\telegram-bot\node_modules\bluebird\js\release\promise.js:729:18)
      at _drainQueueStep (D:\a\telegram-bot\telegram-bot\node_modules\bluebird\js\release\async.js:93:12)
      at _drainQueue (D:\a\telegram-bot\telegram-bot\node_modules\bluebird\js\release\async.js:86:9)
      at Async._drainQueues (D:\a\telegram-bot\telegram-bot\node_modules\bluebird\js\release\async.js:102:5)
      at Immediate.Async.drainQueues [as _onImmediate] (D:\a\telegram-bot\telegram-bot\node_modules\bluebird\js\release\async.js:15:14)
      at processImmediate (internal/timers.js:461:21)

在本地,此部署过程在我的 Windows 10 机器上运行良好,尽管我使用的是 Docker Desktop 并且有问题的机器是 Windows Server 2019。有任何解决方法或修复此问题的方法吗?

【问题讨论】:

标签: python amazon-web-services docker serverless-framework github-actions


【解决方案1】:

添加“返回服务路径;” D:\a\telegram-bot\telegram-bot\node_modules\serverless-python-requirements\lib\docker.js:152:9 中 getBindPath 函数末尾的行

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2019-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-07
  • 2019-08-04
  • 2019-03-02
  • 2021-02-27
相关资源
最近更新 更多