我创建了一个API网关方法GET,其集成类型为“AWS Service”,用于“S3”。我定义了一个路径覆盖:{object},它是从method.request.path.item映射的
只要路径只包含桶本身(./bucket/mybucketname),它就可以工作,{item}的值是mybucketname。
但是当我指定例如../bucket/mybucketname/foo/bar/test.txt作为路径时,{item}值应该是mybucketname / foo / bar / test.txt但它是空的。我认为这是因为嵌套路径
当我选择catch-all路径变量{proxy +}时,我无法再选择集成类型“AWS Service”。
任何暗示我做错了什么或我应该做什么,以便通过API网关从S3检索子文件夹中的文件/文件夹?
关键是如何在Path Override中传递{object}变量的值。我想你从请求路径设置了集成请求的url path参数,如下所示:
object = method.request.path.object
我认为问题是因为对象中有“/”,api路径(资源)也是如此。它导致api网关只能识别根路径中的对象。
我所做的是为请求查询字符串设置集成请求的url path参数,如下所示:
object = method.request.querystring.object
有用
或者您可以尝试使用url encode对对象路径进行编码,将'/'替换为'%2F'。我从未尝试过。
@ johnny90,首先在创建资源{proxy +}时配置为lambda代理...创建.update集成类型为“AWS Service”。然后,您可以将任何AWS服务配置到您的API网关。