Node.js S3使用唯一的请求id触发Lambda函数两次

Node.js S3使用唯一的请求id触发Lambda函数两次,node.js,amazon-web-services,amazon-s3,aws-lambda,Node.js,Amazon Web Services,Amazon S3,Aws Lambda,每次我在s3 bucket中上传一个文件时,我都使用s3触发lambda函数,我已经对它进行了测试,它可以正常工作,但我注意到s3使用唯一的请求id两次触发我的lambda函数,即使我删除了整个代码,只添加了console.info('something')它仍然会触发两次,很明显,如果出现错误,lambda不会重试。我还将重试设置为0 第一个请求id:awsRequestId:'9f73e49f-6cc7-454e-a89f-7d88122a7166' 第二个请求id:awsRequestId

每次我在s3 bucket中上传一个文件时,我都使用s3触发lambda函数,我已经对它进行了测试,它可以正常工作,但我注意到s3使用唯一的请求id两次触发我的lambda函数,即使我删除了整个代码,只添加了console.info('something')它仍然会触发两次,很明显,如果出现错误,lambda不会重试。我还将重试设置为0

第一个请求id:awsRequestId:'9f73e49f-6cc7-454e-a89f-7d88122a7166' 第二个请求id:awsRequestId:'1c8572d5-61ee-4b0b-93d9-4f8a3dcd28bf' 这是我的密码

const AWS = require('aws-sdk');
const s3 = new AWS.S3({
region: process.env.region,
accessKeyId: process.env.accessKeyId,
    secretAccessKey: process.env.secretAccessKey
});
const axios = require('axios');
const csvtojson = require('csvtojson');
const _ = require('lodash');

exports.handler = async (event, context) => {
    const { normalizeAndHashData } = require('./hash');
    const params = {Bucket: 'myBucket', 'myKey'}
    const data = await s3.getObject(params).promise();
    const eventsJson = await csvtojson().fromString(data.Body.toString());
    
    
    const result1 = await axios.post(`https://myurl`, eventJson);
    if (result1) {
        const sampleDataToUpload = {id: 1, name: 'test'}
        const result2 = await axios.post(`https://myurl2`, sampleDataToUpload); 
   
    }
    return context.succeed()
};

你的S3规则是什么?也许你有重复的文件?@Marcin我已经检查过了,没有重复的文件好吧,事情是这样的,我试着直接上传文件到s3,它只触发了一次,但是当我使用ftp服务器安装s3存储桶时,它触发了两次哦!您应该避免为生产系统“安装”AmazonS3存储桶。用于使bucket显示为驱动器的软件必须执行一些奇怪的操作才能使其正常工作,并可能导致大规模问题。最好的选择是通过网页上载或通过API调用(或AWS CLI)直接传输到Amazon S3。如果需要使用类似FTP的服务器,请参阅。