Итак, если вы новичок на Lambda, сначала вам нужно знать, что вы можете поместить свой собственный код непосредственно в командной строке функции Lambda или вы можете загрузите ZIP-файл, содержащий вашу функцию. Второй - тот, который мы будем использовать для получения копии с s3 на ваш EC2.
¿Почему мы загрузим файл .zip с помощью функции? Потому что таким образом мы можем установить все зависимости, которые нам нужны и чего хотят.
Теперь, чтобы это стало возможным, прежде всего, ваша лямбда-функция должна подключаться к вашему экземпляру EC2 через SSH. После этого вы можете выполнить некоторые командные строки, чтобы загрузить файл S3, который вы хотите.
Так поместить этот код в лямбда-функции (внутри exports.handler ....) и установить зависимость простой SSH с «НПМ установить простой-SSH»
// imagine that the input variable is the JSON sended from the client.
//input = {
//s3_file_path : 'folder/folder1/file_name',
//bucket : 'your-bucket',
//};
// Use this library to connect easly with your EC2 instance.
var SSH = require('simple-ssh');
var fs = require('fs');
// This is the full S3 URL object that you need to download the file.
var s3_file_url = 'https://' + input.bucket + '.s3.amazonaws.com/' + input.s3_file_path;
/**************************************************/
/* SSH */
/**************************************************/
var ssh = new SSH({
host: 'YOUR-EC2-PUBLIC-IP',
user: 'USERNAME',
passphrase: 'YOUR PASSPHRASE', // If you have one
key : fs.readFileSync("../credentials/credential.pem") // The credential that you need to connect to your EC2 instance through SSH
});
// wget will download the file from the URL we passed
ssh.exec('wget ' + s3_file_url).start();
// Also, if you wanna download the file to another folder, just do another exec behind to enter to the folder you want.
ssh.exec('cd /folder/folder1/folder2').exec('wget ' + s3_file_url).start();
Для этого, чтобы работать, вы должны убедиться, что ваша машина EC2 имеет разрешенные разрешения, чтобы ее можно было ввести через SSH.
Не могли бы вы рассказать о том, как работает ваш скрипт? Подписываться через http? – einSelbst
Я подписался на тему SNS, используя AWS SDK, а затем загрузите файл. – kixorz
Спасибо за ответ. Я до сих пор не понимаю, какой протокол можно использовать в подписке. Можно создать, например. подписку на электронную почту для некоторого пользователя через SDK, но это не будет уведомлять экземпляр EC2, когда SNS отправляет новое уведомление. http://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html – einSelbst