私はAWSラムダでgitを実行してリポジトリのチェックアウトを試みています。私はnodejs 4.3 AWSラムダで 'git'を実行
- :
は、これは私の設定です。
- 正しい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
私は簡潔にするため(これを行う、Iにいくつかの擬似コードを混ぜたもの):
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を使用してローカルコンピュータでこれを実行すると、すべて正常に動作します。私はラムダでそれをテストする場合でも、私が手:
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"が必要なのはなぜですか?いくつかのシェルではセキュリティ上の理由から無効になっています。だからラムダではうまくいかないというのは理にかなっています。何とかこのコマンドを "必要"しないように指示できますか?
それで、seteuid()コールの周りにいるLambCIで何をしましたか?オープンな問題以外のことはまだありませんか? –
sshでLambCIのgit-2.4.3.tarを使用すると、エラーメッセージ 'ssh:共有ライブラリの読み込み中にエラーが発生しました:libfipscheck.so.1:共有オブジェクトファイルを開くことができません:そのようなファイルまたはディレクトリはありません。私は 'LD_LIBRARY_PATH =/tmp/myDir/usr/lib64'も設定しなければならないと思います。 –