簡體   English   中英

使用aws lambda將批處理數據從aws sqs存儲到aws s3

[英]store batch data from aws sqs to aws s3 using aws lambda

我正在嘗試從 aws lambda(nodejs 運行時)獲取 aws sqs 中的輪詢消息(iot 數據),並嘗試將其存儲在 aws s3 存儲桶中。 但是我在存儲它時遇到錯誤。

這是我的有效載荷:-

{ "device_name": "xxx", "temp":23.44, "humidity":33.44, "timestamp": epoch timestamp }

這是我的代碼:-


import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";
export const putInS3 = async (device_name,year,month,day) => {
        let bucketName = "my-bucket-name";
        const client = new S3Client({Bucket:bucketName,key:`${device_name}/${year}/${month}/${day}/`});
        try {
            const putObj = new PutObjectCommand(client);
            const sendRequest = await client.send(putObj);
            console.log(sendRequest);
        } catch (err) {
            if(err) console.log(err);
        }
}
export const handler = async(event) => {
    // TODO implement
    // console.log(s3Bucket);
    const date = new Date();
    const year = date.getFullYear();
    const month = date.getMonth() + 1;
    const day = date.getDate();
    event.Records.forEach(record => {
    let { body } = record;
    body = JSON.parse(body);
    let device_name = body.device_name;
    putInS3(device_name,year,month,day);
    console.log(body + "    ");
    });
};

上面的代碼給出了以下錯誤:

Error: No value provided for input HTTP label: Bucket.

任何幫助將不勝感激。 謝謝

您向 PutObjectCommand 提供的值不正確。 您正在傳遞客戶端,但您應該傳遞參數。

這應該工作:

const { S3Client, PutObjectCommand } = require('@aws-sdk/client-s3');

const s3Client = new S3Client({'region': 'us-east-1'});

export const putInS3 = async (device_name,year,month,day, body) => {
        let bucketName = "my-bucket-name";
        const parameters = {
         'Bucket': bucketName,
         'Key': `${device_name}/${year}/${month}/${day}/`,
         'Body': body
        }
        try {
            const putObj = new PutObjectCommand(parameters);
            const sendRequest = await s3Client.send(putObj);
            console.log(sendRequest);
        } catch (err) {
            if(err) console.log(err);
        }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM