无法在 AWS lambda 中使用 gitpython

Can't use gitpython in AWS lambda

我一直在尝试在 aws lambda 中使用 gitpython 包。我用过 python2.7 环境。我使用 this 将 gitpython 与我的 python 代码打包成一个 zip 文件并上传。

import json
import git

def lambda_function(event, context):
    repo="https://github.com/abc/xyz.git"
    git.Git().clone(repo)

它说

Cmd('git') not found due to: OSError('[Errno 2] No such file or directory')
  cmdline: git clone https://github.com/abc/xyz.git: GitCommandNotFound
Traceback (most recent call last):
  File "/var/task/lambda_function.py", line 13, in lambda_function
    git.Git().clone("https://github.com/abc/xyz.git")
  File "/var/task/git/cmd.py", line 425, in <lambda>
    return lambda *args, **kwargs: self._call_process(name, *args, **kwargs)
  File "/var/task/git/cmd.py", line 877, in _call_process
    return self.execute(call, **exec_kwargs)
  File "/var/task/git/cmd.py", line 602, in execute
    raise GitCommandNotFound(command, err)
GitCommandNotFound: Cmd('git') not found due to: OSError('[Errno 2] No such file or directory')
  cmdline: git clone https://github.com/abc/xyz.git

我认为这个错误是因为lambda机器里面没有git造成的!我该如何使用它?

有一个特殊的 lambda 层将 git 引入 lambda 函数。 检查 this and this 参考。基本上,

Click on Layers and choose "Add a layer", and "Provide a layer version ARN" and enter the following ARN (replace us-east-1 with the region of your Lambda):

arn:aws:lambda:us-east-1:553035198032:layer:git:6

我遇到了这个问题,终于得到了一个非常简单的解决方案。您所要做的就是在 lambda 函数中添加一个层。无需更改代码中的任何内容。

您可以通过提供这样的 arn 添加 lambda 层,其中区域将更改为您所在的区域,对于版本,您可以参考此 link。

https://github.com/lambci/git-lambda-layer

arn:aws:lambda:region:553035198032:layer:git:version