【发布时间】: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。有任何解决方法或修复此问题的方法吗?
【问题讨论】:
-
在 Windows 10 上出现同样的错误,但在 Docker Desktop 中的所需目录上启用文件共享可解决此问题。想知道在这种情况下如何实现。
-
Docker 版本是来自dockermsft.azureedge.net/dockercontainer/DockerMsftIndex.json 的最新版本。
-
能否分享链接以在 Windows 10 中启用 docker 文件共享
标签: python amazon-web-services docker serverless-framework github-actions