我想从股票API(IEX API(获取实时数据,并将其加载到DynamoDB。到目前为止,我看过的大多数教程(如15:10左右的教程(都展示了如何创建Lambda函数并与API网关集成。但是,他们仍在手动输入要加载到表中的数据。如何使用API网关和Lambda从IEX API获取数据并将其加载到DynamoDB,而不是自己编写数据?
根据一些教程,我将数据加载到表中的Lambda函数是:
const AWS = require('aws-sdk');
exports.handler = async (event, context) => {
const documentClient = new AWS.DynamoDB.DocumentClient();
let responseBody = "";
let statusCode = 0;
const { id, stocksymbol} = JSON.parse(event.body);
const params = {
TableName: "StockData",
Item: {
id: id,
stocksymbol: stocksymbol
}
};
try {
const data = await documentClient.put(params).promise();
responseBody = JSON.stringify(data);
statusCode = 201;
} catch(err) {
responseBody = `Unable to put item: ${err}`;
statusCode = 403;
}
const response = {
statusCode: statusCode,
headers: {
"Content-Type": "application/json"
},
body: responseBody
};
return response
};
我会从API获得更多的数据(开盘价、收盘价等(,但这就是我现在所拥有的。
假设您需要使用pull机制(您需要自己从API获取数据(,您可以使用AWS EventBridge规则定期触发您的lambda,时间间隔为您的偏好-https://docs.aws.amazon.com/eventbridge/latest/userguide/create-eventbridge-scheduled-rule.html.在lambda中,您下载API数据并将它们存储在DynamoDb中。
如果你可以使用推送机制(你可以将数据推送给你,例如。https://iexcloud.io/docs/api/?gclid=CjwKCAiA_9r_BRBZEiwAHZ_v17o9kJuPyF5Do_E3_mwC0uHEh2yXqqOdtVgqvc34yEk5RR8W8028HRoC0HUQAvD_BwE#webhooks),您可以将API网关资源URL设置为目标路径,同时使lambda函数作为API网关资源URL的处理程序,将推送的数据存储到DynamoDb。