我想将API网关中的url参数/ resource / {VaRiAbLe}修改为S3映射,以便它实际指向/ my-bucket / {variable}。也就是说,它接受混合大小写输入,并将其映射到小写名称。映射路径变量对于S3集成来说相对简单,但我似乎无法使小写映射工作。
通过documentation读取映射参数,看起来路径参数是简单的字符串值(而不是模板化值),因此将映射定义为method.request.path.variable.toLowerCase()赢得了不行。
有没有人有任何想法如何实现这种映射?
根据杰克的信息,我认为我应该尝试进行协调的呼叫,因为流量足够低,我确信我无法保持lambda热。
作为概念验证,我在我的资源中添加了两种方法(坐在/resource/{variable}
- GET
和POST
。GET
方法链到{{1它可以实际检索数据。
POST方法配置
这是一种vanilla S3代理方法,您可以将POST
的网址路径参数设置为{variable}
。
GET方法配置 这是一种HTTPS代理方法。您需要POST方法的URL,因此您需要部署API以获取URL。这里唯一需要的其他配置是一个包含以下内容的正文映射模板:
method.request.body.variable
这应该足以让这个工作。
这样做的缺点是我正在为我的API添加一个额外的方法(POST),这可能会混淆API的消费者。我认为应该可以在{
"variable" : "$input.params('variable').toLowerCase()",
"something" : "$input.params('something')"
}
资源上创建POST
,这从API设计的角度来看至少会更有意义。
答案 0 :(得分:1)
根据调用此API的频率,我要么使用Lambda代理,要么将两个API网关方法链接在一起。如果频繁调用API以使Lambda函数保持温暖(例如每分钟一次),那么请使用Lambda。如果没有,请使用协调的API调用。
精心编排的API调用很有意思,如果您有疑问,我很乐意为您提供帮助。
据我所知,获取对象数据的唯一S3 API是其API参考中记录的GET。