我的EC2服務器上有一個shell腳本,我想從AWS lambda函數中觸發相同的腳本。任何人都可以建議我如何訪問我的lambda函數中的文件。 lambda和EC2之間沒有連接問題。通過AWS連接到EC2服務器lambda
我用Putty gen生成了私鑰,並將其保存在s3存儲桶中,並使用相同的密鑰進行連接(使用此私鑰可以通過putty連接)。我有這樣一段代碼。
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客戶端運行shell腳本。但連接不會發生。獲取下面的錯誤。
{
"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和Lambda那裏訪問它? –
謝謝你的回覆。但我有一種情況。我的EC2上有一個jar文件,這個shell腳本執行那個jar。現在我想通過我的lambda函數運行這個shell腳本。它是完全基於AWS step功能的我的應用程序的一部分。所以我沒有看到在s3中保留shell腳本的任何選項,因爲它需要在EC2上運行jar文件。 – user3541321
爲什麼你不能在Lambda中運行它?您可以使用Lambda代碼包含jar文件。 –