2016-12-14 18 views
1

AWS Lambdaで再生するNode.jsで再生します。私はラムダ関数を作成し、それをS3 eventで設定しました。 S3にアップロードされたzipファイルを解凍し、抽出したファイルを同じバケットの別のフォルダにアップロードします。AWSラムダ機能を持つS3バケットからzipファイルをNode.jsで抽出し、別のバケットにアップロード

私は次のコードからバケットとファイル情報を取得していますが、その後はどのように抽出してs3にアップロードするのかわかりません。

すべての提案やコードが役立ちます。

'use strict'; 

console.log('Loading function to get all latest object from S3 service'); 

const aws = require('aws-sdk'); 

const s3 = new aws.S3({ apiVersion: '2006-03-01' }); 


exports.handler = (event, context, callback) => { 
    console.log('Received event:', JSON.stringify(event, null, 2)); 

    // Get the object from the event and show its content type 
    const bucket = event.Records[0].s3.bucket.name; 
    const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' ')); 
    const params = { 
     Bucket: bucket, 
     Key: key, 
    }; 
    s3.getObject(params, (err, data) => { 
     if (err) { 
      console.log(err); 
      const message = `Error getting object ${key} from bucket ${bucket}. Make sure they exist and your bucket is in the same region as this function.`; 
      console.log(message); 
      callback(message); 
     } else { 
      console.log('CONTENT TYPE:', data.ContentType); 
      callback(null, data); 
     } 
    }); 
}; 

答えて

1

zlibを使用して、s3から取得したバッファを解凍できます。

s3.getObject(params, (err, data) => { 
    if (err) { 
     console.log(err); 
     const message = `Error getting object ${key} from bucket ${bucket}. Make sure they exist and your bucket is in the same region as this function.`; 
     console.log(message); 
     callback(message); 
    } else { 
     zlib.gunzip(data.Body, function (err, result) { 
      if (err) { 
       console.log(err); 
      } else { 
       var extractedData = result; 
       s3.putObject({ 
       Bucket: "bucketName", 
       Key: "filename", 
       Body: extractedData, 
       ContentType: 'content-type' 
       }, function (err) { 
        console.log('uploaded file: ' + err); 
       }); 
      } 
     }); 
    } 
}); 

私は上記の機能が役立つと思います。

+0

'gunzip'で' Error:incorrect header check'を取得しました – abdulbarik

+0

このエラーは、データが圧縮されていないとスローされます。 –

+1

このエラーを解決するにはどうすればよいですか?あなたはあなたの答えを更新できますか? – abdulbarik