【问题标题】:Setting up a NAT gateway with VPC using Serverless framework使用无服务器框架通过 VPC 设置 NAT 网关
【发布时间】:2018-01-26 20:42:12
【问题描述】:

我正在尝试使用 serverless framework 创建一个 Lambda 函数,该函数可以访问 Elasticache 集群,以及调用互联网。

我已经配置serverless.yml 来创建 Lambda 函数,创建 Elasticache 集群(memcached 引擎),最后创建一个 VPC 并将 Lambda 函数和 Elasticache 集群放置在其中(否则,他们无法交流)。

我了解 VPC 内的事物无法访问互联网,通过围绕该主题进行研究,我得出的结论是,处理此问题的最佳实践方法是为 VPC 创建一个 NAT 网关,该网关将允许它外部访问。

我可以在 AWS 控制台中看到如何执行此操作,但是我想坚持在 serverless.yml 中定义它以避免任何手动基础设施设置。

  • 是否可以在serverless.yml 内创建 NAT 网关?
  • 创建 NAT 网关是正确的做法吗? (有更好的选择吗?)

附加信息

在谈到我目前的观点时,我大量复制了其中一个无服务器示例(这是一个基于 Java 的示例,但概念和服务定义是相同的)。它创建一个 Lambda 函数、一个 Elasticache 集群,并将它们放入 VPC 中,以便它们可以通信。我相信它有同样的问题,即 Lambda 函数无法访问互联网。 https://github.com/mugglmenzel/serverless-examples-cached-rds-ws/blob/master/serverless.yml

【问题讨论】:

    标签: node.js amazon-web-services amazon-vpc amazon-elasticache serverless-framework


    【解决方案1】:

    您必须配置一个 NAT 实例或一个托管 NAT 网关,以便为您在 VPC 内的 Lambda 提供 Internet 访问。您可能必须使用 serverless.yml 文件的 resource 部分来创建 NAT 网关/NAT 实例资源。

    查看无服务器框架文档的resources 部分。这些资源将在 serverless deploy 时添加到 cloudformation 堆栈中

    您可以将任何类型的资源覆盖/附加到您的 CloudFormation 堆栈。您可以添加资源、输出甚至覆盖描述。您还可以在资源模板中将无服务器变量用于敏感数据或可重用配置。

    因此,您可以在 resource 部分中为 NAT 网关添加 Cloudformation 模板。

    例如,

    Resources:
      NatGateway:
      Type: AWS::EC2::NatGateway
      DependsOn: NatEIP
      Properties:
        AllocationId:
          Fn::GetAtt:
          - NatEIP
          - AllocationId
        SubnetId:
          Ref: PublicSubnet
      NatEIP:
        Type: AWS::EC2::EIP
        Properties:
          Domain: vpc
      NatRoute:
        Type: AWS::EC2::Route
        DependsOn: NatGateway
        Properties:
          RouteTableId:
            Ref: PrivateRouteTable
          DestinationCidrBlock: 0.0.0.0/0
          NatGatewayId:
            Ref: NatGateway
    

    这是一个link,指向 VPC 内 Lambda 的完整 CloudFormation sn-p。

    【讨论】:

      【解决方案2】:

      我创建了一个带有 vpc、eslaticache 和 NAT 网关的 lambda 示例。您可以查看 https://github.com/ittus/aws-lambda-vpc-nat-examples

      【讨论】:

        猜你喜欢
        • 2017-12-18
        • 1970-01-01
        • 2017-06-16
        • 1970-01-01
        • 2018-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多