2017-03-19 9 views
0

ローカルマシン(mac os x)でレポートを生成し、それをWebプロジェクトフォルダ内のフォルダに保存するアプリケーションを作成しました。アプリをデプロイすると、このフォルダも公開されるはずです。確かに、誰もこのフォルダにアクセスする必要はありません。レポートを生成するためのコードをローカルマシンで正常に実行すると、弾力のあるbeanstalkにハングアップするようです。弾力のあるビーンストーン環境でこの作業をするためには、私は何をする必要がありますか?Elastic Beanstalk:node.jsプロジェクトフォルダ内のフォルダにファイルを書き込む方法

簡単に言えば、私はphantomjsを使用して、動的Webページをpdfファイルに変換し、関連する適切な関係者に電子メールで送信しています。ファイルを生成するコードは次のとおりです。

page.viewportSize = { width: 2000, height: 800 }; 
//page.paperSize = { format: 'Letter', orientation: 'landscape', margin: '1cm' }; 
page.paperSize = { width: '1280px', height: '800px', margin: '0px' }; 
page.settings.localToRemoteUrlAccessEnabled = true; 
page.settings.loadImages = true; 
page.settings.javascriptEnabled = true; 


page.open("http://example.com/report/" + args[1], function start(status) { 
    if (status === 'fail'){ 
     phantom.exit(1); 
     return; 
    } 

//page.render('/dev/stdout', { format: 'pdf' }); 
    page.render(fs.workingDirectory + '/tmp/' + args[3], { format: 'pdf' }); 
    phantom.exit(); 
    return; 
}); 

答えて

1

ElasticBeanstalkアプリケーションがデプロイされるディレクトリは、デプロイメントが完了した後は読み取り専用にする必要があります。実行時にファイルを書き込む必要がある場合は、/tmpのような書き込み可能なディレクトリを使用する必要があります。

+0

このフォルダを追加して書き込み可能にすることはできますか? – user1790300

+0

これを行うには、リモートデスクトップをマシンにインストールする必要がありますか? – user1790300

+0

EBサーバがlinuxを実行している場合、デフォルトで '/ tmp'は自動的に利用可能で、world-writeableになります。しかし、おそらくディレクトリ名をハードコーディングするのではなく、 'os.tmpdir()'のようなNodeメソッドを使うほうが意味があります。 – Brian

関連する問題