2017-06-09 4 views
0

私はs3バケットのアップロード画像のサイズを変更するためにラムダ関数を使っています。次のコードではほとんど問題が発生していません。 "const match "と" originalKey "私はいくつかの組み合わせを試しました。誰も私を助けませんでした。ラムダ関数の画像を一致させるには

'use strict'; 
const AWS = require('aws-sdk'); 
const S3 = new AWS.S3({ 
accessKeyId: "xxxxxxxxxxxx", 
secretAccessKey: "yyyyyyyyyyy", 
region: "us-east-1", 
signatureVersion: 'v4', 
}); 

const Sharp = require('sharp'); 
const BUCKET = "patientimg"; 
const URL = "https://s3.ap-south-1.amazonaws.com"; 
exports.handler = function(event, context, callback) { 
const key = event.Records[0].s3.object.key; 
const match = key.match(/(\d+)x(\d+)\/(.*)/); 
const width =10; 
const height =10; 
const originalKey ="ImageName"; 

S3.getObject({Bucket: BUCKET, Key: originalKey}).promise() 
.then(data => Sharp(data.Body) 
.resize(width, height) 
    .toFormat('png') 
    .toBuffer() 
) 
.then(buffer => S3.putObject({ 
    Body: buffer, 
    Bucket: BUCKET, 
    ContentType: "image/png", 
     Key: key, 
     }).promise() 
    ) 
.then(() => callback(null, { 
    statusCode: '301', 
    headers: {'location': "${URL}/${key}"}, 
     body: "", 
    }) 
) 
.catch(err => callback(err)) 
} 

出力:

エラーが一致[1]、一致を発生しました[2]と、予め[3]

おかげと一致.....

答えて

0

このコードは想定していあなたのオブジェ場合

\d+ 1 or more digits - match[1] 
x a literal x 
\d+ 1 or more digits - match[2] 
\/ a literal slash 
.* zero or more of any character - match[3] 

:アップロードされたオブジェクトのキーは、意味特定のパターン/(\d+)x(\d+)\/(.*)/を、一致しましたctキーがこのパターンと一致しない場合、コードは破損します。

+0

errorMessage ":"指定されたキーは存在しません...高さ、幅、元のキーを明示的にした後です。上記のコードのように –

+0

const match = key.match(/(\ d +)x(\ d +)\ /(。*)/);常にnullを返します –

+0

誰がこのコードを書いたのですか? –

関連する問題