2016-12-01 12 views
1

私はbashスクリプトを実行しているノードラムダ関数を持っています。ノードAWSラムダ関数からbashスクリプトを実行

'use strict'; 

const exec = require('child_process').exec; 

exports.handler = (event, context, callback) => { 
    const message = event.message; 
    const child = exec('./bs.sh ' + message, function(err, stdout, stderr) { 
    console.log(stdout); 
    console.log(stderr); 
    }); 
}; 

私がこれを実行すると、/bin/sh: ./bs.sh: Permission deniedが得られます。私は機能を圧縮する前にchmod 777 bs.shと権限を変更しようとしましたが、それも動作しませんでした。ラムダの限界か私のアプローチのエラーですか?

+0

:あなたは誤ると、コールコールバックをチェックshoudあなたが関数コードの先頭に次のものが含まれていることを確認してください。関数(err、stdout、stderr){ if(err){ コールバック(err); } else { console.log(stdout); console.log(stderr); callback(); } }); – hellomichibye

+0

http://stackoverflow.com/questions/34629574/can-bash-script-be-written-inside-a-aws-lambda-function –

答えて

1

あなたは特に

https://aws.amazon.com/blogs/compute/running-executables-in-aws-lambda/

で、このビットを見たいでしょう:あなた自身の実行ファイルを含む

は簡単です。アップロードしたZIPファイルにそれらをパッケージ化し、Node.jsや以前に起動した他のプロセスから呼び出すときに、作成したZIPファイル内の相対パスを含めて参照してください。

ところで
process.env['PATH'] = process.env['PATH'] + ':' + process.env['LAMBDA_TASK_ROOT'] 
+0

実行可能なバイナリでこれを試しましたが、パーミッションが拒否されます – king

関連する問題