[英]Save a JSON from AWS Lambda to AWS S3 with node.js
我試圖將JSON文件從AWS Lambda保存到S3。 (更精確地說:我想在S3存儲桶'gpiocontroll-XYZ'
創建一個包含“數據”的新文件'supertest.json'
'gpiocontroll-XYZ'
)
Lambda函數如下所示:
'use strict'
const aws = require('aws-sdk');
const s3 = new aws.S3();
//const fs = require('fs');
function saveJSONtoS3(data){
console.log('SAVEJSON', data);
var params = {
Bucket: 'gpiocontroll-XYZ', // your bucket name,
Key: 'test.txt', // path to the object you're looking for
Body: data
}
s3.putObject(params, function(err, data) {
// Handle any error and exit
if (err)
console.log('ERROR', err);
else {
console.log('UPLOADED SUCCESS');
}
console.log('INSIDE FUNCTION');
});
console.log('END')
}
module.exports = {
saveJSONtoS3 : saveJSONtoS3
}
Lambda上的日志如下所示:
2017-12-27T20:04:29.382Z 255d436d-eb41-11e7-b237-1190c4f33d2d SAVEJSON {"table":[{"pin":"1","state":"aus"}]}
2017-12-27T20:04:29.402Z 255d436d-eb41-11e7-b237-1190c4f33d2d END
END RequestId: 255d436d-eb41-11e7-b237-1190c4f33d2d
REPORT RequestId: 255d436d-eb41-11e7-b237-1190c4f33d2d Duration: 362.29 ms Billed Duration: 400 ms Memory Size: 128 MB Max Memory Used: 43 MB
所以看起來一切都很好,但是s3.putObject函數只是不會被觸發。 Lambda和S3都在同一區域。 S3對IAM用戶公開。 我是否需要以某種方式登錄Lambda函數?
非常感謝!
正如@dashmug所說,您的示例不是 Lambda函數。
除非在功能配置中指定,否則文件中的某個位置必須具有exports.handler
。
所有Lambda函數exports.handler
帶有( event, context, callback )
參數的exports.handler
開頭。 其中包括event
或操作的數據,一些其他context
以及成功/失敗callback
。
這是您要尋找的:
更新:根據@dashmug的建議,將S3.putObject
Promise包裝函數更改為S3.putObject().promise()
。
需要適用於JavaScript的AWS開發工具包(v2.3.0-2016年3月31日或更高版本)
'use strict';
const
AWS = require( 'aws-sdk' ),
S3 = new AWS.S3();
exports.handler = ( event, context, callback ) => {
console.log( `FUNCTION STARTED: ${new Date()}` );
S3.putObject( {
Bucket: 'gpiocontroll-XYZ',
Key: 'test.txt',
Body: 'stuff'
} )
.promise()
.then( () => console.log( 'UPLOAD SUCCESS' ) )
.then( () => callback( null, 'MISSION SUCCESS' ) )
.catch( e => {
console.error( 'ERROR', e );
callback( e );
} );
};
注意:您必須為Lambda函數IAM授予您嘗試訪問的S3存儲桶的權限。 在上述情況下,您的IAM角色應如下所示:
{
"Effect": "Allow",
"Action": [ "s3:PutObject" ],
"Resource": [
"arn:aws:s3:::gpiocontroll-XYZ/*"
]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.