質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

1473閲覧

Lambda上で生成したPDFをS3に保存したい

atmn3356

総合スコア157

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2018/05/02 00:51

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

解決出来ませんでしたので、
S3を使用しないこととしました。

投稿2018/05/15 02:38

atmn3356

総合スコア157

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

投稿2018/05/02 00:53

編集2018/05/02 01:02
Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

atmn3356

2018/05/02 00:55

Orlofsky様 ご回答ありがとうございます。 リンクして頂いた質問も私がした質問なのです。。。 一旦ベストアンサーとしましたが、結局解決しませんでした。
Orlofsky

2018/05/02 01:03

解決しないのにベストアンサーは出さない方が良いです。 ググった別URLを追記しました。
atmn3356

2018/05/02 01:08

Orlofsky様 URLの追記ありがとうございます。 拝見させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問