我如何自定义 sam 构建以通过 ssh 并访问我在 GitHub 上的私有存储库?

How I customize the sam build to pass a ssh and access my private repo on GitHub?

我创建了一堆 lambda 函数,并使用 ide pycharm 在我的本地主机上测试它们。在 requirements.txt 文件中,我添加了对 github 上私有存储库的引用。

存储库有效,我能够通过其他项目的 requirements.txt 安装它。

但是当我开始本地测试时,使用aws sam cli,sam buil 失败,因为容器没有访问存储库的ssh 密钥。

有什么方法可以自定义 sam 构建过程并将我的 ssh 密钥提供给容器以访问我的私有存储库并安装包吗?

或者任何其他解决方案?

此解决方案是为 Python 编写的,但它可能以某种方式适用于 node.js、Java 等

我正在使用以下解决方法。起初它似乎违背了在容器中构建的目的,但如果你的私有存储库不是本地编译的,你应该没问题。本机编译的直接依赖项将正确安装在容器的上下文中。

grep -v "git+" requirements.txt > public_requirements.txt 
sam build --template-file "$TEMPLATE_FILE" --build-dir build --use-container --manifest public_requirements.txt

echo "Adding private dependencies"
grep "git+" requirements.txt | xargs python -m pip install --no-deps -t build/LambdaFunction/

如果您的私有依赖项依赖于本机编译的库,您可以将它们添加到临时 public_requirements.txt,或者将它们安装在另一个容器中,然后复制到 build/LambdaFunction/.