Sto cercando di eseguire git in AWDA lambda per effettuare un checkout di un repository.Esecuzione di "git" in AWS lambda
Questa è la mia messa a punto:
- Sto usando nodejs 4.3
- non sto usando nodegit perché voglio usare il "--depth = 1" parametro, che non è supportato da nodegit.
- Ho copiato l'eseguibile git e ssh dall'AMI AWS corretto e collocato in una cartella "bin" nello zip da caricare.
- li ho aggiunti PATH con questo:
->
process.env['PATH'] = process.env['LAMBDA_TASK_ROOT'] + "/bin:" + process.env['PATH'];
Le variabili di ingresso sono impostati in questo modo:
"checkout_url": "[email protected]",
"branch":"master
Ora faccio questo (per brevità, mi mescolato qualche pseudo-codice in):
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");
In esecuzione nel mio computer locale utilizzando lambda-local tutto funziona bene! Ma quando provo in lambda, ottengo:
warning: templates not found /usr/share/git-core/templates
PRIV_END: seteuid: Operation not permitted\r
fatal: Could not read from remote repository.
- Il "warning" è, naturalmente, perché non ho installato git, ma solo copiato il file binario. È una ragione per cui questo non dovrebbe funzionare?
- Perché git ha bisogno di "setuid"? Ho letto che in alcune shell, questo è disabilitato per motivi di sicurezza. Quindi ha senso che non funzioni in lambda. Può in qualche modo essere istruito a non "aver bisogno" di questo comando?
Quindi cosa hai fatto in LambCI che ha aggirato la chiamata seteuid()? Non vedo ancora nulla di diverso dal problema aperto? –
Quando si utilizza git-2.4.3.tar da LambCI con ssh, viene visualizzato il messaggio di errore 'ssh: errore durante il caricamento delle librerie condivise: libfipscheck.so.1: impossibile aprire il file oggetto condiviso: Nessun file o directory simile. Credo che tu debba anche impostare 'LD_LIBRARY_PATH =/tmp/myDir/usr/lib64'. –