在我的nodejs代码中,我使用名为node-cmd的模块来使用amazon cloudsearch工具包中的命令cs-import-documents。
在我的本地计算机上,它正常工作,我能够转换我的文件,然后在cloudsearch上上传json文件。我在Windows 10上使用webstrom。 但我想让它在我的ec2实例中工作,所以我在aws上创建了一个带有弹性beanstalk的nodejs实例ec2,我在ssh中访问它以尝试执行我的代码。
是不是在ec2或命令上工作的模块? 也许有另一种更好的方法来做到这一点? 当我在命令行中使用它时,cs-import-command正在工作。
这是我的代码:
function commandToJson(dest, fileName){
var res = fileName.replace("&", "^&");
var resJsonName = utils.basename(res);
var commande = 'cs-import-documents --source "' + dest + '\\' + res + '" --output "' + dest + '\\' + resJsonName + '"';
console.log(commande);
cmd.get(
commande,
function(data, err, stderr){
if (!err) {
console.log('\n --------------retour console---------------- : \n\n',data);
var jsonName = utils.basename(fileName);
uploadToCloudsearch(relTempPath + jsonName + '1.json');
} else {
console.log('error', err)
}
}
);
}
这是我得到的错误:
错误{错误:命令失败:/./cloudsearch/cloud-search-tools-v2-2.0.1.0-2014.10.27/bin/cs-import-documents --source" TEMP / Questions and Answers在CSDR" - 输出" TEMP /有关CSDR的问题和解答"
at ChildProcess.exithandler (child_process.js:206:12)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:877:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
杀死:假, 代码:1, signal:null, cmd:' /./ cloudsearch / cloud-search-tools-v2-2.0.1.0-2014.10.27 / bin / cs-import-documents --source" TEMP / CSDR上的问题与解答&#34 ; - 输出" TEMP /有关CSDR的问题和解答"' }
答案 0 :(得分:0)
我设法解决它。 我需要为root profil设置变量,然后在root中运行我的代码。
要对其进行硬编码,因此每次我建议将其放入.bashrc或.bash_profile中,以便为每个相应的用户(Root,ec2-user等)输入导出。这些文件将位于/ home / ec2-user /或/ root /中。只需输入“env”即可看到您当前设置和激活的内容。根据您的设置,您可以将其放入其中任何一个中。 像:
export CS_HOME=/usr/local/aws/bin/cloud-search-tools-v2-2.0.1.0-2014.10.27
export PATH=$PATH:$CS_HOME/bin
export AWS_CREDENTIAL_FILE=/home/ec2-user/.aws/creds
export CS_ENDPOINT=cloudsearch.us-east-1.amazonaws.com
What's the difference between .bashrc, .bash_profile, and .environment?