Запуск git в AWS lambda
Я пытаюсь запустить git в AWS lambda, чтобы проверить хранилище.
Это моя установка:
Я использую nodejs 4.3Я не пользуюсьnodegit потому что я хочу использовать параметр --depth = 1, который не поддерживается nodegit.Я скопировал исполняемый файл git и ssh из правильного AMI AWS и поместил его в папку «bin» в zip-файле, который я загружаю.Я добавил их в PATH с этим:->
process.env['PATH'] = process.env['LAMBDA_TASK_ROOT'] + "/bin:" + process.env['PATH'];
Входные переменные установлены так:
"checkout_url": "git@...",
"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");
Запуск этого на моем локальном компьютере с помощьюлямбда-местный все работает отлично! Но когда я проверяю это в лямбде, я получаю:
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? Я читал, что в некоторых оболочках это отключено по соображениям безопасности. Так что имеет смысл, что он не работает в лямбде. Можно ли как-нибудь проинструктировать git, чтобы эта команда не «нуждалась»?