2016-08-29 3 views
-1

В настоящее время я работаю над проектом, на котором у меня есть файл bat в EC2, и я хочу запустить этот файл через AWS-лямбда, чтобы этот файл мог передавать файлы данных S3. Пожалуйста, помогите мне с этим.
Я использую язык python.Запуск файла .bat с EC2 с использованием AWS lambda

+0

Что такое «bat-файл»? Вы говорите о файле '.bat' (пакетной) Windows? –

+0

да, я говорю об этом. Извините за неполный вопрос Я новичок в этом –

+0

Хорошо, ну, файл '.bat' работает в Windows, но Lambda не запускается под Windows, поэтому вам нужно будет написать скрипт для достижения той же цели, что и' .bat', но на языке, поддерживаемом в Lambda, например [Python] (http://docs.aws.amazon.com/lambda/latest/dg/python-programming-model.html), о котором вы упомянули. Надеюсь, вы находитесь за пределами этого момента, но неясно, о чем вы спрашиваете. «Пожалуйста, помогите мне с этим» не является достаточно конкретным вопросом, на который мы можем ответить здесь. Рассмотрите возможность редактирования своего вопроса для конкретной проблемы, связанной с программированием, которую вы испытываете. –

ответ

1

Вы можете выполнить это через AWS SSM service, что позволяет удаленно запускать команды на экземплярах EC2.

1

Вам нужно будет запустить сервер на EC2, который прослушивает, например, http звонки и запускает файл .bat для каждого запроса.

Самый простой скрипт для выполнения, что в nodejs будет выглядеть следующим образом:

const PORT = process.env.PORT || 3000; 
const BAT_PATH = 'c:\\path\\to\\file.bat'; 

let express = require('express'); 
let exec = require('child_process').exec; 
let app = express(); 

app.get('/exec', (req, res) => { 
    exec(BAT_PATH, (err, stdout, stderr) => { 
     if (err) { 
      console.error(err); 
     } 

     // print stdout of executing process 
     console.log(stdout); 

     // print stderr of executing process 
     console.log(stderr); 
    }); 
}); 

app.listen(PORT,() => { 
    console.log(`Server listening on *:${PORT}`); 
}); 

Если вы python парень, я уверен, что вы будете знать, как перевести этот код.

Что касается вашего lambda, то добавляет единственное послание http GET с запросом на ec2-ip:3000/exec.

Не забудьте открыть соответствующий порт в группе безопасности, к которой привязан ваш EC2.

Надеюсь, это ответит на ваш вопрос.

+0

Спасибо за ответ Пойдет с этим ... –

+0

, пожалуйста, не забудьте принять этот ответ, если он решил вашу проблему. – johni

Смежные вопросы