AWS Kinesis Firehose没有响应Lambda

时间:2020-11-05 05:19:37

标签: node.js amazon-web-services aws-lambda amazon-kinesis amazon-kinesis-firehose

这是Lambda代码:

const AWS = require('aws-sdk');
var firehose = new AWS.Firehose({ region: 'ap-southeast-2' });

exports.handler = async (event, context) => {

var params = {
    DeliveryStreamName: 'TestStream', 
    Record: {
        Data: 'test data'
    }
};
console.log('params', params);

firehose.putRecord(params, function (err, data) {
    if (err) console.log(err, err.stack); // an error occurred
    else console.log('Firehose Successful',  data);           // successful response
});

}

政策是:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "firehose:DeleteDeliveryStream",
            "firehose:PutRecord",
            "firehose:PutRecordBatch",
            "firehose:UpdateDestination"
        ],
        "Resource": [
            "arn:aws:firehose:ap-southeast-2:xxxxxxxxxxxxx:deliverystream/TestStream"
        ]
    }
]

}

我实际上将其他所有内容都删除了。我在cloudwatch中看到的响应是:

2020-11-05T18:08:17.564+13:00   START RequestId: 3bed96b1-54af-4b08-bc06-be3732bba9ea Version: $LATEST

2020-11-05T18:08:17.568+13:00   2020-11-05T05:08:17.567Z 3bed96b1-54af-4b08-bc06-be3732bba9ea INFO params { DeliveryStreamName: 'TestStream', Record: { Data: <Buffer 74 65 73 74 20 64 61 74 61> } }

2020-11-05T18:08:17.621+13:00   END RequestId: 3bed96b1-54af-4b08-bc06-be3732bba9ea

2020-11-05T18:08:17.621+13:00   REPORT RequestId: 3bed96b1-54af-4b08-bc06-be3732bba9ea Duration: 57.38 ms Billed Duration: 100 ms Memory Size: 960 MB Max Memory Used: 85 MB Init Duration: 399.22 ms

因此,执行到达了firehose行,并直接越过了它们,什么也没做...

1 个答案:

答案 0 :(得分:1)

由于您使用的是async handler,所以我认为问题在于您的功能在流水线代码有机会运行之前就已完成。

纠正此问题的一种方法是使用AWS docs中所示的 if(isset($_REQUEST['newResident_hidden'])){ $data = array(); $res_lname = $_REQUEST['res_lname']; $res_fname = $_REQUEST['res_fname']; $res_mname = $_REQUEST['res_mname']; $res_age = $_REQUEST['res_age']; $res_alias = $_REQUEST['res_alias']; $res_purok = $_REQUEST['res_purok']; $res_pob = $_REQUEST['res_pob']; $res_bdate = $_REQUEST['res_bdate']; $res_civil = $_REQUEST['res_civil']; $res_gender = $_REQUEST['res_gender']; $res_voter = $_REQUEST['res_voter']; $res_blood = $_REQUEST['res_blood']; $res_empstat = $_REQUEST['res_empstat']; $res_prof = $_REQUEST['res_prof']; $res_pwd = $_REQUEST['res_pwd']; $res_ofw = $_REQUEST['res_ofw']; $res_solo = $_REQUEST['res_solo']; $res_house = $_REQUEST['res_house']; $res_fam = $_REQUEST['res_fam']; $res_contact = $_REQUEST['res_contact']; $res_email = $_REQUEST['res_email']; $res_vac = $_REQUEST['res_vac']; $res_dead = $_REQUEST['res_dead']; function generateRandomString($length = 5) { $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $charactersLength = strlen($characters); $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, $charactersLength - 1)]; } return $randomString; } $file_name = generateRandomString()."-".$_FILES['file']['name']; $file_type = $_FILES['file']['type']; $file_size = $_FILES['file']['size']; $file_loc = $_FILES['file']['tmp_name']; $file_store = "userimg/".$file_name; move_uploaded_file($file_loc, $file_store); $resident ="INSERT into tbl_resident(res_lname, res_fname, res_mname, res_age, res_alias, res_purok, res_pob, res_bdate, res_civil, res_gender, res_voter, res_blood, res_empstat, res_prof, res_pwd, res_ofw, res_solo, res_house, res_fam, res_contact, res_email, res_vac, res_dead, res_image) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; $residentstmt = $con->prepare($resident); $residentstmt->bind_param("ssssssssssssssssssssssss", $res_lname, $res_fname, $res_mname, $res_age, $res_alias, $res_purok, $res_pob, $res_bdate, $res_civil, $res_gender, $res_voter, $res_blood, $res_empstat, $res_prof, $res_pwd, $res_ofw, $res_solo, $res_house, $res_fam, $res_contact, $res_email, $res_vac, $res_dead, $file_name); $residentstmt->execute(); $action = "Test New Resident"; $date= date("Y-m-d"); $time= date("h:i:sa"); $sqlinsert = "INSERT INTO tbl_logs (logs_name, logs_action, logs_position, logs_username, logs_date, logs_time) VALUES (?, ?, ?, ?, ?, ?)"; $stmtinsert = $con->prepare($sqlinsert); $stmtinsert->bind_param("ssssss", $_SESSION['user_fullname'], $action, $_SESSION['user_position'], $_SESSION['user_username'], $date, $time); $stmtinsert->execute(); if(! $resident) { $data['status'] = 0; }else{ $data['status'] = 1; } echo json_encode($data); } 。例如:

Promise

以上更改仅是示例性的,因此可能仍需要进行一些调整。