下面是一个使用AWS Lambda和Node.js将数据从S3发送到客户端的示例代码:
首先,你需要创建一个Lambda函数来处理S3事件触发器。在AWS Lambda控制台中,选择创建函数,然后选择“从头开始”模板。选择Node.js 14.x运行时,并为函数分配一个适当的角色。
在函数代码部分,你可以使用以下示例代码来处理S3事件触发器:
const AWS = require('aws-sdk');
const s3 = new AWS.S3();
exports.handler = async (event) => {
const bucket = event.Records[0].s3.bucket.name;
const key = event.Records[0].s3.object.key;
const params = {
Bucket: bucket,
Key: key
};
try {
const data = await s3.getObject(params).promise();
const fileContent = data.Body.toString();
return {
statusCode: 200,
body: JSON.stringify(fileContent)
};
} catch (error) {
return {
statusCode: 500,
body: JSON.stringify(error.message)
};
}
};
这个Lambda函数会在每次S3对象被创建时触发。它会获取S3桶的名称和对象的键值,并使用getObject
方法从S3中获取对象的内容。然后,它将对象内容作为JSON字符串返回给调用方。
接下来,你可以创建一个API Gateway端点来调用Lambda函数并将数据发送到客户端。在AWS控制台中,选择创建API,然后选择REST API。
然后,你可以将Lambda函数与API Gateway集成。在API Gateway控制台中,选择刚刚创建的API端点,然后选择“集成请求和响应”。
在集成请求部分,选择Lambda函数,并将Lambda函数的ARN粘贴到相应的字段中。
在集成响应部分,你可以定义响应模板,以将Lambda函数的响应数据发送到客户端。例如,你可以使用以下模板:
#set($inputRoot = $input.path('$'))
$inputRoot.body
这将使用Lambda函数的响应中的body
属性作为API Gateway的响应内容。
最后,你可以部署API,并使用API Gateway提供的URL来发送请求并接收来自S3的数据。
上一篇:AWS Lambda和Mongo DB导致以下错误:游标会话ID与操作上下文的会话ID不同。
下一篇:AWS Lambda和Papermill:无法导入模块'lambda_function':没有名为'rpds.rpds'的模块。