const AWS = require('aws-sdk');
const kinesis = new AWS.Kinesis();
exports.handler = async (event) => {
const streamName = 'my-stream';
const partitionKey = 'foo';
const data = JSON.stringify(event);
const params = {
Data: data,
PartitionKey: partitionKey,
StreamName: streamName
};
try {
await kinesis.putRecord(params).promise();
return {
statusCode: 200,
body: JSON.stringify('Data sent to Kinesis stream')
};
} catch (e) {
console.log(e);
return {
statusCode: 500,
body: JSON.stringify('Error sending data to Kinesis stream')
};
}
};
此代码将从 API Gateway 接收的事件转换为 JSON 格式,并将其发送到预先创建的 Kinesis 数据流。如果发送成功,则返回 "Data sent to Kinesis stream" 的 200 状态码。如果发送失败,则返回 "Error sending data to Kinesis stream" 的 500 状态码。
这里设置了 Retry-After 头,表示等待 3 秒后重试发送数据。
这样,我们就完成了 AWS Kinesis 数据流 + API Gateway 集成,并解决了发送数据失败的重试问题。