aws-cli
является пакетом python и не устанавливается в среде Lambda.
Чтобы проверить мое утверждение, вы можете набрать команды оболочки здесь http://www.lambdashell.com/ и проверить, что установлено по умолчанию в вашей среде выполнения, или проверить официальную документацию .
Ваш код выше не возвращает никакого вывода, потому что попытка выполнить aws
возвращает ENOENT
, то есть файл недоступен.
Если вы хотите запустить aws
внутри своей лямбда-функции, вы можете выполнить следующие инструкции: Вызвать aws-cli из AWS Lambda
Однако я бы спросил , почему [ 1115] ты хочешь сделать это? AWS-SDK включен в локальную среду выполнения , и вы можете вызывать любой API-интерфейс AWS непосредственно из своего кода без необходимости порождать процесс и работать с stdin / stdout. Я настоятельно рекомендую не создавать aws
cli из вашего кода, а вместо этого использовать SDK.
Но, если вы хотите запустить процесс из Lambda и захватить stdout и stderr, вот как я это делаю.
'use strict';
const childProcess = require('child_process');
/*
* Handle the chile process and returns a Promise
* that resoved when process finishes executing
*
* The Promise resolves an exit_code
*/
function handleProcess(process) {
return new Promise((resolve, reject) => {
process.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
console.log('stdout');
});
process.stderr.on('data', (data) => {
console.log(`stderr: ${data}`);
});
process.on('close', (code) => {
console.log(`child process exited with code ${code}`);
if (code === 0) {
resolve(code);
} else {
reject(code);
}
});
});
}
exports.handler = (event, context, callback) => {
// console.log(JSON.stringify(process.env, null, 2));
// console.log(JSON.stringify(event, null, 2));
return handleProcess(childProcess.spawn('ls', ['--version']))
.then((exit_code) => {
console.log(`exit_code = ${exit_code}`)
let response = {
statusCode: (0 == exit_code) ? 200 : 500,
body: exit_code
};
callback(null, response);
})
.catch((error) => {
console.error(error);
let response = {
statusCode: 500,
body: error
};
callback(null, response);
});
}
** Обновление ** Этот ответ очень старый. Используйте XCode для создания архивов .ipa сейчас. (Продукт> Архив)
С Xcode 4 теперь есть более простой способ:
В строке меню перейдите в Product> Archive.
После этого организатор откроет вкладку Архивы , и вы сможете сохранить IPA с помощью Поделиться… Кнопка .
Если пункт меню «Архив» отключен, убедитесь, что у вас установлена схема для устройства iOS , а не для iPhone Simulator . Вам не обязательно подключать устройство.
Я также написал скрипт для этого из командной строки: xcodearchive . Он работает аналогично xcodebuild, но генерирует IPA.
Выполните следующие шаги
Загрузите файл приложения в виде почтового индекса на www.diawi.com
Откройте URL-адрес diawi в своем веб-браузер.