首页 文章

具有子目录的S3的API网关代理

提问于
浏览
3

我创建了一个API网关方法GET,其集成类型为“AWS Service”,用于“S3” . 我定义了一个路径覆盖:,它是从method.request.path.item映射的

Integration Request

只要路径只包含桶本身(./bucket/ mybucketname ),它就可以工作,的值是 mybucketname .

但是当我指定例如../bucket/ mybucketname/foo/bar/test.txt 作为路径时,值应该是mybucketname / foo / bar / test.txt,但它是 empty . 我认为这是因为嵌套路径

当我选择catch-all路径变量时,我无法再选择集成类型“AWS Service” .

任何暗示我做错了什么或我该怎么做才能通过API网关从S3检索子文件夹中的文件/文件夹?

2 回答

  • 1

    关键是如何在Path Override中传递变量的值 . 我想你从请求路径设置了集成请求的url path参数,如下所示:

    object = method.request.path.object
    

    我认为问题是因为对象中有“/”,api路径(资源)也是如此 . 它导致api网关只能识别根路径中的对象 .

    我所做的是为请求查询字符串设置集成请求的url path参数,如下所示:

    object = method.request.querystring.object
    

    有用

    或者您可以尝试使用url encode对对象路径进行编码,将'/'替换为'%2F' . 我从未尝试过 .

  • 0

    @ johnny90,首先在创建资源时配置为lambda代理...创建.update集成类型为“AWS Service” . 然后,您可以将任何AWS服务配置到您的API网关 .

相关问题