可以使用 AWS Lambda 函数、Amazon S3 存储桶和 AWS Step Functions 执行以下操作:
将 Excel 文件上传到 AWS S3 存储桶。
创建一个 AWS Lambda 函数,该函数将读取预定的 S3 存储桶中的 Excel 文件,并将其拆分为单个任务以进行并行处理。
使用 AWS Step Functions 构建有序工作流,以在 AWS Lambda 函数的并行任务处理期间跟踪进度,并将任务状态存储到 Amazon DynamoDB 数据库中。
启用 AWS Step Functions 超时策略,以在预定义的时间段内检查并处理 Excel 文件的进度状态。
利用 AWS Lambda 函数和 Amazon S3 存储桶删除进度状态管理的数据库条目和拆分的单个任务。
以下是使用 Node.js 编写的 AWS Lambda 函数代码示例,用于并行处理 Excel 文件中的数据:
const XLSX = require('xlsx');
const AWS = require('aws-sdk');
const s3 = new AWS.S3();
const db = new AWS.DynamoDB.DocumentClient();
exports.handler = async (event, context) => {
const { bucket, key } = event;
const { lineStart, lineEnd } = event; // Optional parameters for specifying rows to work in.
try {
const s3Response = await s3.getObject({ Bucket: bucket, Key: key }).promise();
const workbook = XLSX.read(s3Response.Body, { type: 'buffer' });
const worksheet = workbook.Sheets[workbook.SheetNames[0]];
const rows = XLSX.utils.sheet_to_json(worksheet, { range: `${lineStart || worksheet['!ref'].split(':')[0]}:${lineEnd || worksheet['!ref'].split(':')[1]}` });
const chunkSize = parseInt(process.env.CHUNK_SIZE);
const chunks = Math.ceil(rows.length / chunkSize);
for (let i = 0; i < chunks; i++) {
const start = i * chunkSize;