如何在 aws lambda 中克隆私有 git 存储库

Cod*_*key 8 github aws-lambda

我需要在 aws lambda 中克隆一个私有 git 存储库(lambda 运行时是 python)。经过一些研究后,我知道我需要在/tmp目录中克隆存储库,因为它是 lambda 中唯一可访问的目录。另外,我需要使用私钥来ssh到github。

基本上,我的代码如下所示:

import git # lambda-git
import os

private_key = """-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----
"""
with open("/tmp/id_rsa", "w") as id_rsa:
  id_rsa.write(private_key)
os.chmod("/tmp/id_rsa", 600)
os.environ["GIT_SSH_COMMAND"] = 'ssh -i /tmp/id_rsa -o StrictHostKeyChecking=no'
git.exec_command("clone", "git@domain:repo_name.git", "/tmp")
Run Code Online (Sandbox Code Playgroud)

但是,将压缩文件夹上传到 lambda 后,出现以下错误

Could not create directory \\'/home/sbx_user1051/.ssh\\'.
Failed to add the host to the list of known hosts (/home/sbx_user1051/.ssh/known_hosts).
Load key \"/tmp/id_rsa\": Permission denied
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Run Code Online (Sandbox Code Playgroud)

我缺少什么?或者甚至可以在 aws lambda 中克隆私有存储库吗?任何帮助表示赞赏。

附言。我知道我可以使用 git 令牌并通过 https 克隆存储库。但我无法修改存储库网址,必须按git@domain:repo_name.git原样使用。

Cod*_*key 4

我终于找到了答案。更改权限代码600解决0o600了这个问题!

  • 您能否分享更多关于您如何实现这一目标的细节?我正在研究完全相同的问题。我做的一件不同的事情是将我的私钥存储在 Amazon Secret Manager 中而不是函数内部,然后在 lambda_handler 函数内部调用 get_secret() 函数。权限的事情起作用了(我必须将我的权限位更改为 0o0600 但除此之外它工作得很好),但现在我发现它无法将known_hosts 文件保存在我的 /home/user 目录中......我无论如何都不想...基本上我想知道你有没有让它发挥作用? (4认同)