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の大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^




コメント