私はEC2サーバ上にシェルスクリプトを持っており、AWSラムダ機能から同じスクリプトを起動したいと思います。誰も私のラムダ関数でファイルにアクセスする方法を提案することができます。ラムダとEC2の間の接続に問題はありません。AWSラムダ経由でEC2サーバに接続
私は秘密鍵を生成してs3バケットに入れ、同じ鍵を使って接続します(パテを介して接続できるこの秘密鍵で)。このようなコードがあります。
var driver, ssh;
driver = require('node-ssh');
ssh = new driver();
exports.handle = function(error, ctx, cb) {
ssh = new driver({
host: 'EC2 public ip',
username: 'uname',
privateKey : 'url of s3/privatekey.ppk'
});
ssh.connect().then(function() {
console.log('connected')
},function(error) {
console.log(error);
});
}
まず、EC2サーバーに接続できるかどうかを確認してから、シェルスクリプトをsshクライアントで実行できます。しかし、接続は起こっていません。以下のエラーを取得してください。
{
"errorMessage": "config.host must be a valid string",
"errorType": "Error",
"stackTrace": [
"Object.<anonymous> (/var/task/node_modules/node-ssh/lib/helpers.js:15:13)",
"next (native)",
"step (/var/task/node_modules/node-ssh/lib/helpers.js:69:191)",
"/var/task/node_modules/node-ssh/lib/helpers.js:69:437",
"Object.<anonymous> (/var/task/node_modules/node-ssh/lib/helpers.js:69:99)",
"Object.normalizeConfig (/var/task/node_modules/node- ssh/lib/helpers.js:42:17)",
"/var/task/node_modules/node-ssh/lib/index.js:53:25",
"SSH.connect (/var/task/node_modules/node-ssh/lib/index.js:52:14)",
"exports.handle (/var/task/index.js:13:7)"
]
}
は、それはあなたがS3にファイルを持っていた場合は簡単でかつEC2とラムダからそこにアクセスしませんか? –
返信ありがとうTom。しかし、私には状況があります。自分のEC2にjarファイルがあり、このシェルスクリプトはそのjarファイルを実行します。今私はラムダ関数でこのシェルスクリプトを実行したいと思います。 AWSのステップ関数に完全に基づいている私のアプリケーションの一部です。だから、EC2上でjarファイルを実行する必要があるので、シェルスクリプトをs3に保存するオプションはありません。 – user3541321
ラムダですべてを動かすことができないのはなぜですか? jarファイルにLambdaコードを含めることができます。 –