无服务器:使用私有 Python 包作为依赖项

Serverless: Using a private Python package as a dependency

我有一个 Python 无服务器项目,它使用私有 Git(在 Github 上)存储库。

Requirements.txt 文件如下所示:

itsdangerous==0.24
boto3>=1.7
git+ssh://git@github.com/company/repo.git#egg=my_alias

项目的配置主要是这样的

plugins:
  - serverless-python-requirements
  - serverless-wsgi
custom:
  wsgi:
    app: app.app
    packRequirements: false
  pythonRequirements:
    dockerizePip: true
    dockerSsh: true

当我使用此命令进行部署时:

sls deploy --aws-profile my_id --stage dev --region eu-west-1

我收到这个错误:

  Command "git clone -q ssh://git@github.com/company/repo.git /tmp/pip-install-a0_8bh5a/my_alias" failed with error code 128 in None

我做错了什么?我怀疑我为 Git 集线器访问配置 SSH 密钥的方式或无服务器包的配置。

虽然不推荐。您是否尝试过使用 sudo sls deploy --aws-profile my_id --stage dev --region eu-west-1

使用错误的密码或 ssh 密钥也可能导致此错误。

所以我设法解决这个问题的唯一方法是

  1. 配置没有密码的 SSH。按照步骤 here.
  2. serverless.yml中,我添加了以下内容:
    custom:
      wsgi:
        app: app.app
        packRequirements: false
      pythonRequirements:
        dockerizePip: true
        dockerSsh: true
        dockerSshSymlink: ~/.ssh

注意我添加了 dockerSshSymlink 来报告本地计算机上 ssh 文件的位置; ~/.ssh.

  1. requirements.txt中,我这样添加了我的私人依赖:

    git+ssh://git@github.com/my_comp/my_repo.git#egg=MyRepo

所有作品。