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