前提・実現したいこと
Node.jsを用い、AWS Lambda上でPDFを作成し、
AWS S3に保存したいと考えています。
発生している問題・エラーメッセージ
下記のようにコードを記述し、
PDFが作成できることは確認できたのですが、
作成したPDFをS3に送ることが出来ません。
S3に保存まではされますが、
保存されたPDFを見ると0byteになっている状況です。
(破損されていて開けないというエラーが出ます。)
きちんと保存される方法や、ソースの誤り、
または当てはまりそうな記事等ありましたらご教示お願い致します。
該当のソースコード
Node.js
1//---------------------------------------------------------------- 2// 画像にテキストを書き込んでPDFとして出力 3//---------------------------------------------------------------- 4// モジュールの読み込み 5var PDFDocument = require('pdfkit'); 6var fs = require('fs'); 7// ドキュメントを作る 8doc = new PDFDocument; 9var AWS = require('aws-sdk'); 10var s3 = new AWS.S3(); 11const path = '/tmp/' + (new Date()).getTime() + '.pdf'; 12 13exports.handler = function(event, context) { 14 15 // 出力ファイルを設定する 16 doc.pipe(fs.createWriteStream(path)); 17 18 // フォントを埋め込む 19 doc.font('ipaexm.ttf'); 20 21 var pw = doc.page.width; 22 var ph = doc.page.height; 23 24 // 画像を埋め込む 25 doc.image('template.png', 0, 0, {fit: [pw, ph]}); 26 27 // 文字を表示する 28 doc.fontSize(20).text("テスト文章", 240, 78); 29 doc.addPage(); 30 31 // 出力を終了する 32 doc.end(); 33 34 var nakami = fs.readFileSync(path); 35 36 var params = { 37 Bucket: "バケット名", 38 Key: 'output.pdf', 39 ContentType: 'application/pdf', 40 Body: nakami 41 }; 42 43 s3.putObject(params, function(err, data) { 44 if(err) { 45 console.log('error : ', err); 46 } 47 }); 48}; 49
AWS設定
1・IAMポリシー 2 AmazonS3FullAccess 3・API Gateway 4 メソッド: POST 5 リソースパス: /upload/{key} 6 認証: NONE 7・S3 8 アクセス権限:読込・書込許可あり
他に記載すべき情報がありましたら記載致します。
本当に困っているため、お力添えいただけると幸いです。
試したこと
ローカル環境でPDFが作成されることは確認済みです。
各パラメータやファイルの読み込み方等変更してみましたが、
同じく0byteにて出力されます。
補足情報(FW/ツールのバージョンなど)
OS:windows10 64bit
Node.js:v8.10.0
pdfkit:version 0.8.3
pdf-image:version 1.0.5
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。