大佬教程收集整理的这篇文章主要介绍了node.js – 在现有S3对象上运行S3-put-triggered Lambda函数?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
要清楚 – 我想在每个现有对象上运行一次.触发器已经在为新对象工作,我只需要在创建lambda函数之前插入的对象上运行它.
它将遍历目标S3存储桶中的每个文件,对于每个文件,它将针对它模拟put操作执行所需的lambda函数.
var TARGET_BUCKET="my-bucket-goes-here"; var TARGET_LAMBDA_Function_name="TestFunct"; var S3_PUT_SIMULATION_PARAMS={ "Records": [ { "eventVersion": "2.0","eventTime": "1970-01-01T00:00:00.000Z","requestParameters": { "sourceIpaddress": "127.0.0.1" },"s3": { "configurationId": "TESTConfigRule","object": { "eTag": "0123456789abcdef0123456789abcdef","sequencer": "0A1B2C3D4E5F678901","key": "HappyFace.jpg","size": 1024 },"bucket": { "arn": "arn:aws:s3:::mybucket","name": "sourcebucket","ownerIdentity": { "principalId": "EXAMPLE" } },"s3scheR_149_11845@aVersion": "1.0" },"responseElements": { "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH","x-amz-request-id": "EXAMPLE123456789" },"awsRegion": "us-east-1","eventName": "ObjectCreated:Put","userIdentity": { "principalId": "EXAMPLE" },"eventsource": "aws:s3" } ] }; var aws = require('aws-sdk'); var s3 = new aws.S3(); var lambda = new aws.Lambda(); exports.handler = (event,context,callBACk) => { retrieveS3BucketContents(TARGET_BUCKET,function(s3Objects){ simulateS3PutOperation(TARGET_BUCKET,s3Objects,simulateS3PutOperation,function(){ console.log("complete."); }); }); }; function retrieveS3BucketContents(bucket,callBACk){ s3.listObjectsV2({ Bucket: TARGET_BUCKET },function(err,data) { callBACk(data.Contents); }); } function simulateS3PutOperation(bucket,s3ObjectStack,callBACk,callBACkEmpty){ var params = { FunctionName: TARGET_LAMBDA_Function_name,Payload: "" }; if(s3ObjectStack.length > 0){ var s3Obj = s3ObjectStack.pop(); var p = S3_PUT_SIMULATION_PARAMS; p.Records[0].s3.bucket.name = bucket; p.Records[0].s3.object.key = s3Obj.Key; params.Payload = JSON.Stringify(p,null,2); lambda.invoke(params,data) { if (err) console.log(err,err.stack); // an error occurred else{ callBACk(bucket,callBACkEmpty); } }); } else{ callBACkEmpty(); } }
以下是lambda查询执行此方法所需的完整策略,它允许R / W到CloudWatch日志和ListObject访问S3.您需要在看到MY-BUCKET-GOES-HERE的地方填写您的水桶详细信息
{ "Version": "2012-10-17","Statement": [ { "Sid": "Stmt1477382207000","Effect": "Allow","Action": [ "s3:ListBucket" ],"resource": [ "arn:aws:s3:::MY-BUCKET-GOES-HERE/*" ] },{ "Effect": "Allow","Action": [ "logs:CreateLogGroup","logs:CreateLogStream","logs:PutLogEvents" ],"resource": "arn:aws:logs:*:*:*" } ] }
以上是大佬教程为你收集整理的node.js – 在现有S3对象上运行S3-put-triggered Lambda函数?全部内容,希望文章能够帮你解决node.js – 在现有S3对象上运行S3-put-triggered Lambda函数?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。