AWS Lambdaで作成した/tmp/ディレクトリのファイルをS3にファイルを保存する

AWS Lambdaで作成した/tmp/ディレクトリのファイルをS3にファイルを保存する

LambdaでS3にputObjectすることによってファイルを作成します。

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';
fs.writeFileSync(path, "aaaa", 'utf-8');
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')
};
s3.putObject(config, function(err, data) {
if (err) {
console.log(err);
context.fail('upload failed.');
}
context.succeed('upload success.');
});
};

view raw
gistfile1.txt
hosted with ❤ by GitHub

putObjectメソッドのコールバック関数がないと作成されずに処理が終わってしまうので、コールバック関数は必須です。

またIAMでS3にPUTする権限が必要です。(試すだけならFullAccessでも良いと思います)

ファイルが作成されていることが確認できます。

AWS Lambdaで作成した/tmp/ディレクトリのファイルをS3にファイルを保存する

Content-Typeの確認方法

S3へ保存する際にメタデータを指定しました。これはS3のファイルのプロパティから確認できます。

ファイルをクリックし、「プロパティ」タブをクリックします。

AWS Lambdaで作成した/tmp/ディレクトリのファイルをS3にファイルを保存する

次に「メタデータ」をクリックします。

AWS Lambdaで作成した/tmp/ディレクトリのファイルをS3にファイルを保存する

ファイルアップロード時のContent-Typeが指定されているのが確認できます。

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA