代码之家  ›  专栏  ›  技术社区  ›  Alex Harvey

使用SAM创建API网关代理资源

  •  0
  • Alex Harvey  · 技术社区  · 6 年前

    我有一个显然很简单的要求在Sam(Amazon的无服务器应用程序模型)中创建代理资源。如此简单的事实上,亚马逊的文档似乎将其作为 exercise 给读者!

    我想创建一个AWS API网关catch all端点,将所有内容代理到另一个HTTP服务。

    在AWS控制台中,我尝试构建的配置如下:

    enter image description here

    我看到这个很好 post 作者:克里斯汀·约翰森及其相关的堆栈溢出问题 here 如何在云形成中做同样的事情。我想我可以在Sam中使用该代码,但是,Sam有其隐式和显式API,所以如果“正确的方式”是指隐式资源,我希望避免创建显式资源。

    有人知道怎么做吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Alex Harvey    6 年前

    在玩了很多次之后,我相信我在一个例子中找到了答案。 here . 与Sam为您开箱即用设置的Hello World示例相关的差异是:

    diff --git a/sam-app/template.yaml b/sam-app/template.yaml
    index 02cd901..f349dcc 100644
    --- a/sam-app/template.yaml
    +++ b/sam-app/template.yaml
    @@ -17,11 +17,11 @@ Resources:
             Variables:
               PARAM1: VALUE
           Events:
    -        HelloWorld:
    +        ProxyApiGreedy:
               Type: Api
               Properties:
    -            Path: /hello
    -            Method: get
    +            Path: /{proxy+}
    +            Method: ANY
     Outputs:
       HelloWorldApi:
         Description: API Gateway endpoint URL for Prod stage for Hello World function
    

    换句话说,就像这样:

    Resources:
      MyFunction:
        Type: AWS::Serverless::Function
        Properties:
          ...
          Events:
            ProxyApiGreedy:
              Type: Api
              Properties:
                Path: /{proxy+}
                Method: ANY
    
    推荐文章