能否通过EventBridge Enrichment转换S3对象键扩展名替代Lambda?
问题:能否用EventBridge转换器实现S3对象键的扩展名替换?
当前实现流程
我目前用Lambda作为SQS和Step Functions之间的桥接组件:当S3触发createObject事件时,会向SQS发送消息触发该Lambda。Lambda仅负责转换对象键并调用Step Functions,代码如下:
const body = JSON.parse(event.Records[0].body); const key = decodeURIComponent(body.Records[0].s3.object.key.replace(/\+/g, ' ')); const Bucket = body.Records[0].s3.bucket.name; const fileName = key.split(".")[0]; const jsonInput = { Bucket, Key: `${fileName}.json` } return await invokeStepFunction(jsonInput, `exec-${new Date().toISOString()}-${fileName}`);
需求目标
我希望去掉这个Lambda,直接通过EventBridge的Enrichment步骤完成相同的数据转换:提取对象键名并将其扩展名修改为.json,同时处理对象键的URL解码(替换+为空格后解码)。
示例输入
{ "body": { "Records": [{ "s3": { "bucket": { "name": "test-1" }, "object": { "key": "test.mp4" } } }] } }
期望输出
{ "Bucket": "test-1", "Key": "test.json" }
现有转换器雏形
我尝试过的转换器结构如下,但还没实现字符串处理逻辑:
{ "Bucket": <$.body.Records[0].s3.bucket.name>, "Key": <$.body.Records[0].s3.object.key> }
核心疑问
能不能在EventBridge的Transformer步骤中使用replace、substring这类字符串函数,完成上述对象键的解码、扩展名替换操作?
内容的提问来源于stack exchange,提问作者Pedro Elias
相关产品推荐
相关产品推荐

