微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Cloudformation 将 lambda 函数附加到现有 API 网关

如何解决如何使用 Cloudformation 将 lambda 函数附加到现有 API 网关

我正在尝试将 lambda 函数自动附加到已经存在的 Api 网关(未部署在堆栈中)。看起来 AWS::ApiGateway::Method 是执行此操作的最佳方法,但我似乎可以弄清楚如何获取特定的 Api Gateway RestApiId 和 ResourceId。我怎样才能“获取”这些信息?是否有 cloudformation 方式,或者我是否需要使用某种类型的 lambda 函数

感谢您帮助我解决令人沮丧的问题!

解决方法

我该如何“获取”这些信息?

CFN 中没有“获取”这样的功能。您必须手动提供所有内容作为输入参数或硬编码所需的值。或者,您必须开发一个 custom resource 来为您获取该信息。自定义资源将使用您需要自己编写的 lambda 函数

,

执行此操作的最快和最简单的方法是使用 CFN 参数。我在下面举了一个小例子来说明如何做到这一点。该示例使用 SAM 无服务器 lambda 和 HTTP API(API 网关 v2),但 REST API(API 网关 v1)的解决方案非常相似。

Parameters:
  HttpApi:
    Type: String

Resources:
  SourceFunction:
    Type: AWS::Serverless::Function
    Properties:
      [...]
      Events:
        GetEndpoint:
          Type: HttpApi
          Properties:
            Path: /endpoint
            Method: GET
            ApiId: !Ref HttpApi

有关 cloudformation 参数的更多信息,请参见 here。 有关无服务器功能的更多信息(以防您不熟悉 AWS SAM),请参见 here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。