AWS Lambdaで作成した/tmp/ディレクトリのファイルをS3にファイルを保存する
Lambdaで/tmp配下に保存したファイルをS3にputしてみます。Lambda処理内であれば/tmp配下が使えます。
const aws = require("aws-sdk"); const fs = require('fs'); const s3 = new aws.S3({'region':'us-east-2'}); exports.handler = (event, context, callback) => { const path = '/tmp/' + (new Date()).getTime() + '.txt'; // タイムスタンプ.txt fs.writeFileSync(path, "aaaa", 'utf-8'); // /tmp配下に保存 const config = { Bucket: "my-test-cc", Key: "sample.txt", ContentType: "text/comma-separated-values; charset=utf-8" // CSVのUTF-8でS3へ保存する // ACL: 'public-read-write', // コメントアウトしてもputされる Body: fs.readFileSync(path, 'utf-8') // /tmp配下のファイルから読み取り }; s3.putObject(config, function(err, data) { if (err) { console.log(err); context.fail('upload failed.'); } context.succeed('upload success.'); }); };
putObjectメソッドのコールバック関数がないと作成されずに処理が終わってしまうので、コールバック関数は必須です。
またIAMでS3にPUTする権限が必要です。(試すだけならFullAccessでも良いと思います)
ファイルが作成されていることが確認できます。
Content-Typeの確認方法
S3へ保存する際にメタデータを指定しました。これはS3のファイルのプロパティから確認できます。
ファイルをクリックし、「プロパティ」タブをクリックします。
次に「メタデータ」をクリックします。
ファイルアップロード時のContent-Typeが指定されているのが確認できます。
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント