我正在嘗試在AWS lambda中運行git來完成存儲庫的簽出。在AWS中運行'git'lambda
這是我的設置:
- 我使用4.3的NodeJS
- 我不使用nodegit因爲我想用「--depth = 1」參數,這是不被支持nodegit。
- 我已經從正確的AWS AMI複製了git和ssh可執行文件,然後將其放在我上載的zip文件夾中的「bin」文件夾中。
- 我將他們添加到PATH這個:
- >
process.env['PATH'] = process.env['LAMBDA_TASK_ROOT'] + "/bin:" + process.env['PATH'];
輸入變量的設置是這樣的:
"checkout_url": "[email protected]",
"branch":"master
現在我做到這一點(爲簡便起見,我混合一些僞代碼):
downloadDeploymentKeyFromS3Sync('/tmp/ssh_key');
fs.chmodSync("/tmp/ssh_key",0600);
process.env['GIT_SSH_COMMAND'] = 'ssh -o StrictHostKeyChecking=no -i /tmp/ssh_key';
execSync("git clone --depth=1 " + checkout_url + " --branch " + branch + " /tmp/checkout");
使用lambda-local在我的本地計算機上運行此應用程序一切正常!但是,當我在lambda測試它,我得到:
warning: templates not found /usr/share/git-core/templates
PRIV_END: seteuid: Operation not permitted\r
fatal: Could not read from remote repository.
- 「警告」是當然的,因爲我沒有安裝git的,但剛纔複製的二進制文件。這是不應該起作用的原因嗎?
- 爲什麼git需要「setuid」?我在某些shell中讀到,出於安全考慮而被禁用。所以它在lambda中不起作用是有道理的。 git能不知何故被指示不需要「需要」這個命令?
那麼你在LambCI中做了些什麼,以避免seteuid()調用?除了公開問題,我還沒有看到任何其他內容? –
當使用ssh從LambCI中使用git-2.4.3.tar時,加載共享庫時出現錯誤消息:ssh:error:libfipscheck.so.1:無法打開共享目標文件:沒有這樣的文件或目錄。我相信你也必須設置'LD_LIBRARY_PATH =/tmp/myDir/usr/lib64'。 –